@openrails/billing-ui 0.0.0-stage → 0.233.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/CHANGELOG.md +351 -0
  2. package/LICENSE +21 -0
  3. package/README.md +260 -2
  4. package/dist/account/account-billing.d.ts +19 -0
  5. package/dist/account/cancel-dialog.d.ts +18 -0
  6. package/dist/account/change-card-dialog.d.ts +14 -0
  7. package/dist/account/format.d.ts +25 -0
  8. package/dist/account/notice.d.ts +3 -0
  9. package/dist/account/payment-history.d.ts +8 -0
  10. package/dist/account/payment-methods-panel.d.ts +17 -0
  11. package/dist/account/section.d.ts +27 -0
  12. package/dist/account/status-badge.d.ts +8 -0
  13. package/dist/account/subscriptions-panel.d.ts +19 -0
  14. package/dist/appearance.d.ts +23 -0
  15. package/dist/authenticate.d.ts +8 -0
  16. package/dist/checkout-frame.d.ts +17 -0
  17. package/dist/checkout-page.d.ts +21 -0
  18. package/dist/checkout.d.ts +24 -0
  19. package/dist/client/client.d.ts +181 -0
  20. package/dist/client/errors.d.ts +26 -0
  21. package/dist/client/generated/currencies.d.ts +1 -0
  22. package/dist/client/generated/error-codes.d.ts +7 -0
  23. package/dist/client/generated/routes.d.ts +775 -0
  24. package/dist/client/generated/wire.d.ts +682 -0
  25. package/dist/client/index.d.ts +4 -0
  26. package/dist/client/types.d.ts +800 -0
  27. package/dist/client-DXUPzA8C.js +889 -0
  28. package/dist/client-DXUPzA8C.js.map +1 -0
  29. package/dist/client.js +2 -0
  30. package/dist/components/billing-fields.d.ts +39 -0
  31. package/dist/components/card-brands.d.ts +6 -0
  32. package/dist/components/card-fields.d.ts +29 -0
  33. package/dist/components/ccbill-fields.d.ts +8 -0
  34. package/dist/components/methods.d.ts +13 -0
  35. package/dist/components/pay-button.d.ts +6 -0
  36. package/dist/components/qr.d.ts +6 -0
  37. package/dist/components/saved-methods.d.ts +9 -0
  38. package/dist/components/states.d.ts +10 -0
  39. package/dist/components/stripe-card.d.ts +17 -0
  40. package/dist/components/summary.d.ts +12 -0
  41. package/dist/components/ui/alert-dialog.d.ts +18 -0
  42. package/dist/components/ui/badge.d.ts +7 -0
  43. package/dist/components/ui/button.d.ts +8 -0
  44. package/dist/components/ui/card.d.ts +11 -0
  45. package/dist/components/ui/dialog.d.ts +17 -0
  46. package/dist/components/ui/input.d.ts +3 -0
  47. package/dist/components/ui/label.d.ts +3 -0
  48. package/dist/components/ui/radio-group.d.ts +5 -0
  49. package/dist/components/ui/separator.d.ts +3 -0
  50. package/dist/components/ui/skeleton.d.ts +2 -0
  51. package/dist/components/ui/spinner.d.ts +3 -0
  52. package/dist/components/ui/textarea.d.ts +3 -0
  53. package/dist/config-BQELtBh4.js +341 -0
  54. package/dist/config-BQELtBh4.js.map +1 -0
  55. package/dist/dist-CslWupfi.js +3311 -0
  56. package/dist/dist-CslWupfi.js.map +1 -0
  57. package/dist/fixtures.d.ts +9 -0
  58. package/dist/frame.d.ts +47 -0
  59. package/dist/i18n/context.d.ts +4 -0
  60. package/dist/i18n/index.d.ts +2 -0
  61. package/dist/i18n/messages.d.ts +58 -0
  62. package/dist/index.d.ts +29 -0
  63. package/dist/index.js +4090 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/lib/billing.d.ts +39 -0
  66. package/dist/lib/card-brands.d.ts +2 -0
  67. package/dist/lib/card-entry.d.ts +46 -0
  68. package/dist/lib/ccbill.d.ts +8 -0
  69. package/dist/lib/collect.d.ts +51 -0
  70. package/dist/lib/money.d.ts +10 -0
  71. package/dist/lib/period.d.ts +13 -0
  72. package/dist/lib/rail-meta.d.ts +15 -0
  73. package/dist/lib/redirect.d.ts +2 -0
  74. package/dist/lib/stripe-appearance.d.ts +2 -0
  75. package/dist/lib/stripe.d.ts +2 -0
  76. package/dist/locales/de.d.ts +2 -0
  77. package/dist/locales/de.js +207 -0
  78. package/dist/locales/de.js.map +1 -0
  79. package/dist/locales/en.d.ts +204 -0
  80. package/dist/locales/en.js +207 -0
  81. package/dist/locales/en.js.map +1 -0
  82. package/dist/locales/es.d.ts +2 -0
  83. package/dist/locales/es.js +207 -0
  84. package/dist/locales/es.js.map +1 -0
  85. package/dist/locales/ja.d.ts +2 -0
  86. package/dist/locales/ja.js +198 -0
  87. package/dist/locales/ja.js.map +1 -0
  88. package/dist/locales/ko.d.ts +2 -0
  89. package/dist/locales/ko.js +198 -0
  90. package/dist/locales/ko.js.map +1 -0
  91. package/dist/locales/zh.d.ts +2 -0
  92. package/dist/locales/zh.js +198 -0
  93. package/dist/locales/zh.js.map +1 -0
  94. package/dist/modal.d.ts +12 -0
  95. package/dist/provider.d.ts +18 -0
  96. package/dist/psp.d.ts +35 -0
  97. package/dist/react/config.d.ts +34 -0
  98. package/dist/react/context.d.ts +35 -0
  99. package/dist/react/hooks.d.ts +82 -0
  100. package/dist/react/index.d.ts +4 -0
  101. package/dist/react/provider.d.ts +10 -0
  102. package/dist/react/remote.d.ts +10 -0
  103. package/dist/react.js +33 -0
  104. package/dist/react.js.map +1 -0
  105. package/dist/save-payment-method.d.ts +26 -0
  106. package/dist/scope-context.d.ts +17 -0
  107. package/dist/scope.d.ts +6 -0
  108. package/dist/source.d.ts +5 -0
  109. package/dist/styles.css +3 -0
  110. package/dist/tokenized-card-form.d.ts +24 -0
  111. package/dist/types.d.ts +250 -0
  112. package/docs/payment-form-contract.md +136 -0
  113. package/package.json +112 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ja.js","names":[],"sources":["../../src/locales/ja.ts"],"sourcesContent":["import type { BillingUiMessageBundle } from \"../i18n/messages\"\n\nexport const ja: BillingUiMessageBundle = {\n common: {\n cancel: \"キャンセル\",\n close: \"閉じる\",\n retry: \"再試行\",\n loading: \"読み込み中...\",\n previous: \"前へ\",\n next: \"次へ\",\n notAvailable: \"—\",\n },\n status: {\n active: \"有効\",\n pending: \"保留中\",\n past_due: \"支払い遅延\",\n canceled: \"解約済み\",\n cancel_scheduled: \"終了予定\",\n unknown: \"不明\",\n awaiting_method: \"カード更新が必要\",\n unverified: \"確認中\",\n succeeded: \"支払い済み\",\n failed: \"失敗\",\n refunded: \"返金済み\",\n partially_refunded: \"一部返金\",\n expired: \"期限切れ\",\n expiring_soon: \"まもなく期限切れ\",\n needs_attention: \"要確認\",\n collection: \"請求書\",\n },\n interval: {\n every: {\n hour: { \"1\": \"毎時\", other: \"{count}時間ごと\" },\n day: { \"1\": \"毎日\", other: \"{count}日ごと\" },\n week: { \"1\": \"毎週\", other: \"{count}週間ごと\" },\n },\n per: {\n hour: { \"1\": \"/時間\", other: \"/{count}時間\" },\n day: { \"1\": \"/日\", other: \"/{count}日\" },\n week: { \"1\": \"/週\", other: \"/{count}週間\" },\n },\n access: {\n hour: { other: \"{count}時間のアクセス\" },\n day: { other: \"{count}日間のアクセス\" },\n week: { other: \"{count}週間のアクセス\" },\n },\n once: \"買い切り\",\n permanent: \"有効期限のないアクセス\",\n },\n subscriptions: {\n title: \"サブスクリプション\",\n description: \"ご利用中のプランと更新日です。\",\n empty: \"サブスクリプションはまだありません\",\n emptyDescription: \"登録したプランがここに表示されます。\",\n browsePlans: \"プランを見る\",\n fallbackName: \"サブスクリプション\",\n renews: \"{date}に更新\",\n endsOn: \"{date}まで利用可能\",\n noMorePayments: \"今後の支払いはありません\",\n endedOn: \"{date}に終了\",\n pastDue:\n \"お支払いに失敗しました。引き続き利用するにはカードを更新してください。\",\n cancel: \"解約\",\n cancelLabel: \"{name}を解約\",\n resume: \"再開\",\n resumed: \"サブスクリプションは継続されます。\",\n manageAtProvider: \"管理\",\n updating: \"更新中...\",\n paidWith: \"{brand} •••• {last4}\",\n wallet: \"Solana ウォレット\",\n changeCard: \"カードを変更\",\n changeCardLabel: \"{name} のカードを変更\",\n },\n changeCard: {\n title: \"{name} の支払い方法\",\n description: \"今後の更新は選択したカードに請求されます。\",\n none: \"切り替えるには、支払い方法から別のカードを追加してください。\",\n confirm: \"このカードを使う\",\n current: \"現在\",\n done: \"支払いカードを更新しました。\",\n },\n cancel: {\n title: \"{name}を解約しますか?\",\n description: \"今後の支払いは停止します。購入済みのアクセスは維持されます。\",\n solanaDescription: \"ウォレットでオンチェーンの解約に署名します。購入済みのアクセスは維持されます。\",\n reasonLabel: \"解約の理由を教えてください\",\n reasonPlaceholder: \"ご意見はサービス改善に役立てます。\",\n reasonHint: \"{count}/{max}\",\n reasonTooShort: \"{min}文字以上入力してください。\",\n keep: \"継続する\",\n confirm: \"解約する\",\n confirmWallet: \"ウォレットで署名\",\n working: \"解約中...\",\n preparing: \"トランザクションを準備中...\",\n signing: \"ウォレットで承認してください...\",\n confirming: \"解約を記録中...\",\n done: \"解約を受け付けました。\",\n },\n paymentMethods: {\n title: \"支払い方法\",\n description: \"サブスクリプションに使う保存済みカードです。\",\n empty: \"保存済みのカードはありません\",\n emptyDescription: \"保存したカードがここに表示されます。\",\n add: \"カードを追加\",\n addTitle: \"カードを追加\",\n addDescription:\n \"カード情報は決済代行会社に直接送信され、このサイトには届きません。\",\n save: \"カードを保存\",\n added: \"カードを保存しました。\",\n provider: \"決済プロバイダー\",\n saveNotice:\n \"入力したカードは今後のお支払いのためにアカウントに保存されます。\",\n unavailable: \"このプロバイダーでは安全なカード入力を利用できません。\",\n addUnavailable: \"現在、カードを追加できません。\",\n verificationPending:\n \"カードの確認が保留中です。もう一度試す前に保存済みのカードを確認してください。\",\n cardLabel: \"{brand} •••• {last4}\",\n fallbackBrand: \"カード\",\n expires: \"有効期限 {date}\",\n usedBy: \"{names}で使用中\",\n collectsFor: \"{currencies}の請求書を支払う\",\n useForInvoices: \"請求書に使う\",\n usedForInvoices: \"請求書のカードを更新しました。\",\n remove: \"削除\",\n removeLabel: \"{label}を削除\",\n removeTitle: \"{label}を削除しますか?\",\n removeDescription:\n \"有効なサブスクリプションで使用中のカードは、別のカードに切り替えてから削除してください。\",\n removeConfirm: \"カードを削除\",\n removed: \"カードを削除しました。\",\n removePending: \"削除を処理しています。\",\n inUse:\n \"このカードは有効なサブスクリプションの支払いに使われています。先に別のカードへ切り替えてください。\",\n },\n checkout: {\n renews: \"更新:{period}\",\n },\n history: {\n title: \"支払い履歴\",\n description: \"アカウントの請求と返金です。\",\n empty: \"支払いはまだありません\",\n emptyDescription: \"完了した支払いがここに表示されます。\",\n date: \"日付\",\n item: \"内容\",\n subscription: \"サブスクリプション\",\n purchase: \"購入\",\n method: \"支払い方法\",\n status: \"状態\",\n amount: \"金額\",\n refund: \"返金\",\n refundedAmount: \"{amount} 返金済み\",\n page: \"{page}ページ\",\n rail: {\n card: \"カード\",\n solana: \"Solana\",\n ccbill: \"カード\",\n nmi: \"カード\",\n stripe: \"カード\",\n },\n },\n errors: {\n generic: \"問題が発生しました。もう一度お試しください。\",\n network: \"サーバーに接続できません。接続を確認してもう一度お試しください。\",\n network_error:\n \"サーバーに接続できません。接続を確認してもう一度お試しください。\",\n invalid_response: \"サーバーから予期しない応答がありました。\",\n authentication_required:\n \"セッションの有効期限が切れました。再度サインインしてください。\",\n resource_access_denied: \"アクセス権がありません。\",\n resource_not_found: \"この項目は存在しません。\",\n resource_conflict:\n \"内容が更新されています。再読み込みしてもう一度お試しください。\",\n rate_limit_exceeded:\n \"リクエストが多すぎます。しばらく待ってからお試しください。\",\n service_unavailable:\n \"請求機能は一時的に利用できません。しばらくしてからお試しください。\",\n internal_error: \"システムで問題が発生しました。もう一度お試しください。\",\n card_declined: \"カードが拒否されました。\",\n payment_provider_rejected: \"決済代行会社がリクエストを拒否しました。\",\n provider_outcome_unknown:\n \"プロバイダーで結果を確認できませんでした。しばらくしてから確認してください。\",\n payment_in_progress: \"すでに支払いを処理中です。\",\n payment_method_delete_unsupported:\n \"このカードはここでは削除できません。サポートにお問い合わせください。\",\n payment_method_delete_failed:\n \"プロバイダーがこのカードを削除できませんでした。後でもう一度お試しください。\",\n customer_session_required: \"この操作には再度サインインが必要です。\",\n invoker_scoped_principal: \"このアカウントでは請求を管理できません。\",\n csrf_origin_denied:\n \"リクエストがブロックされました。ページを再読み込みしてください。\",\n wallet_rejected: \"ウォレットのリクエストが拒否されました。\",\n wallet_no_signature: \"ウォレットがトランザクションに署名しませんでした。\",\n },\n}\n"],"mappings":";AAEA,IAAa,IAA6B;CACxC,QAAQ;EACN,QAAQ;EACR,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,MAAM;EACN,cAAc;CAChB;CACA,QAAQ;EACN,QAAQ;EACR,SAAS;EACT,UAAU;EACV,UAAU;EACV,kBAAkB;EAClB,SAAS;EACT,iBAAiB;EACjB,YAAY;EACZ,WAAW;EACX,QAAQ;EACR,UAAU;EACV,oBAAoB;EACpB,SAAS;EACT,eAAe;EACf,iBAAiB;EACjB,YAAY;CACd;CACA,UAAU;EACR,OAAO;GACL,MAAM;IAAE,GAAK;IAAM,OAAO;GAAc;GACxC,KAAK;IAAE,GAAK;IAAM,OAAO;GAAa;GACtC,MAAM;IAAE,GAAK;IAAM,OAAO;GAAc;EAC1C;EACA,KAAK;GACH,MAAM;IAAE,GAAK;IAAO,OAAO;GAAa;GACxC,KAAK;IAAE,GAAK;IAAM,OAAO;GAAY;GACrC,MAAM;IAAE,GAAK;IAAM,OAAO;GAAa;EACzC;EACA,QAAQ;GACN,MAAM,EAAE,OAAO,iBAAiB;GAChC,KAAK,EAAE,OAAO,iBAAiB;GAC/B,MAAM,EAAE,OAAO,iBAAiB;EAClC;EACA,MAAM;EACN,WAAW;CACb;CACA,eAAe;EACb,OAAO;EACP,aAAa;EACb,OAAO;EACP,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB,SAAS;EACT,SACE;EACF,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,SAAS;EACT,kBAAkB;EAClB,UAAU;EACV,UAAU;EACV,QAAQ;EACR,YAAY;EACZ,iBAAiB;CACnB;CACA,YAAY;EACV,OAAO;EACP,aAAa;EACb,MAAM;EACN,SAAS;EACT,SAAS;EACT,MAAM;CACR;CACA,QAAQ;EACN,OAAO;EACP,aAAa;EACb,mBAAmB;EACnB,aAAa;EACb,mBAAmB;EACnB,YAAY;EACZ,gBAAgB;EAChB,MAAM;EACN,SAAS;EACT,eAAe;EACf,SAAS;EACT,WAAW;EACX,SAAS;EACT,YAAY;EACZ,MAAM;CACR;CACA,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,OAAO;EACP,kBAAkB;EAClB,KAAK;EACL,UAAU;EACV,gBACE;EACF,MAAM;EACN,OAAO;EACP,UAAU;EACV,YACE;EACF,aAAa;EACb,gBAAgB;EAChB,qBACE;EACF,WAAW;EACX,eAAe;EACf,SAAS;EACT,QAAQ;EACR,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,QAAQ;EACR,aAAa;EACb,aAAa;EACb,mBACE;EACF,eAAe;EACf,SAAS;EACT,eAAe;EACf,OACE;CACJ;CACA,UAAU,EACR,QAAQ,cACV;CACA,SAAS;EACP,OAAO;EACP,aAAa;EACb,OAAO;EACP,kBAAkB;EAClB,MAAM;EACN,MAAM;EACN,cAAc;EACd,UAAU;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB,MAAM;EACN,MAAM;GACJ,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,QAAQ;EACV;CACF;CACA,QAAQ;EACN,SAAS;EACT,SAAS;EACT,eACE;EACF,kBAAkB;EAClB,yBACE;EACF,wBAAwB;EACxB,oBAAoB;EACpB,mBACE;EACF,qBACE;EACF,qBACE;EACF,gBAAgB;EAChB,eAAe;EACf,2BAA2B;EAC3B,0BACE;EACF,qBAAqB;EACrB,mCACE;EACF,8BACE;EACF,2BAA2B;EAC3B,0BAA0B;EAC1B,oBACE;EACF,iBAAiB;EACjB,qBAAqB;CACvB;AACF"}
@@ -0,0 +1,2 @@
1
+ import { BillingUiMessageBundle } from '../i18n/messages';
2
+ export declare const ko: BillingUiMessageBundle;
@@ -0,0 +1,198 @@
1
+ //#region src/locales/ko.ts
2
+ var e = {
3
+ common: {
4
+ cancel: "취소",
5
+ close: "닫기",
6
+ retry: "다시 시도",
7
+ loading: "불러오는 중...",
8
+ previous: "이전",
9
+ next: "다음",
10
+ notAvailable: "—"
11
+ },
12
+ status: {
13
+ active: "활성",
14
+ pending: "대기 중",
15
+ past_due: "연체",
16
+ canceled: "해지됨",
17
+ cancel_scheduled: "종료 예정",
18
+ unknown: "알 수 없음",
19
+ awaiting_method: "카드 업데이트 필요",
20
+ unverified: "확인 중",
21
+ succeeded: "결제 완료",
22
+ failed: "실패",
23
+ refunded: "환불됨",
24
+ partially_refunded: "부분 환불",
25
+ expired: "만료됨",
26
+ expiring_soon: "곧 만료",
27
+ needs_attention: "확인 필요",
28
+ collection: "청구서"
29
+ },
30
+ interval: {
31
+ every: {
32
+ hour: {
33
+ 1: "매시간",
34
+ other: "{count}시간마다"
35
+ },
36
+ day: {
37
+ 1: "매일",
38
+ other: "{count}일마다"
39
+ },
40
+ week: {
41
+ 1: "매주",
42
+ other: "{count}주마다"
43
+ }
44
+ },
45
+ per: {
46
+ hour: {
47
+ 1: "/시간",
48
+ other: "/{count}시간"
49
+ },
50
+ day: {
51
+ 1: "/일",
52
+ other: "/{count}일"
53
+ },
54
+ week: {
55
+ 1: "/주",
56
+ other: "/{count}주"
57
+ }
58
+ },
59
+ access: {
60
+ hour: { other: "{count}시간 이용" },
61
+ day: { other: "{count}일 이용" },
62
+ week: { other: "{count}주 이용" }
63
+ },
64
+ once: "일회성",
65
+ permanent: "예정된 만료일이 없는 이용권"
66
+ },
67
+ subscriptions: {
68
+ title: "구독",
69
+ description: "이용 중인 요금제와 갱신일입니다.",
70
+ empty: "아직 구독이 없습니다",
71
+ emptyDescription: "구독한 요금제가 여기에 표시됩니다.",
72
+ browsePlans: "요금제 보기",
73
+ fallbackName: "구독",
74
+ renews: "{date}에 갱신",
75
+ endsOn: "{date}까지 이용 가능",
76
+ noMorePayments: "추가 결제 없음",
77
+ endedOn: "{date}에 종료됨",
78
+ pastDue: "결제에 실패했습니다. 계속 이용하려면 카드를 업데이트하세요.",
79
+ cancel: "해지",
80
+ cancelLabel: "{name} 해지",
81
+ resume: "재개",
82
+ resumed: "구독이 계속됩니다.",
83
+ manageAtProvider: "관리",
84
+ updating: "업데이트 중...",
85
+ paidWith: "{brand} •••• {last4}",
86
+ wallet: "Solana 지갑",
87
+ changeCard: "카드 변경",
88
+ changeCardLabel: "{name} 카드 변경"
89
+ },
90
+ changeCard: {
91
+ title: "{name} 결제 카드",
92
+ description: "이후 갱신은 선택한 카드로 청구됩니다.",
93
+ none: "변경하려면 결제 수단에서 다른 카드를 추가하세요.",
94
+ confirm: "이 카드 사용",
95
+ current: "현재",
96
+ done: "결제 카드가 변경되었습니다."
97
+ },
98
+ cancel: {
99
+ title: "{name}을(를) 해지할까요?",
100
+ description: "향후 결제가 중단됩니다. 이미 구매한 이용권은 유지됩니다.",
101
+ solanaDescription: "지갑에서 온체인 해지에 서명합니다. 이미 구매한 이용권은 유지됩니다.",
102
+ reasonLabel: "해지하는 이유를 알려 주세요",
103
+ reasonPlaceholder: "의견은 서비스 개선에 도움이 됩니다.",
104
+ reasonHint: "{count}/{max}",
105
+ reasonTooShort: "{min}자 이상 입력하세요.",
106
+ keep: "구독 유지",
107
+ confirm: "구독 해지",
108
+ confirmWallet: "지갑으로 서명",
109
+ working: "해지 중...",
110
+ preparing: "트랜잭션 준비 중...",
111
+ signing: "지갑에서 승인하세요...",
112
+ confirming: "해지를 기록하는 중...",
113
+ done: "해지가 요청되었습니다."
114
+ },
115
+ paymentMethods: {
116
+ title: "결제 수단",
117
+ description: "구독에 사용하는 저장된 카드입니다.",
118
+ empty: "저장된 카드가 없습니다",
119
+ emptyDescription: "저장한 카드가 여기에 표시됩니다.",
120
+ add: "카드 추가",
121
+ addTitle: "카드 추가",
122
+ addDescription: "카드 정보는 결제 대행사로 바로 전송되며 이 사이트에는 전달되지 않습니다.",
123
+ save: "카드 저장",
124
+ added: "카드를 저장했습니다.",
125
+ provider: "결제 제공업체",
126
+ saveNotice: "입력한 카드는 향후 결제를 위해 계정에 저장됩니다.",
127
+ unavailable: "이 제공업체에서는 안전한 카드 입력을 사용할 수 없습니다.",
128
+ addUnavailable: "지금은 카드를 추가할 수 없습니다.",
129
+ verificationPending: "카드 확인이 대기 중입니다. 다시 시도하기 전에 저장된 카드를 확인하세요.",
130
+ cardLabel: "{brand} •••• {last4}",
131
+ fallbackBrand: "카드",
132
+ expires: "유효기간 {date}",
133
+ usedBy: "{names}에서 사용 중",
134
+ collectsFor: "{currencies} 청구서 결제",
135
+ useForInvoices: "청구서에 사용",
136
+ usedForInvoices: "청구서 카드를 업데이트했습니다.",
137
+ remove: "삭제",
138
+ removeLabel: "{label} 삭제",
139
+ removeTitle: "{label}을(를) 삭제할까요?",
140
+ removeDescription: "활성 구독에 사용 중인 카드는 다른 카드로 바꾼 후 삭제할 수 있습니다.",
141
+ removeConfirm: "카드 삭제",
142
+ removed: "카드를 삭제했습니다.",
143
+ removePending: "삭제를 처리하고 있습니다.",
144
+ inUse: "이 카드는 활성 구독의 결제에 사용 중입니다. 먼저 해당 구독을 다른 카드로 변경하세요."
145
+ },
146
+ checkout: { renews: "{period} 갱신" },
147
+ history: {
148
+ title: "결제 내역",
149
+ description: "계정의 청구 및 환불 내역입니다.",
150
+ empty: "아직 결제 내역이 없습니다",
151
+ emptyDescription: "완료된 결제가 여기에 표시됩니다.",
152
+ date: "날짜",
153
+ item: "항목",
154
+ subscription: "구독",
155
+ purchase: "구매",
156
+ method: "결제 수단",
157
+ status: "상태",
158
+ amount: "금액",
159
+ refund: "환불",
160
+ refundedAmount: "{amount} 환불됨",
161
+ page: "{page}페이지",
162
+ rail: {
163
+ card: "카드",
164
+ solana: "Solana",
165
+ ccbill: "카드",
166
+ nmi: "카드",
167
+ stripe: "카드"
168
+ }
169
+ },
170
+ errors: {
171
+ generic: "문제가 발생했습니다. 다시 시도하세요.",
172
+ network: "서버에 연결할 수 없습니다. 연결을 확인하고 다시 시도하세요.",
173
+ network_error: "서버에 연결할 수 없습니다. 연결을 확인하고 다시 시도하세요.",
174
+ invalid_response: "서버가 예상치 못한 응답을 보냈습니다.",
175
+ authentication_required: "세션이 만료되었습니다. 다시 로그인하세요.",
176
+ resource_access_denied: "접근 권한이 없습니다.",
177
+ resource_not_found: "이 항목은 더 이상 존재하지 않습니다.",
178
+ resource_conflict: "내용이 변경되었습니다. 새로고침 후 다시 시도하세요.",
179
+ rate_limit_exceeded: "요청이 너무 많습니다. 잠시 후 다시 시도하세요.",
180
+ service_unavailable: "결제 기능을 일시적으로 사용할 수 없습니다. 잠시 후 다시 시도하세요.",
181
+ internal_error: "시스템에 문제가 발생했습니다. 다시 시도하세요.",
182
+ card_declined: "카드가 거절되었습니다.",
183
+ payment_provider_rejected: "결제 대행사가 요청을 거절했습니다.",
184
+ provider_outcome_unknown: "제공업체에서 결과를 확인하지 못했습니다. 잠시 후 다시 확인하세요.",
185
+ payment_in_progress: "이미 결제가 진행 중입니다.",
186
+ payment_method_delete_unsupported: "이 카드는 여기에서 삭제할 수 없습니다. 고객 지원에 문의하세요.",
187
+ payment_method_delete_failed: "제공업체가 이 카드를 삭제하지 못했습니다. 나중에 다시 시도하세요.",
188
+ customer_session_required: "이 작업을 하려면 다시 로그인하세요.",
189
+ invoker_scoped_principal: "이 계정은 결제를 관리할 수 없습니다.",
190
+ csrf_origin_denied: "요청이 차단되었습니다. 페이지를 새로고침하세요.",
191
+ wallet_rejected: "지갑 요청이 거절되었습니다.",
192
+ wallet_no_signature: "지갑이 트랜잭션에 서명하지 않았습니다."
193
+ }
194
+ };
195
+ //#endregion
196
+ export { e as ko };
197
+
198
+ //# sourceMappingURL=ko.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ko.js","names":[],"sources":["../../src/locales/ko.ts"],"sourcesContent":["import type { BillingUiMessageBundle } from \"../i18n/messages\"\n\nexport const ko: BillingUiMessageBundle = {\n common: {\n cancel: \"취소\",\n close: \"닫기\",\n retry: \"다시 시도\",\n loading: \"불러오는 중...\",\n previous: \"이전\",\n next: \"다음\",\n notAvailable: \"—\",\n },\n status: {\n active: \"활성\",\n pending: \"대기 중\",\n past_due: \"연체\",\n canceled: \"해지됨\",\n cancel_scheduled: \"종료 예정\",\n unknown: \"알 수 없음\",\n awaiting_method: \"카드 업데이트 필요\",\n unverified: \"확인 중\",\n succeeded: \"결제 완료\",\n failed: \"실패\",\n refunded: \"환불됨\",\n partially_refunded: \"부분 환불\",\n expired: \"만료됨\",\n expiring_soon: \"곧 만료\",\n needs_attention: \"확인 필요\",\n collection: \"청구서\",\n },\n interval: {\n every: {\n hour: { \"1\": \"매시간\", other: \"{count}시간마다\" },\n day: { \"1\": \"매일\", other: \"{count}일마다\" },\n week: { \"1\": \"매주\", other: \"{count}주마다\" },\n },\n per: {\n hour: { \"1\": \"/시간\", other: \"/{count}시간\" },\n day: { \"1\": \"/일\", other: \"/{count}일\" },\n week: { \"1\": \"/주\", other: \"/{count}주\" },\n },\n access: {\n hour: { other: \"{count}시간 이용\" },\n day: { other: \"{count}일 이용\" },\n week: { other: \"{count}주 이용\" },\n },\n once: \"일회성\",\n permanent: \"예정된 만료일이 없는 이용권\",\n },\n subscriptions: {\n title: \"구독\",\n description: \"이용 중인 요금제와 갱신일입니다.\",\n empty: \"아직 구독이 없습니다\",\n emptyDescription: \"구독한 요금제가 여기에 표시됩니다.\",\n browsePlans: \"요금제 보기\",\n fallbackName: \"구독\",\n renews: \"{date}에 갱신\",\n endsOn: \"{date}까지 이용 가능\",\n noMorePayments: \"추가 결제 없음\",\n endedOn: \"{date}에 종료됨\",\n pastDue: \"결제에 실패했습니다. 계속 이용하려면 카드를 업데이트하세요.\",\n cancel: \"해지\",\n cancelLabel: \"{name} 해지\",\n resume: \"재개\",\n resumed: \"구독이 계속됩니다.\",\n manageAtProvider: \"관리\",\n updating: \"업데이트 중...\",\n paidWith: \"{brand} •••• {last4}\",\n wallet: \"Solana 지갑\",\n changeCard: \"카드 변경\",\n changeCardLabel: \"{name} 카드 변경\",\n },\n changeCard: {\n title: \"{name} 결제 카드\",\n description: \"이후 갱신은 선택한 카드로 청구됩니다.\",\n none: \"변경하려면 결제 수단에서 다른 카드를 추가하세요.\",\n confirm: \"이 카드 사용\",\n current: \"현재\",\n done: \"결제 카드가 변경되었습니다.\",\n },\n cancel: {\n title: \"{name}을(를) 해지할까요?\",\n description: \"향후 결제가 중단됩니다. 이미 구매한 이용권은 유지됩니다.\",\n solanaDescription: \"지갑에서 온체인 해지에 서명합니다. 이미 구매한 이용권은 유지됩니다.\",\n reasonLabel: \"해지하는 이유를 알려 주세요\",\n reasonPlaceholder: \"의견은 서비스 개선에 도움이 됩니다.\",\n reasonHint: \"{count}/{max}\",\n reasonTooShort: \"{min}자 이상 입력하세요.\",\n keep: \"구독 유지\",\n confirm: \"구독 해지\",\n confirmWallet: \"지갑으로 서명\",\n working: \"해지 중...\",\n preparing: \"트랜잭션 준비 중...\",\n signing: \"지갑에서 승인하세요...\",\n confirming: \"해지를 기록하는 중...\",\n done: \"해지가 요청되었습니다.\",\n },\n paymentMethods: {\n title: \"결제 수단\",\n description: \"구독에 사용하는 저장된 카드입니다.\",\n empty: \"저장된 카드가 없습니다\",\n emptyDescription: \"저장한 카드가 여기에 표시됩니다.\",\n add: \"카드 추가\",\n addTitle: \"카드 추가\",\n addDescription:\n \"카드 정보는 결제 대행사로 바로 전송되며 이 사이트에는 전달되지 않습니다.\",\n save: \"카드 저장\",\n added: \"카드를 저장했습니다.\",\n provider: \"결제 제공업체\",\n saveNotice: \"입력한 카드는 향후 결제를 위해 계정에 저장됩니다.\",\n unavailable: \"이 제공업체에서는 안전한 카드 입력을 사용할 수 없습니다.\",\n addUnavailable: \"지금은 카드를 추가할 수 없습니다.\",\n verificationPending:\n \"카드 확인이 대기 중입니다. 다시 시도하기 전에 저장된 카드를 확인하세요.\",\n cardLabel: \"{brand} •••• {last4}\",\n fallbackBrand: \"카드\",\n expires: \"유효기간 {date}\",\n usedBy: \"{names}에서 사용 중\",\n collectsFor: \"{currencies} 청구서 결제\",\n useForInvoices: \"청구서에 사용\",\n usedForInvoices: \"청구서 카드를 업데이트했습니다.\",\n remove: \"삭제\",\n removeLabel: \"{label} 삭제\",\n removeTitle: \"{label}을(를) 삭제할까요?\",\n removeDescription:\n \"활성 구독에 사용 중인 카드는 다른 카드로 바꾼 후 삭제할 수 있습니다.\",\n removeConfirm: \"카드 삭제\",\n removed: \"카드를 삭제했습니다.\",\n removePending: \"삭제를 처리하고 있습니다.\",\n inUse:\n \"이 카드는 활성 구독의 결제에 사용 중입니다. 먼저 해당 구독을 다른 카드로 변경하세요.\",\n },\n checkout: {\n renews: \"{period} 갱신\",\n },\n history: {\n title: \"결제 내역\",\n description: \"계정의 청구 및 환불 내역입니다.\",\n empty: \"아직 결제 내역이 없습니다\",\n emptyDescription: \"완료된 결제가 여기에 표시됩니다.\",\n date: \"날짜\",\n item: \"항목\",\n subscription: \"구독\",\n purchase: \"구매\",\n method: \"결제 수단\",\n status: \"상태\",\n amount: \"금액\",\n refund: \"환불\",\n refundedAmount: \"{amount} 환불됨\",\n page: \"{page}페이지\",\n rail: {\n card: \"카드\",\n solana: \"Solana\",\n ccbill: \"카드\",\n nmi: \"카드\",\n stripe: \"카드\",\n },\n },\n errors: {\n generic: \"문제가 발생했습니다. 다시 시도하세요.\",\n network: \"서버에 연결할 수 없습니다. 연결을 확인하고 다시 시도하세요.\",\n network_error:\n \"서버에 연결할 수 없습니다. 연결을 확인하고 다시 시도하세요.\",\n invalid_response: \"서버가 예상치 못한 응답을 보냈습니다.\",\n authentication_required: \"세션이 만료되었습니다. 다시 로그인하세요.\",\n resource_access_denied: \"접근 권한이 없습니다.\",\n resource_not_found: \"이 항목은 더 이상 존재하지 않습니다.\",\n resource_conflict: \"내용이 변경되었습니다. 새로고침 후 다시 시도하세요.\",\n rate_limit_exceeded: \"요청이 너무 많습니다. 잠시 후 다시 시도하세요.\",\n service_unavailable:\n \"결제 기능을 일시적으로 사용할 수 없습니다. 잠시 후 다시 시도하세요.\",\n internal_error: \"시스템에 문제가 발생했습니다. 다시 시도하세요.\",\n card_declined: \"카드가 거절되었습니다.\",\n payment_provider_rejected: \"결제 대행사가 요청을 거절했습니다.\",\n provider_outcome_unknown:\n \"제공업체에서 결과를 확인하지 못했습니다. 잠시 후 다시 확인하세요.\",\n payment_in_progress: \"이미 결제가 진행 중입니다.\",\n payment_method_delete_unsupported:\n \"이 카드는 여기에서 삭제할 수 없습니다. 고객 지원에 문의하세요.\",\n payment_method_delete_failed:\n \"제공업체가 이 카드를 삭제하지 못했습니다. 나중에 다시 시도하세요.\",\n customer_session_required: \"이 작업을 하려면 다시 로그인하세요.\",\n invoker_scoped_principal: \"이 계정은 결제를 관리할 수 없습니다.\",\n csrf_origin_denied: \"요청이 차단되었습니다. 페이지를 새로고침하세요.\",\n wallet_rejected: \"지갑 요청이 거절되었습니다.\",\n wallet_no_signature: \"지갑이 트랜잭션에 서명하지 않았습니다.\",\n },\n}\n"],"mappings":";AAEA,IAAa,IAA6B;CACxC,QAAQ;EACN,QAAQ;EACR,OAAO;EACP,OAAO;EACP,SAAS;EACT,UAAU;EACV,MAAM;EACN,cAAc;CAChB;CACA,QAAQ;EACN,QAAQ;EACR,SAAS;EACT,UAAU;EACV,UAAU;EACV,kBAAkB;EAClB,SAAS;EACT,iBAAiB;EACjB,YAAY;EACZ,WAAW;EACX,QAAQ;EACR,UAAU;EACV,oBAAoB;EACpB,SAAS;EACT,eAAe;EACf,iBAAiB;EACjB,YAAY;CACd;CACA,UAAU;EACR,OAAO;GACL,MAAM;IAAE,GAAK;IAAO,OAAO;GAAc;GACzC,KAAK;IAAE,GAAK;IAAM,OAAO;GAAa;GACtC,MAAM;IAAE,GAAK;IAAM,OAAO;GAAa;EACzC;EACA,KAAK;GACH,MAAM;IAAE,GAAK;IAAO,OAAO;GAAa;GACxC,KAAK;IAAE,GAAK;IAAM,OAAO;GAAY;GACrC,MAAM;IAAE,GAAK;IAAM,OAAO;GAAY;EACxC;EACA,QAAQ;GACN,MAAM,EAAE,OAAO,eAAe;GAC9B,KAAK,EAAE,OAAO,cAAc;GAC5B,MAAM,EAAE,OAAO,cAAc;EAC/B;EACA,MAAM;EACN,WAAW;CACb;CACA,eAAe;EACb,OAAO;EACP,aAAa;EACb,OAAO;EACP,kBAAkB;EAClB,aAAa;EACb,cAAc;EACd,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB,SAAS;EACT,SAAS;EACT,QAAQ;EACR,aAAa;EACb,QAAQ;EACR,SAAS;EACT,kBAAkB;EAClB,UAAU;EACV,UAAU;EACV,QAAQ;EACR,YAAY;EACZ,iBAAiB;CACnB;CACA,YAAY;EACV,OAAO;EACP,aAAa;EACb,MAAM;EACN,SAAS;EACT,SAAS;EACT,MAAM;CACR;CACA,QAAQ;EACN,OAAO;EACP,aAAa;EACb,mBAAmB;EACnB,aAAa;EACb,mBAAmB;EACnB,YAAY;EACZ,gBAAgB;EAChB,MAAM;EACN,SAAS;EACT,eAAe;EACf,SAAS;EACT,WAAW;EACX,SAAS;EACT,YAAY;EACZ,MAAM;CACR;CACA,gBAAgB;EACd,OAAO;EACP,aAAa;EACb,OAAO;EACP,kBAAkB;EAClB,KAAK;EACL,UAAU;EACV,gBACE;EACF,MAAM;EACN,OAAO;EACP,UAAU;EACV,YAAY;EACZ,aAAa;EACb,gBAAgB;EAChB,qBACE;EACF,WAAW;EACX,eAAe;EACf,SAAS;EACT,QAAQ;EACR,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,QAAQ;EACR,aAAa;EACb,aAAa;EACb,mBACE;EACF,eAAe;EACf,SAAS;EACT,eAAe;EACf,OACE;CACJ;CACA,UAAU,EACR,QAAQ,cACV;CACA,SAAS;EACP,OAAO;EACP,aAAa;EACb,OAAO;EACP,kBAAkB;EAClB,MAAM;EACN,MAAM;EACN,cAAc;EACd,UAAU;EACV,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB,MAAM;EACN,MAAM;GACJ,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,KAAK;GACL,QAAQ;EACV;CACF;CACA,QAAQ;EACN,SAAS;EACT,SAAS;EACT,eACE;EACF,kBAAkB;EAClB,yBAAyB;EACzB,wBAAwB;EACxB,oBAAoB;EACpB,mBAAmB;EACnB,qBAAqB;EACrB,qBACE;EACF,gBAAgB;EAChB,eAAe;EACf,2BAA2B;EAC3B,0BACE;EACF,qBAAqB;EACrB,mCACE;EACF,8BACE;EACF,2BAA2B;EAC3B,0BAA0B;EAC1B,oBAAoB;EACpB,iBAAiB;EACjB,qBAAqB;CACvB;AACF"}
@@ -0,0 +1,2 @@
1
+ import { BillingUiMessageBundle } from '../i18n/messages';
2
+ export declare const zh: BillingUiMessageBundle;
@@ -0,0 +1,198 @@
1
+ //#region src/locales/zh.ts
2
+ var e = {
3
+ common: {
4
+ cancel: "取消",
5
+ close: "关闭",
6
+ retry: "重试",
7
+ loading: "加载中...",
8
+ previous: "上一页",
9
+ next: "下一页",
10
+ notAvailable: "—"
11
+ },
12
+ status: {
13
+ active: "有效",
14
+ pending: "待处理",
15
+ past_due: "逾期",
16
+ canceled: "已取消",
17
+ cancel_scheduled: "即将结束",
18
+ unknown: "未知",
19
+ awaiting_method: "需要更新银行卡",
20
+ unverified: "核实中",
21
+ succeeded: "已支付",
22
+ failed: "失败",
23
+ refunded: "已退款",
24
+ partially_refunded: "部分退款",
25
+ expired: "已过期",
26
+ expiring_soon: "即将过期",
27
+ needs_attention: "需要处理",
28
+ collection: "账单"
29
+ },
30
+ interval: {
31
+ every: {
32
+ hour: {
33
+ 1: "每小时",
34
+ other: "每 {count} 小时"
35
+ },
36
+ day: {
37
+ 1: "每天",
38
+ other: "每 {count} 天"
39
+ },
40
+ week: {
41
+ 1: "每周",
42
+ other: "每 {count} 周"
43
+ }
44
+ },
45
+ per: {
46
+ hour: {
47
+ 1: "/ 小时",
48
+ other: "/ {count} 小时"
49
+ },
50
+ day: {
51
+ 1: "/ 天",
52
+ other: "/ {count} 天"
53
+ },
54
+ week: {
55
+ 1: "/ 周",
56
+ other: "/ {count} 周"
57
+ }
58
+ },
59
+ access: {
60
+ hour: { other: "{count} 小时访问权限" },
61
+ day: { other: "{count} 天访问权限" },
62
+ week: { other: "{count} 周访问权限" }
63
+ },
64
+ once: "一次性",
65
+ permanent: "无预定到期时间的访问权限"
66
+ },
67
+ subscriptions: {
68
+ title: "订阅",
69
+ description: "你的套餐及续订时间。",
70
+ empty: "还没有订阅",
71
+ emptyDescription: "你订阅的套餐会显示在这里。",
72
+ browsePlans: "浏览套餐",
73
+ fallbackName: "订阅",
74
+ renews: "{date} 续订",
75
+ endsOn: "可使用至 {date}",
76
+ noMorePayments: "不再付款",
77
+ endedOn: "已于 {date} 结束",
78
+ pastDue: "付款失败。请更新你的银行卡以保留访问权限。",
79
+ cancel: "取消订阅",
80
+ cancelLabel: "取消 {name}",
81
+ resume: "恢复",
82
+ resumed: "你的订阅将继续。",
83
+ manageAtProvider: "管理",
84
+ updating: "正在更新...",
85
+ paidWith: "{brand} •••• {last4}",
86
+ wallet: "Solana 钱包",
87
+ changeCard: "更换卡片",
88
+ changeCardLabel: "更换 {name} 的卡片"
89
+ },
90
+ changeCard: {
91
+ title: "{name} 的付款卡",
92
+ description: "之后的续费将从所选卡片扣款。",
93
+ none: "请先在付款方式中添加另一张卡片再切换。",
94
+ confirm: "使用这张卡",
95
+ current: "当前",
96
+ done: "付款卡已更新。"
97
+ },
98
+ cancel: {
99
+ title: "取消 {name}?",
100
+ description: "停止后续付款。已购买的访问权限予以保留。",
101
+ solanaDescription: "你的钱包将签署链上取消交易。已购买的访问权限予以保留。",
102
+ reasonLabel: "为什么要取消?",
103
+ reasonPlaceholder: "你的反馈能帮助我们改进。",
104
+ reasonHint: "{count}/{max}",
105
+ reasonTooShort: "请至少输入 {min} 个字符。",
106
+ keep: "保留订阅",
107
+ confirm: "取消订阅",
108
+ confirmWallet: "用钱包签名",
109
+ working: "正在取消...",
110
+ preparing: "正在准备交易...",
111
+ signing: "请在钱包中确认...",
112
+ confirming: "正在记录取消...",
113
+ done: "已提交取消请求。"
114
+ },
115
+ paymentMethods: {
116
+ title: "付款方式",
117
+ description: "用于订阅的已保存银行卡。",
118
+ empty: "没有已保存的银行卡",
119
+ emptyDescription: "你保存的银行卡会显示在这里。",
120
+ add: "添加银行卡",
121
+ addTitle: "添加银行卡",
122
+ addDescription: "卡片信息直接发送给支付处理商,本网站不会接触这些信息。",
123
+ save: "保存银行卡",
124
+ added: "银行卡已保存。",
125
+ provider: "支付服务商",
126
+ saveNotice: "您输入的卡将保存到您的账户,用于以后的付款。",
127
+ unavailable: "此服务商不支持安全的银行卡输入。",
128
+ addUnavailable: "暂时无法添加银行卡。",
129
+ verificationPending: "银行卡验证待处理。请先查看已保存的银行卡,再重试。",
130
+ cardLabel: "{brand} •••• {last4}",
131
+ fallbackBrand: "银行卡",
132
+ expires: "有效期至 {date}",
133
+ usedBy: "用于 {names}",
134
+ collectsFor: "支付 {currencies} 账单",
135
+ useForInvoices: "用于账单",
136
+ usedForInvoices: "账单银行卡已更新。",
137
+ remove: "移除",
138
+ removeLabel: "移除 {label}",
139
+ removeTitle: "移除 {label}?",
140
+ removeDescription: "正在为有效订阅付款的银行卡需要先替换才能移除。",
141
+ removeConfirm: "移除银行卡",
142
+ removed: "银行卡已移除。",
143
+ removePending: "正在处理移除。",
144
+ inUse: "这张卡正在为有效订阅付款。请先将该订阅切换到其他银行卡。"
145
+ },
146
+ checkout: { renews: "{period}续订" },
147
+ history: {
148
+ title: "付款记录",
149
+ description: "你账户的扣款和退款。",
150
+ empty: "还没有付款记录",
151
+ emptyDescription: "已完成的付款会显示在这里。",
152
+ date: "日期",
153
+ item: "项目",
154
+ subscription: "订阅",
155
+ purchase: "购买",
156
+ method: "方式",
157
+ status: "状态",
158
+ amount: "金额",
159
+ refund: "退款",
160
+ refundedAmount: "已退款 {amount}",
161
+ page: "第 {page} 页",
162
+ rail: {
163
+ card: "银行卡",
164
+ solana: "Solana",
165
+ ccbill: "银行卡",
166
+ nmi: "银行卡",
167
+ stripe: "银行卡"
168
+ }
169
+ },
170
+ errors: {
171
+ generic: "出了点问题,请重试。",
172
+ network: "无法连接服务器。请检查网络后重试。",
173
+ network_error: "无法连接服务器。请检查网络后重试。",
174
+ invalid_response: "服务器返回了意外的响应。",
175
+ authentication_required: "会话已过期,请重新登录。",
176
+ resource_access_denied: "你无权访问此内容。",
177
+ resource_not_found: "该项目已不存在。",
178
+ resource_conflict: "内容已发生变化。请刷新后重试。",
179
+ rate_limit_exceeded: "请求过多,请稍后再试。",
180
+ service_unavailable: "计费服务暂时不可用,请稍后再试。",
181
+ internal_error: "我们这边出了问题,请重试。",
182
+ card_declined: "银行卡被拒绝。",
183
+ payment_provider_rejected: "支付服务商拒绝了该请求。",
184
+ provider_outcome_unknown: "无法向服务商确认结果,请稍后再查看。",
185
+ payment_in_progress: "已有一笔付款正在处理中。",
186
+ payment_method_delete_unsupported: "此银行卡无法在这里移除,请联系客服。",
187
+ payment_method_delete_failed: "服务商未能移除此银行卡,请稍后再试。",
188
+ customer_session_required: "请重新登录后再执行此操作。",
189
+ invoker_scoped_principal: "此账户无法管理计费。",
190
+ csrf_origin_denied: "请求被拦截。请刷新页面。",
191
+ wallet_rejected: "钱包请求被拒绝。",
192
+ wallet_no_signature: "钱包未签署该交易。"
193
+ }
194
+ };
195
+ //#endregion
196
+ export { e as zh };
197
+
198
+ //# sourceMappingURL=zh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zh.js","names":[],"sources":["../../src/locales/zh.ts"],"sourcesContent":["import type { BillingUiMessageBundle } from \"../i18n/messages\"\n\nexport const zh: BillingUiMessageBundle = {\n common: {\n cancel: \"取消\",\n close: \"关闭\",\n retry: \"重试\",\n loading: \"加载中...\",\n previous: \"上一页\",\n next: \"下一页\",\n notAvailable: \"—\",\n },\n status: {\n active: \"有效\",\n pending: \"待处理\",\n past_due: \"逾期\",\n canceled: \"已取消\",\n cancel_scheduled: \"即将结束\",\n unknown: \"未知\",\n awaiting_method: \"需要更新银行卡\",\n unverified: \"核实中\",\n succeeded: \"已支付\",\n failed: \"失败\",\n refunded: \"已退款\",\n partially_refunded: \"部分退款\",\n expired: \"已过期\",\n expiring_soon: \"即将过期\",\n needs_attention: \"需要处理\",\n collection: \"账单\",\n },\n interval: {\n every: {\n hour: { \"1\": \"每小时\", other: \"每 {count} 小时\" },\n day: { \"1\": \"每天\", other: \"每 {count} 天\" },\n week: { \"1\": \"每周\", other: \"每 {count} 周\" },\n },\n per: {\n hour: { \"1\": \"/ 小时\", other: \"/ {count} 小时\" },\n day: { \"1\": \"/ 天\", other: \"/ {count} 天\" },\n week: { \"1\": \"/ 周\", other: \"/ {count} 周\" },\n },\n access: {\n hour: { other: \"{count} 小时访问权限\" },\n day: { other: \"{count} 天访问权限\" },\n week: { other: \"{count} 周访问权限\" },\n },\n once: \"一次性\",\n permanent: \"无预定到期时间的访问权限\",\n },\n subscriptions: {\n title: \"订阅\",\n description: \"你的套餐及续订时间。\",\n empty: \"还没有订阅\",\n emptyDescription: \"你订阅的套餐会显示在这里。\",\n browsePlans: \"浏览套餐\",\n fallbackName: \"订阅\",\n renews: \"{date} 续订\",\n endsOn: \"可使用至 {date}\",\n noMorePayments: \"不再付款\",\n endedOn: \"已于 {date} 结束\",\n pastDue: \"付款失败。请更新你的银行卡以保留访问权限。\",\n cancel: \"取消订阅\",\n cancelLabel: \"取消 {name}\",\n resume: \"恢复\",\n resumed: \"你的订阅将继续。\",\n manageAtProvider: \"管理\",\n updating: \"正在更新...\",\n paidWith: \"{brand} •••• {last4}\",\n wallet: \"Solana 钱包\",\n changeCard: \"更换卡片\",\n changeCardLabel: \"更换 {name} 的卡片\",\n },\n changeCard: {\n title: \"{name} 的付款卡\",\n description: \"之后的续费将从所选卡片扣款。\",\n none: \"请先在付款方式中添加另一张卡片再切换。\",\n confirm: \"使用这张卡\",\n current: \"当前\",\n done: \"付款卡已更新。\",\n },\n cancel: {\n title: \"取消 {name}?\",\n description: \"停止后续付款。已购买的访问权限予以保留。\",\n solanaDescription: \"你的钱包将签署链上取消交易。已购买的访问权限予以保留。\",\n reasonLabel: \"为什么要取消?\",\n reasonPlaceholder: \"你的反馈能帮助我们改进。\",\n reasonHint: \"{count}/{max}\",\n reasonTooShort: \"请至少输入 {min} 个字符。\",\n keep: \"保留订阅\",\n confirm: \"取消订阅\",\n confirmWallet: \"用钱包签名\",\n working: \"正在取消...\",\n preparing: \"正在准备交易...\",\n signing: \"请在钱包中确认...\",\n confirming: \"正在记录取消...\",\n done: \"已提交取消请求。\",\n },\n paymentMethods: {\n title: \"付款方式\",\n description: \"用于订阅的已保存银行卡。\",\n empty: \"没有已保存的银行卡\",\n emptyDescription: \"你保存的银行卡会显示在这里。\",\n add: \"添加银行卡\",\n addTitle: \"添加银行卡\",\n addDescription: \"卡片信息直接发送给支付处理商,本网站不会接触这些信息。\",\n save: \"保存银行卡\",\n added: \"银行卡已保存。\",\n provider: \"支付服务商\",\n saveNotice: \"您输入的卡将保存到您的账户,用于以后的付款。\",\n unavailable: \"此服务商不支持安全的银行卡输入。\",\n addUnavailable: \"暂时无法添加银行卡。\",\n verificationPending: \"银行卡验证待处理。请先查看已保存的银行卡,再重试。\",\n cardLabel: \"{brand} •••• {last4}\",\n fallbackBrand: \"银行卡\",\n expires: \"有效期至 {date}\",\n usedBy: \"用于 {names}\",\n collectsFor: \"支付 {currencies} 账单\",\n useForInvoices: \"用于账单\",\n usedForInvoices: \"账单银行卡已更新。\",\n remove: \"移除\",\n removeLabel: \"移除 {label}\",\n removeTitle: \"移除 {label}?\",\n removeDescription: \"正在为有效订阅付款的银行卡需要先替换才能移除。\",\n removeConfirm: \"移除银行卡\",\n removed: \"银行卡已移除。\",\n removePending: \"正在处理移除。\",\n inUse: \"这张卡正在为有效订阅付款。请先将该订阅切换到其他银行卡。\",\n },\n checkout: {\n renews: \"{period}续订\",\n },\n history: {\n title: \"付款记录\",\n description: \"你账户的扣款和退款。\",\n empty: \"还没有付款记录\",\n emptyDescription: \"已完成的付款会显示在这里。\",\n date: \"日期\",\n item: \"项目\",\n subscription: \"订阅\",\n purchase: \"购买\",\n method: \"方式\",\n status: \"状态\",\n amount: \"金额\",\n refund: \"退款\",\n refundedAmount: \"已退款 {amount}\",\n page: \"第 {page} 页\",\n rail: {\n card: \"银行卡\",\n solana: \"Solana\",\n ccbill: \"银行卡\",\n nmi: \"银行卡\",\n stripe: \"银行卡\",\n },\n },\n errors: {\n generic: \"出了点问题,请重试。\",\n network: \"无法连接服务器。请检查网络后重试。\",\n network_error: \"无法连接服务器。请检查网络后重试。\",\n invalid_response: \"服务器返回了意外的响应。\",\n authentication_required: \"会话已过期,请重新登录。\",\n resource_access_denied: \"你无权访问此内容。\",\n resource_not_found: \"该项目已不存在。\",\n resource_conflict: \"内容已发生变化。请刷新后重试。\",\n rate_limit_exceeded: \"请求过多,请稍后再试。\",\n service_unavailable: \"计费服务暂时不可用,请稍后再试。\",\n internal_error: \"我们这边出了问题,请重试。\",\n card_declined: \"银行卡被拒绝。\",\n payment_provider_rejected: \"支付服务商拒绝了该请求。\",\n provider_outcome_unknown: \"无法向服务商确认结果,请稍后再查看。\",\n payment_in_progress: \"已有一笔付款正在处理中。\",\n payment_method_delete_unsupported: \"此银行卡无法在这里移除,请联系客服。\",\n payment_method_delete_failed: \"服务商未能移除此银行卡,请稍后再试。\",\n customer_session_required: \"请重新登录后再执行此操作。\",\n invoker_scoped_principal: \"此账户无法管理计费。\",\n csrf_origin_denied: \"请求被拦截。请刷新页面。\",\n wallet_rejected: \"钱包请求被拒绝。\",\n wallet_no_signature: \"钱包未签署该交易。\",\n },\n}\n"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CheckoutProps } from './checkout';
2
+ import * as React from "react";
3
+ export interface CheckoutModalProps extends CheckoutProps {
4
+ open: boolean;
5
+ onOpenChange: (open: boolean) => void;
6
+ /**
7
+ * Rendered instead of the checkout while set, e.g. the host's sign-in.
8
+ * Clear it to continue to payment in the same modal.
9
+ */
10
+ gate?: React.ReactNode;
11
+ }
12
+ export declare function CheckoutModal({ open, onOpenChange, onPhaseChange, gate, ...checkoutProps }: CheckoutModalProps): React.JSX.Element;
@@ -0,0 +1,18 @@
1
+ import { ReactNode } from 'react';
2
+ import { CheckoutAppearance } from './appearance';
3
+ import { BillingUiMessageBundle, BillingUiTranslate } from './i18n/messages';
4
+ import { Navigate } from './scope-context';
5
+ export interface BillingUiProviderProps {
6
+ appearance?: CheckoutAppearance;
7
+ /** Locale bundle(s) layered over English; later entries win. */
8
+ messages?: BillingUiMessageBundle | readonly BillingUiMessageBundle[];
9
+ /** Host translation hook, consulted before the bundles. */
10
+ t?: BillingUiTranslate;
11
+ /** BCP 47 tag for dates, money and plurals; defaults to the browser's. */
12
+ locale?: string;
13
+ /** Host router for in-app links (e.g. the plans page). */
14
+ navigate?: Navigate;
15
+ children?: ReactNode;
16
+ }
17
+ /** Renders no DOM; surfaces create their own styling roots. */
18
+ export declare function BillingUiProvider({ appearance, messages, t, locale, navigate, children, }: BillingUiProviderProps): import("react").JSX.Element;
package/dist/psp.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+ import { PaymentMethod } from './client/types';
3
+ import { PaymentOption, SavedPaymentMethod } from './types';
4
+ export declare const pspConfigSchema: z.ZodObject<{
5
+ psp_id: z.ZodString;
6
+ key: z.ZodString;
7
+ rail: z.ZodString;
8
+ custodian: z.ZodString;
9
+ display_name: z.ZodString;
10
+ flow: z.ZodString;
11
+ config: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodString>>>;
12
+ checkout: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
13
+ status: z.ZodOptional<z.ZodNullable<z.ZodString>>;
14
+ retry_after: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
15
+ }, z.core.$strip>;
16
+ export type PspConfig = z.infer<typeof pspConfigSchema>;
17
+ /** Whether a rail takes a card in the page (saved or new). */
18
+ export declare const isCardRail: (rail: PaymentOption) => boolean;
19
+ /** PSPs that take new purchases and new cards. */
20
+ export declare const checkoutPsps: (psps: readonly PspConfig[]) => PspConfig[];
21
+ /**
22
+ * Seconds until a card PSP listed as temporarily unavailable is worth asking
23
+ * for again; null when none is.
24
+ */
25
+ export declare function cardRetryAfter(psps: readonly PspConfig[]): number | null;
26
+ /** Saved cards the checkout can charge in place, for the given rails, newest first. */
27
+ export declare function savedMethodsFor(methods: readonly PaymentMethod[], rails: readonly PaymentOption[]): SavedPaymentMethod[];
28
+ export type CardSetupDriver = "collect_js" | "card" | "stripe_elements";
29
+ /** How a card is saved with this PSP in the page, or null when it cannot be. */
30
+ export declare function cardSetupDriver(psp: PspConfig): CardSetupDriver | null;
31
+ export declare const canSavePaymentMethod: (psp: PspConfig) => boolean;
32
+ /** Whether a pending payment on this PSP can be authenticated in the page. */
33
+ export declare const canAuthenticatePayment: (psp: PspConfig) => boolean;
34
+ /** The PSP config behind a checkout rail, for card setup and authentication. */
35
+ export declare function railPsp(rail: PaymentOption): PspConfig;
@@ -0,0 +1,34 @@
1
+ import { BillingClient } from '../client/client';
2
+ import { BillingError } from '../client/errors';
3
+ import { CurrencyScales, PublicConfig } from '../client/types';
4
+ export interface ConfigState {
5
+ config: PublicConfig | null;
6
+ loading: boolean;
7
+ error: BillingError | null;
8
+ refetch: () => void;
9
+ }
10
+ interface Snapshot {
11
+ config: PublicConfig | null;
12
+ loading: boolean;
13
+ error: BillingError | null;
14
+ }
15
+ /** One shared copy of `GET /config` per client, fetched on first use. */
16
+ export interface ConfigStore {
17
+ subscribe(listener: () => void): () => void;
18
+ snapshot(): Snapshot;
19
+ /** Fetches the document unless it was already requested. */
20
+ ensure(): void;
21
+ refetch(): void;
22
+ }
23
+ export declare function createConfigStore(client: BillingClient): ConfigStore;
24
+ /**
25
+ * The deployment's public configuration (`GET /config`), fetched once per
26
+ * `BillingProvider` and shared by every component that reads it.
27
+ */
28
+ export declare function useConfig(): ConfigState;
29
+ /**
30
+ * Currency scales: the server's registry, under the client's pinned copy and
31
+ * host overrides, which stand alone until the registry loads.
32
+ */
33
+ export declare function useCurrencyScales(): CurrencyScales;
34
+ export {};
@@ -0,0 +1,35 @@
1
+ import { BillingClient } from '../client/client';
2
+ import { TierChange } from '../client/types';
3
+ import { ConfigStore } from './config';
4
+ export type BillingChange = {
5
+ type: "subscription.canceled" | "subscription.resumed";
6
+ subscriptionId: string;
7
+ } | {
8
+ type: "subscription.payment_method_changed";
9
+ subscriptionId: string;
10
+ paymentMethodId: string;
11
+ } | {
12
+ type: "subscription.tier_changed";
13
+ subscriptionId: string;
14
+ /** `status` may still be `processing` or `requires_action`. */
15
+ change: TierChange;
16
+ } | {
17
+ type: "payment_method.added" | "payment_method.removed" | "payment_method.collection_changed";
18
+ paymentMethodId: string;
19
+ };
20
+ export interface BillingContextValue {
21
+ client: BillingClient;
22
+ /** Bumped after every mutation; hooks refetch on change. */
23
+ version: number;
24
+ notify(change: BillingChange): void;
25
+ /** Refetch every hook after a host-side change such as a plan switch. */
26
+ refresh(): void;
27
+ /** The shared `GET /config`; read it with `useConfig()`. */
28
+ config: ConfigStore;
29
+ }
30
+ export declare const BillingContext: import('react').Context<BillingContextValue | null>;
31
+ export declare function useBillingContext(): BillingContextValue;
32
+ export declare const useBillingClient: () => BillingClient;
33
+ export declare const useBillingRefresh: () => (() => void);
34
+ /** The billing context when a BillingProvider is present, else null. */
35
+ export declare const useOptionalBillingContext: () => BillingContextValue | null;