feat(site): rewrite the landing page around verified facts and accessible controls

- Replace claims that contradicted the app: the default hotkey is Right Alt
  (hold to talk), local features are free with no daily cap, there is no
  14-day trial, Team/SSO/SCIM/ZDR are not offered, and the repository is not
  public. Remove invented metrics, status badges, the competitor table, the
  ad-mediation changelog, the hash calculator and the duplicate demo.
- Seven sections: hero with one labelled example, features, how it works,
  privacy, pricing (Free / Pro 2,900 / Pro+ 8,900 KRW a month), download, FAQ.
  Footer links the privacy policy, terms and account deletion pages.
- All copy moves into i18n and every one of the 10 locales is translated.
  Pricing and cloud quotas come from site/src/pricing.ts.
- Accessibility: skip link, labelled sections, aria-expanded with Esc and
  focus return for the menu, language list and FAQ, live status for the
  example, reduced-motion support, 44px targets, AA contrast on the primary
  button. Korean keep-all line breaking is scoped to :lang(ko) because
  Tailwind's break-keep blocked wrapping in Japanese and Chinese.
- JS 111 -> 98 KB gzip, CSS 7.8 -> 5.2 KB gzip.
This commit is contained in:
Yun Chan 2026-09-26 15:04:43 +09:00
parent ad6bb70c20
commit e689683b72
44 changed files with 2198 additions and 3782 deletions

28
site/src/pricing.ts Normal file
View file

@ -0,0 +1,28 @@
// site/src/pricing.ts
// 요금제 표시 SSOT. 결제 금액의 정본은 서버 결제 카탈로그
// (server/supabase/functions/_shared/billing-catalog.ts, payple.ts)이며,
// 여기 값은 그 카탈로그와 같아야 한다. 사용량 한도는
// packages/core/src/constants.ts의 PREMIUM_MODEL_LIMITS와 같은 값이다.
export type PaidTier = 'pro' | 'pro_plus'
/** 월 요금(원). */
export const PLAN_PRICE_KRW = {
free: 0,
pro: 2900,
proPlus: 8900,
} as const
/** 클라우드 다듬기 사용량. -1은 무제한. Free는 주간, 유료는 일간. */
export const PLAN_CLOUD_QUOTA = {
free: { haiku: 250 },
pro: { haiku: 1500, sonnet: 300, opus: 50 },
proPlus: { haiku: -1, sonnet: 1500, opus: 300 },
} as const
/** 데스크톱 앱 결제 완료 URL과 같은 웹 결제 페이지. */
const BILLING_URL = 'https://d3ro.chanpaca.net/billing'
export function billingUrl(tier: PaidTier): string {
return `${BILLING_URL}?tier=${tier}`
}