'use client'; import { useState } from 'react'; import Link from 'next/link'; import ContactModal from '@/app/components/ContactModal'; import { trackCTAClick } from '@/lib/gtag'; import { getAvailablePackages, getComingSoonPackages, type SaasCatalogItem, } from '@/lib/saas-catalog'; const WAITLIST_SERVICE = 'SaaS 출시 알림 신청'; function PackageCard({ pkg, dimmed }: { pkg: SaasCatalogItem; dimmed?: boolean }) { const inner = ( <>

{pkg.category}

{pkg.badge && ( {pkg.badge} )} {dimmed && !pkg.badge && ( Coming Soon )}

{pkg.name}

{pkg.tagline}

{pkg.description}

{pkg.priceLabel ? ( {pkg.priceLabel} ) : ( 가격 준비 중 )} {!dimmed && }
); const base = 'group rounded-2xl border p-6 flex flex-col transition'; if (dimmed) { return (
{inner}
); } return ( trackCTAClick(`packages_card_${pkg.slug}`)} className={`${base} border-white/15 bg-white/[0.02] hover:border-white/40 hover:bg-white/[0.05]`} style={{ textDecoration: 'none' }} > {inner} ); } export default function PackagesPage() { const [modalOpen, setModalOpen] = useState(false); const available = getAvailablePackages(); const comingSoon = getComingSoonPackages(); const isEmpty = available.length === 0; return (
setModalOpen(false)} service={WAITLIST_SERVICE} checklist={['관심 있는 업무·자동화 분야', '연락받을 이메일', '현재 겪는 반복 업무(선택)']} /> {/* Hero */}

SaaS Products

검증된 자동화를
SaaS로 만듭니다.

현직 엔지니어가 실제로 운영하며 검증한 자동화를 월 구독 제품으로. {isEmpty ? ' 첫 제품을 준비하고 있습니다.' : ''}

{isEmpty && ( )}
{/* Available 카탈로그 */} {available.length > 0 && (
{available.map((pkg) => ( ))}
)} {/* Coming Soon 예고 */} {comingSoon.length > 0 && (

Coming Soon

곧 만나볼 제품

{comingSoon.map((pkg) => ( ))}
)} {/* 출시 알림 CTA — 항상 노출(빈 상태 아닐 때도 대기자 수집) */}

새 제품이 나오면 가장 먼저 알려드릴까요?

관심 분야를 남겨주시면 출시 시 이메일로 안내드립니다. 원하는 자동화 제안도 환영합니다.

); }