'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.features.map((f) => (
-
·
{f}
))}
{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 — 항상 노출(빈 상태 아닐 때도 대기자 수집) */}
새 제품이 나오면 가장 먼저 알려드릴까요?
관심 분야를 남겨주시면 출시 시 이메일로 안내드립니다. 원하는 자동화 제안도 환영합니다.
);
}