import { getTranslations, setRequestLocale } from 'next-intl/server'; import { getPageAlternates } from '@/lib/seo'; import Link from 'next/link'; import type { Metadata } from 'next'; import { Zap, Search, Shield, ArrowRight, ArrowLeft, Sparkles, Terminal, Clock, Star, } from 'lucide-react'; import { Header } from '@/components/Header'; import { Footer } from '@/components/Footer'; import { EarlyAccessForm } from '@/components/EarlyAccessForm'; import { createDb, skills, sql } from '@skillhub/db'; import { formatCompactNumber } from '@/lib/format-number'; export const dynamic = 'force-dynamic'; export async function generateMetadata({ params, }: { params: Promise<{ locale: string }>; }): Promise { const { locale } = await params; const t = await getTranslations({ locale, namespace: 'claudePlugin' }); return { title: t('metadata.title'), description: t('metadata.description'), alternates: getPageAlternates(locale, '/claude-plugin'), openGraph: { title: t('metadata.title'), description: t('metadata.description'), }, }; } async function getStats() { try { const db = createDb(); const skillsResult = await db .select({ count: sql`count(*)::int` }) .from(skills); return skillsResult[0]?.count ?? 0; } catch { return 119000; } } export default async function ClaudePluginPage({ params, searchParams, }: { params: Promise<{ locale: string }>; searchParams: Promise<{ variant?: string }>; }) { const { locale } = await params; const { variant } = await searchParams; setRequestLocale(locale); const t = await getTranslations('claudePlugin'); const isRTL = locale === 'fa'; const ArrowIcon = isRTL ? ArrowLeft : ArrowRight; const totalSkills = await getStats(); // A/B Test: variant A (default) = "Get early access", variant B = "Help us prioritize" const isVariantB = variant === 'b'; const benefits = [ { icon: Search, title: t('benefits.discovery.title'), description: t('benefits.discovery.description'), }, { icon: Terminal, title: t('benefits.install.title'), description: t('benefits.install.description'), }, { icon: Zap, title: t('benefits.instant.title'), description: t('benefits.instant.description'), }, { icon: Shield, title: t('benefits.secure.title'), description: t('benefits.secure.description'), }, ]; const stats = [ { value: formatCompactNumber(totalSkills, locale), label: t('stats.skills'), icon: Sparkles, }, { value: '5+', label: t('stats.platforms'), icon: Terminal, }, { value: '4.9', label: t('stats.rating'), icon: Star, }, ]; return (
{/* Hero Section */}
{/* Background decoration */}
{/* Badge */}
{t('hero.badge')}
{/* Title */}

{t('hero.title')}

{/* Subtitle */}

{isVariantB ? t('hero.subtitleB') : t('hero.subtitleA', { count: formatCompactNumber(totalSkills, locale) })}

{/* Stats */}
{stats.map((stat, i) => (
{stat.value}
{stat.label}
))}
{/* Email Signup Form */}
{/* Benefits Section */}

{t('benefits.title')}

{benefits.map((benefit, i) => (

{benefit.title}

{benefit.description}

))}
{/* How It Works Preview */}

{t('howItWorks.title')}

{t('howItWorks.subtitle')}

{/* Code example */}
# {t('howItWorks.example.comment')}
User: {t('howItWorks.example.userMessage')}
# {t('howItWorks.example.claudeComment')}
Claude:{' '} search_skills( query= "pdf")
{t('howItWorks.example.result')}
{/* FAQ Section */}

{t('faq.title')}

{[1, 2, 3].map((i) => (

{t(`faq.q${i}.question`)}

{t(`faq.q${i}.answer`)}

))}
{/* CTA Section */}

{t('cta.title')}

{t('cta.description', { count: formatCompactNumber(totalSkills, locale) })}

{t('cta.browseSkills')} {t('cta.learnMore')}
); }