o2o-infinith-demo/src/components/discovery/DiscoveryCta.tsx
Haewon Kam 3ba8fc839d feat: /discovery CTA 'URL 입력으로 시작하기' — URL 입력 진단 신청 모달 + discovery_leads 저장
- 히어로·하단 CTA 버튼명 변경(무료 AEO/GEO 진단 받기 → URL 입력으로 시작하기), mailto 직행 제거
- DiscoveryLeadModal: URL(필수)·연락처(필수)·상호(선택) → Supabase discovery_leads insert
- RLS anon insert 전용(조회 불가), 저장 실패 시 o2oteam@o2o.kr mailto 폴백 (정직성 규약)
- 마이그레이션 20260831_discovery_leads.sql (적용은 supabase login 후 db push 필요)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WgWoJZAvvzMxTpWeenZSia
2026-08-31 16:58:38 +09:00

48 lines
1.8 KiB
TypeScript

/**
* 최종 CTA (다크). 연락처는 o2oteam@o2o.kr 단일 채널 (허위 연락처 금지).
*/
import { motion } from 'motion/react';
import { buildDiscoveryMailto, DISCOVERY_CONTACT_EMAIL } from './discoveryContact';
interface DiscoveryCtaProps {
criteriaCount: number;
/** CTA 클릭 → URL 입력 신청 모달 열기 */
onStart: () => void;
}
export default function DiscoveryCta({ criteriaCount, onStart }: DiscoveryCtaProps) {
return (
<section className="bg-[#0A1128] px-6 py-24">
<motion.div
initial={{ opacity: 0, y: 20 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.6 }}
className="max-w-7xl mx-auto flex flex-col items-center text-center"
>
<h2 className="font-serif text-3xl md:text-[44px] font-bold leading-tight text-white mb-[18px] break-keep">
AI가 당신의 병원을 인용하게 하세요.
</h2>
<p className="text-lg leading-[1.7] text-slate-400 mb-10 break-keep">
진단은 무료입니다. {criteriaCount}개 항목 실측 리포트를 받아보고 결정하세요.
</p>
<div className="flex flex-col sm:flex-row items-center gap-3.5">
<button
type="button"
onClick={onStart}
className="inline-flex items-center h-[52px] px-[30px] bg-white rounded-full text-base font-bold text-primary-900 hover:bg-slate-100 transition-colors"
>
URL 입력으로 시작하기
</button>
<a
href={buildDiscoveryMailto('무료 진단 신청')}
className="text-[15px] text-slate-500 hover:text-slate-300 transition-colors"
>
{DISCOVERY_CONTACT_EMAIL}
</a>
</div>
</motion.div>
</section>
);
}