From 0c18683b45b3fa24cab8b0e599c007bce9bbb0e6 Mon Sep 17 00:00:00 2001 From: Kimjiwon Date: Thu, 30 Apr 2026 22:51:10 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=EB=9E=9C=EB=94=A9=20=EB=AA=A8?= =?UTF-8?q?=EB=B0=94=EC=9D=BC=20=ED=97=A4=EB=8D=94=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/landing/InquiryDialog.tsx | 18 +- src/components/layout/header/PublicHeader.tsx | 198 ++++++++++++++---- 2 files changed, 164 insertions(+), 52 deletions(-) diff --git a/src/components/landing/InquiryDialog.tsx b/src/components/landing/InquiryDialog.tsx index bd615a67..134ffa1b 100644 --- a/src/components/landing/InquiryDialog.tsx +++ b/src/components/landing/InquiryDialog.tsx @@ -18,25 +18,29 @@ import { toastSuccess, toastError } from '@/stores/useToastStore'; import Image from 'next/image'; interface InquiryDialogProps { - children: ReactNode; + children?: ReactNode; + open?: boolean; + onOpenChange?: (open: boolean) => void; } -function InquiryDialog({ children }: InquiryDialogProps) { - const [open, setOpen] = useState(false); +function InquiryDialog({ children, open, onOpenChange }: InquiryDialogProps) { + const [internalOpen, setInternalOpen] = useState(false); const [email, setEmail] = useState(''); const [message, setMessage] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); + const dialogOpen = open ?? internalOpen; + const setDialogOpen = onOpenChange ?? setInternalOpen; const handleClose = () => { if (isSubmitting) return; - setOpen(false); + setDialogOpen(false); setEmail(''); setMessage(''); }; const handleOpenChange = (next: boolean) => { if (!next) handleClose(); - else setOpen(true); + else setDialogOpen(true); }; const handleSubmit = async (e: React.FormEvent) => { @@ -56,8 +60,8 @@ function InquiryDialog({ children }: InquiryDialogProps) { }; return ( - - {children} + + {children && {children}} + + + + + + +
+ + + Weeth-logo + + + + + +
+ + +
+
+ + ); +} + export default function PublicHeader({ className, showAuthButtons = true }: PublicHeaderProps) { const [visible, setVisible] = useState(true); const lastScrollY = useRef(0); @@ -41,12 +131,12 @@ export default function PublicHeader({ className, showAuthButtons = true }: Publ animate={{ y: visible ? 0 : -80, opacity: visible ? 1 : 0 }} transition={{ duration: 0.25, ease: 'easeInOut' }} className={cn( - 'fixed top-0 left-0 z-1 flex w-full items-center justify-between bg-[#F3F5F7] px-450 py-300', + 'fixed top-0 left-0 z-1 w-full bg-[#F3F5F7]', !visible && 'pointer-events-none', className, )} > -
+
- +
- {showAuthButtons && ( -
- - 로그인 + +
+
+ + Weeth-logo { + window.scrollTo({ top: 0, behavior: 'smooth' }); + }} + /> - + {NAV_ITEMS.map(({ id, label, href }) => + id === 'contact' ? ( + + + + ) : ( + + {label} + + ), )} - > - 지금 무료로 시작하기 - +
- )} + {showAuthButtons && ( +
+ + 로그인 + + + 지금 무료로 시작하기 + +
+ )} +
); } From c088cad247dce44d66999fbae3df20982013c70a Mon Sep 17 00:00:00 2001 From: Kimjiwon Date: Thu, 30 Apr 2026 23:02:22 +0900 Subject: [PATCH 2/2] =?UTF-8?q?fix:=20=EC=82=AC=EC=A0=84=20=EC=98=88?= =?UTF-8?q?=EC=95=BD=20->=20=EA=B0=80=EC=9E=85=20=EB=AC=B8=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/landing/CTASection.tsx | 2 +- src/components/landing/InquiryDialog.tsx | 8 ++++---- src/components/landing/heroSection.shared.tsx | 2 +- src/components/layout/header/Header.tsx | 2 +- src/constants/landing/landing.ts | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/landing/CTASection.tsx b/src/components/landing/CTASection.tsx index 1250d087..6deeca5a 100644 --- a/src/components/landing/CTASection.tsx +++ b/src/components/landing/CTASection.tsx @@ -71,7 +71,7 @@ function CTASection({ className }: { className?: string }) {
diff --git a/src/components/landing/InquiryDialog.tsx b/src/components/landing/InquiryDialog.tsx index 134ffa1b..a6b2ac72 100644 --- a/src/components/landing/InquiryDialog.tsx +++ b/src/components/landing/InquiryDialog.tsx @@ -70,12 +70,12 @@ function InquiryDialog({ children, open, onOpenChange }: InquiryDialogProps) { > } - title={사전예약} + title={가입 문의} description={ - Weeth가 출시되면 메일로 가장 먼저 알려드릴게요! + Weeth 도입이 궁금하신가요?
- 추가 문의사항을 작성해 주시면 빠른 시일 내로 답변드리겠습니다. + 가입 문의를 남겨주시면 안내해드릴게요.
} showClose @@ -133,7 +133,7 @@ function InquiryDialog({ children, open, onOpenChange }: InquiryDialogProps) { className="typo-button1 flex-1 rounded-md bg-[#00C8AA] px-400 py-300 text-white hover:bg-[#00877a]" disabled={isSubmitting} > - 사전예약 완료 + 가입 문의
diff --git a/src/components/landing/heroSection.shared.tsx b/src/components/landing/heroSection.shared.tsx index e6e9beb8..75db88f3 100644 --- a/src/components/landing/heroSection.shared.tsx +++ b/src/components/landing/heroSection.shared.tsx @@ -21,7 +21,7 @@ function HeroSectionCTA() {
diff --git a/src/components/layout/header/Header.tsx b/src/components/layout/header/Header.tsx index b91b89f2..3fa1cdbe 100644 --- a/src/components/layout/header/Header.tsx +++ b/src/components/layout/header/Header.tsx @@ -118,7 +118,7 @@ export default function Header({ isMain = true }: HeaderProps) { href="#" className="typo-button1 text-text-alternative hover:text-text-normal transition-colors" > - 사전예약 + 가입문의 )} diff --git a/src/constants/landing/landing.ts b/src/constants/landing/landing.ts index 3fb4b62d..4ee301c4 100644 --- a/src/constants/landing/landing.ts +++ b/src/constants/landing/landing.ts @@ -111,5 +111,5 @@ export const FOOTER_MENUS = [ export const NAV_ITEMS = [ // { id: 'service', label: '서비스 소개', href: '#service' }, - { id: 'contact', label: '사전예약', href: '#contact' }, + { id: 'contact', label: '가입문의', href: '#contact' }, ];