From 6ffdb9a389e73efa0ef6dd065bf417cada3cd5aa Mon Sep 17 00:00:00 2001 From: Mina Choi Date: Tue, 21 Jul 2026 13:49:18 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20landing:=20=EB=B9=84=EA=B5=90=20?= =?UTF-8?q?=ED=86=A0=EA=B8=80=20=EC=9E=90=EB=8F=99=EC=9E=AC=EA=B0=9C=C2=B7?= =?UTF-8?q?=ED=97=A4=EB=8D=94=20nav=204=EA=B0=9C=20=EC=A0=95=EB=A6=AC?= =?UTF-8?q?=C2=B7=EB=AA=A8=EB=B0=94=EC=9D=BC=20=EA=B0=80=EC=9A=B4=EB=8D=B0?= =?UTF-8?q?=20=EC=A0=95=EB=A0=AC=C2=B7Phone=20Demo=20=ED=9E=88=EC=96=B4?= =?UTF-8?q?=EB=A1=9C=20=EB=94=94=ED=8F=B4=ED=8A=B8,=20FAQ=20=EC=97=B0?= =?UTF-8?q?=EB=8F=99=EB=8B=B5=EB=B3=80=C2=B7=EC=A4=91=EA=B0=9C=EB=8C=80?= =?UTF-8?q?=ED=96=89=C2=B7=EC=97=AD=EA=B2=BD=EB=A7=A4=C2=B7=EC=99=80?= =?UTF-8?q?=EC=9D=BC=EB=93=9C=EC=B9=B4=EB=93=9C=20=EB=93=B1=20=EB=85=BC?= =?UTF-8?q?=EB=9E=80=20=EB=AC=B8=EA=B5=AC=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/components/sections/comparison.tsx | 26 ++++++++++++------- landing/app/components/sections/faq.tsx | 5 ++-- landing/app/components/sections/footer.tsx | 5 ++-- landing/app/components/sections/header.tsx | 5 ++-- .../components/sections/how-it-works-demo.tsx | 14 +++++----- .../sections/negotiation-console.tsx | 6 ++--- .../app/components/sections/reinforcement.tsx | 1 + landing/app/routes/home.tsx | 4 +-- 8 files changed, 37 insertions(+), 29 deletions(-) diff --git a/landing/app/components/sections/comparison.tsx b/landing/app/components/sections/comparison.tsx index c239f20..af6ea76 100644 --- a/landing/app/components/sections/comparison.tsx +++ b/landing/app/components/sections/comparison.tsx @@ -7,22 +7,33 @@ import { SectionHeading } from "@/components/ui/section-heading" import { Typography } from "@/components/ui/typography" import { useFadeUp } from "@/lib/motion" -/** 기존 방식 ↔ 도입 후 토글 비교 — 화면 진입 시 자동으로 오가고, 사용자가 누르면 수동 고정. */ +/** 기존 방식 ↔ 도입 후 토글 비교 — 화면 진입 시 자동으로 오가고, 누르면 잠시 수동(8초 후 자동 재개). */ export function Comparison() { const fadeUp = useFadeUp() const toggleFadeUp = useFadeUp(0.1) const [mode, setMode] = useState("before") - // 사용자가 직접 토글을 누르면 자동 전환 중단 + // 사용자가 토글을 누르면 잠시 자동 전환 중단, 8초 무조작 시 재개 const [locked, setLocked] = useState(false) const [inView, setInView] = useState(false) const sectionRef = useRef(null) + const lockTimerRef = useRef | null>(null) + + const selectMode = (key: Mode) => { + setMode(key) + setLocked(true) + if (lockTimerRef.current) clearTimeout(lockTimerRef.current) + lockTimerRef.current = setTimeout(() => setLocked(false), 8000) + } useEffect(() => { const el = sectionRef.current if (!el) return const observer = new IntersectionObserver(([entry]) => setInView(entry.isIntersecting), { threshold: 0.35 }) observer.observe(el) - return () => observer.disconnect() + return () => { + observer.disconnect() + if (lockTimerRef.current) clearTimeout(lockTimerRef.current) + } }, []) useEffect(() => { @@ -32,13 +43,13 @@ export function Comparison() { }, [inView, locked]) return ( -
+
@@ -49,10 +60,7 @@ export function Comparison() { {MODES.map((m) => (