@blocklet/payment-react 1.20.15 → 1.20.17

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 (114) hide show
  1. package/.aigne/doc-smith/config.yaml +7 -1
  2. package/.aigne/doc-smith/upload-cache.yaml +441 -0
  3. package/docs/components-business-auto-topup.ja.md +187 -0
  4. package/docs/components-business-auto-topup.zh-TW.md +187 -0
  5. package/docs/components-business-auto-topup.zh.md +187 -0
  6. package/docs/components-business-overdue-invoice-payment.ja.md +196 -0
  7. package/docs/components-business-overdue-invoice-payment.zh-TW.md +197 -0
  8. package/docs/components-business-overdue-invoice-payment.zh.md +197 -0
  9. package/docs/components-business-resume-subscription.ja.md +190 -0
  10. package/docs/components-business-resume-subscription.zh-TW.md +190 -0
  11. package/docs/components-business-resume-subscription.zh.md +190 -0
  12. package/docs/components-business.ja.md +21 -0
  13. package/docs/components-business.zh-TW.md +21 -0
  14. package/docs/components-business.zh.md +21 -0
  15. package/docs/components-checkout-checkout-donate.ja.md +259 -0
  16. package/docs/components-checkout-checkout-donate.zh-TW.md +259 -0
  17. package/docs/components-checkout-checkout-donate.zh.md +259 -0
  18. package/docs/components-checkout-checkout-form.ja.md +163 -0
  19. package/docs/components-checkout-checkout-form.zh-TW.md +163 -0
  20. package/docs/components-checkout-checkout-form.zh.md +163 -0
  21. package/docs/components-checkout-checkout-table.ja.md +148 -0
  22. package/docs/components-checkout-checkout-table.zh-TW.md +148 -0
  23. package/docs/components-checkout-checkout-table.zh.md +149 -0
  24. package/docs/components-checkout.ja.md +65 -0
  25. package/docs/components-checkout.zh-TW.md +65 -0
  26. package/docs/components-checkout.zh.md +65 -0
  27. package/docs/components-history-credit-grants-list.ja.md +73 -0
  28. package/docs/components-history-credit-grants-list.zh-TW.md +73 -0
  29. package/docs/components-history-credit-grants-list.zh.md +73 -0
  30. package/docs/components-history-credit-transactions-list.ja.md +106 -0
  31. package/docs/components-history-credit-transactions-list.zh-TW.md +106 -0
  32. package/docs/components-history-credit-transactions-list.zh.md +106 -0
  33. package/docs/components-history-invoice-list.ja.md +110 -0
  34. package/docs/components-history-invoice-list.zh-TW.md +110 -0
  35. package/docs/components-history-invoice-list.zh.md +110 -0
  36. package/docs/components-history-payment-list.ja.md +44 -0
  37. package/docs/components-history-payment-list.zh-TW.md +44 -0
  38. package/docs/components-history-payment-list.zh.md +44 -0
  39. package/docs/components-history.ja.md +67 -0
  40. package/docs/components-history.zh-TW.md +67 -0
  41. package/docs/components-history.zh.md +67 -0
  42. package/docs/components-ui-form-elements-address-form.ja.md +121 -0
  43. package/docs/components-ui-form-elements-address-form.zh-TW.md +121 -0
  44. package/docs/components-ui-form-elements-address-form.zh.md +121 -0
  45. package/docs/components-ui-form-elements-country-select.ja.md +126 -0
  46. package/docs/components-ui-form-elements-country-select.zh-TW.md +126 -0
  47. package/docs/components-ui-form-elements-country-select.zh.md +126 -0
  48. package/docs/components-ui-form-elements-currency-selector.ja.md +108 -0
  49. package/docs/components-ui-form-elements-currency-selector.zh-TW.md +108 -0
  50. package/docs/components-ui-form-elements-currency-selector.zh.md +108 -0
  51. package/docs/components-ui-form-elements-phone-input.ja.md +138 -0
  52. package/docs/components-ui-form-elements-phone-input.zh-TW.md +138 -0
  53. package/docs/components-ui-form-elements-phone-input.zh.md +139 -0
  54. package/docs/components-ui-form-elements.ja.md +91 -0
  55. package/docs/components-ui-form-elements.zh-TW.md +91 -0
  56. package/docs/components-ui-form-elements.zh.md +91 -0
  57. package/docs/components-ui-payment-summary.ja.md +109 -0
  58. package/docs/components-ui-payment-summary.zh-TW.md +109 -0
  59. package/docs/components-ui-payment-summary.zh.md +109 -0
  60. package/docs/components-ui-pricing-table.ja.md +140 -0
  61. package/docs/components-ui-pricing-table.zh-TW.md +140 -0
  62. package/docs/components-ui-pricing-table.zh.md +140 -0
  63. package/docs/components-ui.ja.md +71 -0
  64. package/docs/components-ui.zh-TW.md +71 -0
  65. package/docs/components-ui.zh.md +71 -0
  66. package/docs/components.ja.md +122 -0
  67. package/docs/components.zh-TW.md +122 -0
  68. package/docs/components.zh.md +122 -0
  69. package/docs/getting-started.ja.md +84 -0
  70. package/docs/getting-started.zh-TW.md +84 -0
  71. package/docs/getting-started.zh.md +84 -0
  72. package/docs/guides-theming.ja.md +213 -0
  73. package/docs/guides-theming.zh-TW.md +213 -0
  74. package/docs/guides-theming.zh.md +213 -0
  75. package/docs/guides-utilities.ja.md +197 -0
  76. package/docs/guides-utilities.zh-TW.md +197 -0
  77. package/docs/guides-utilities.zh.md +197 -0
  78. package/docs/guides.ja.md +18 -0
  79. package/docs/guides.zh-TW.md +18 -0
  80. package/docs/guides.zh.md +18 -0
  81. package/docs/hooks-use-mobile.ja.md +84 -0
  82. package/docs/hooks-use-mobile.zh-TW.md +84 -0
  83. package/docs/hooks-use-mobile.zh.md +84 -0
  84. package/docs/hooks-use-subscription.ja.md +111 -0
  85. package/docs/hooks-use-subscription.zh-TW.md +111 -0
  86. package/docs/hooks-use-subscription.zh.md +110 -0
  87. package/docs/hooks.ja.md +14 -0
  88. package/docs/hooks.zh-TW.md +14 -0
  89. package/docs/hooks.zh.md +14 -0
  90. package/docs/overview.ja.md +80 -0
  91. package/docs/overview.zh-TW.md +80 -0
  92. package/docs/overview.zh.md +80 -0
  93. package/docs/providers-donate-provider.ja.md +153 -0
  94. package/docs/providers-donate-provider.zh-TW.md +153 -0
  95. package/docs/providers-donate-provider.zh.md +153 -0
  96. package/docs/providers-payment-provider.ja.md +191 -0
  97. package/docs/providers-payment-provider.zh-TW.md +191 -0
  98. package/docs/providers-payment-provider.zh.md +191 -0
  99. package/docs/providers.ja.md +42 -0
  100. package/docs/providers.zh-TW.md +42 -0
  101. package/docs/providers.zh.md +42 -0
  102. package/es/locales/en.js +13 -3
  103. package/es/locales/zh.js +13 -3
  104. package/es/payment/product-item.js +123 -20
  105. package/es/payment/success.js +2 -2
  106. package/lib/locales/en.js +13 -3
  107. package/lib/locales/zh.js +13 -3
  108. package/lib/payment/product-item.js +136 -32
  109. package/lib/payment/success.js +2 -2
  110. package/package.json +5 -5
  111. package/src/locales/en.tsx +18 -3
  112. package/src/locales/zh.tsx +17 -3
  113. package/src/payment/product-item.tsx +140 -19
  114. package/src/payment/success.tsx +2 -2
@@ -0,0 +1,80 @@
1
+ # 概要
2
+
3
+ `@blocklet/payment-react` は、支払いフロー、サブスクリプション、および寄付システムの blocklet への統合を効率化するために設計された、包括的な React コンポーネントライブラリです。[Payment Kit](https://www.arcblock.io/docs/arcblock-payment-kit) を基盤として構築されており、事前に構築済みでカスタマイズ可能、かつ本番環境ですぐに利用できる一連のコンポーネントを提供し、最小限の労力で強力な決済体験を構築するのに役立ちます。
4
+
5
+ ## 主な機能
6
+
7
+ <x-cards data-columns="3">
8
+ <x-card data-title="構築済みのUIコンポーネント" data-icon="lucide:layout-template">
9
+ チェックアウトフォーム、価格表、寄付ウィジェットなど、一般的な決済シナリオをすぐにカバーできる豊富なコンポーネントセットが含まれています。
10
+ </x-card>
11
+ <x-card data-title="カスタマイズ可能なテーマ" data-icon="lucide:palette">
12
+ Material-UI テーマを使用して決済フローの外観を完全に制御し、一貫したユーザーエクスペリエンスを保証します。
13
+ </x-card>
14
+ <x-card data-title="i18n サポート" data-icon="lucide:languages">
15
+ 組み込みの国際化サポートにより、グローバルなユーザー向けにコンポーネントのテキストを簡単にローカライズできます。
16
+ </x-card>
17
+ <x-card data-title="包括的な決済操作" data-icon="lucide:credit-card">
18
+ サブスクリプション、返金、請求書管理、従量課金など、複雑な決済ロジックを簡単に処理します。
19
+ </x-card>
20
+ <x-card data-title="最適化されたパフォーマンス" data-icon="lucide:package-minus">
21
+ 遅延読み込みと動的コンポーネントインポートの組み込みサポートにより、アプリケーションのバンドルサイズを最適化し、パフォーマンスを向上させます。
22
+ </x-card>
23
+ </x-cards>
24
+
25
+ ## 仕組み
26
+
27
+ このライブラリは、プロバイダーコンポーネントモデルを中心に設計されています。`PaymentProvider` はライブラリの中核であり、認証、API通信、状態を管理するコンテキストを作成します。他のすべての決済コンポーネントは、正しく機能するためにこのプロバイダーでラップする必要があります。これにより、決済ロジックが一元化され、個々のコンポーネントは軽量で特定の機能に集中できます。
28
+
29
+ ```d2 高レベルアーキテクチャ
30
+ direction: down
31
+
32
+ User: {
33
+ shape: c4-person
34
+ }
35
+
36
+ Your-Application: {
37
+ label: "あなたのアプリケーション"
38
+ shape: rectangle
39
+
40
+ PaymentProvider: {
41
+ label: "PaymentProvider"
42
+ shape: rectangle
43
+
44
+ Payment-Components: {
45
+ label: "決済コンポーネント"
46
+ shape: rectangle
47
+ grid-columns: 2
48
+
49
+ CheckoutForm: { label: "CheckoutForm" }
50
+ CheckoutTable: { label: "CheckoutTable" }
51
+ CheckoutDonate: { label: "CheckoutDonate" }
52
+ CustomerInvoiceList: { label: "CustomerInvoiceList" }
53
+ }
54
+ }
55
+ }
56
+
57
+ Payment-Kit-Backend: {
58
+ label: "Payment Kit バックエンド"
59
+ shape: cylinder
60
+ }
61
+
62
+ User -> Your-Application.PaymentProvider.Payment-Components: "UIと対話する"
63
+ Your-Application.PaymentProvider -> Payment-Kit-Backend: "API通信を処理する"
64
+ Payment-Kit-Backend -> Your-Application.PaymentProvider: "データを返す"
65
+ Your-Application.PaymentProvider.Payment-Components -> User: "UIの更新をレンダリングする"
66
+
67
+ ```
68
+
69
+ ## 構築できるもの
70
+
71
+ - **サブスクリプションサービス:** `CheckoutTable` を使用して、SaaS製品の価格ページとチェックアウトフローを迅速に実装します。
72
+ - **Eコマースチェックアウト:** `CheckoutForm` を使用して、商品を販売するための一回限りの支払いフォームを構築します。
73
+ - **寄付システム:** `CheckoutDonate` を使用して、クリエイターや活動を支援するための柔軟な寄付ウィジェットを追加します。
74
+ - **カスタマーポータル:** `CustomerInvoiceList` やその他の履歴コンポーネントを使用して、ユーザーの請求履歴を表示し、支払い方法を管理します。
75
+
76
+ ## 次のステップ
77
+
78
+ `@blocklet/payment-react` が提供する機能の概要を理解したところで、何かを構築してみることが最善の学習方法です。
79
+
80
+ [はじめに](./getting-started.md) ガイドを参考にしてライブラリをインストールし、数分で最初の支払いフォームを作成してみましょう。
@@ -0,0 +1,80 @@
1
+ # 總覽
2
+
3
+ `@blocklet/payment-react` 是一個全方位的 React 元件庫,旨在簡化將支付流程、訂閱和捐贈系統整合到您的 blocklet 中的過程。它建立在 [Payment Kit](https://www.arcblock.io/docs/arcblock-payment-kit) 的基礎之上,提供了一套預先建置、可自訂且生產就緒的元件,幫助您以最少的精力打造強大的支付體驗。
4
+
5
+ ## 主要功能
6
+
7
+ <x-cards data-columns="3">
8
+ <x-card data-title="預先建置的使用者介面元件" data-icon="lucide:layout-template">
9
+ 包含一組豐富的元件,如結帳表單、定價表和捐贈小工具,開箱即用,涵蓋常見的支付情境。
10
+ </x-card>
11
+ <x-card data-title="可自訂主題" data-icon="lucide:palette">
12
+ 使用 Material-UI 主題完全控制您的支付流程外觀和風格,確保一致的使用者體驗。
13
+ </x-card>
14
+ <x-card data-title="支援 i18n" data-icon="lucide:languages">
15
+ 內建的國際化支援讓您能輕鬆為全球受眾本地化元件文字。
16
+ </x-card>
17
+ <x-card data-title="全方位的支付操作" data-icon="lucide:credit-card">
18
+ 輕鬆處理複雜的支付邏輯,包括訂閱、退款、發票管理和計量計費。
19
+ </x-card>
20
+ <x-card data-title="最佳化效能" data-icon="lucide:package-minus">
21
+ 透過內建的延遲載入和動態元件匯入支援,最佳化您應用程式的套件大小並提升效能。
22
+ </x-card>
23
+ </x-cards>
24
+
25
+ ## 運作方式
26
+
27
+ 此函式庫圍繞著提供者-元件模型架構。`PaymentProvider` 是此函式庫的核心,它建立了一個管理身份驗證、API 通訊和狀態的上下文 (context)。所有其他支付元件都必須包裹在此提供者內才能正常運作。這種方式集中了支付邏輯,並使個別元件保持輕量和專注。
28
+
29
+ ```d2 高階架構
30
+ direction: down
31
+
32
+ User: {
33
+ shape: c4-person
34
+ }
35
+
36
+ Your-Application: {
37
+ label: "Your Application"
38
+ shape: rectangle
39
+
40
+ PaymentProvider: {
41
+ label: "PaymentProvider"
42
+ shape: rectangle
43
+
44
+ Payment-Components: {
45
+ label: "Payment Components"
46
+ shape: rectangle
47
+ grid-columns: 2
48
+
49
+ CheckoutForm: { label: "CheckoutForm" }
50
+ CheckoutTable: { label: "CheckoutTable" }
51
+ CheckoutDonate: { label: "CheckoutDonate" }
52
+ CustomerInvoiceList: { label: "CustomerInvoiceList" }
53
+ }
54
+ }
55
+ }
56
+
57
+ Payment-Kit-Backend: {
58
+ label: "Payment Kit Backend"
59
+ shape: cylinder
60
+ }
61
+
62
+ User -> Your-Application.PaymentProvider.Payment-Components: "Interacts with UI"
63
+ Your-Application.PaymentProvider -> Payment-Kit-Backend: "Handles API Communication"
64
+ Payment-Kit-Backend -> Your-Application.PaymentProvider: "Returns Data"
65
+ Your-Application.PaymentProvider.Payment-Components -> User: "Renders UI Updates"
66
+
67
+ ```
68
+
69
+ ## 您可以建立什麼
70
+
71
+ - **訂閱服務:** 使用 `CheckoutTable` 為 SaaS 產品快速實作定價頁面和結帳流程。
72
+ - **電子商務結帳:** 使用 `CheckoutForm` 為銷售商品建立一次性支付表單。
73
+ - **捐贈系統:** 使用 `CheckoutDonate` 新增靈活的捐贈小工具以支持創作者或公益事業。
74
+ - **客戶入口網站:** 使用 `CustomerInvoiceList` 和其他歷史記錄元件為使用者顯示發票歷史並管理支付方式。
75
+
76
+ ## 下一步
77
+
78
+ 既然您已對 `@blocklet/payment-react` 提供的功能有了大致了解,最好的學習方式就是動手實作。
79
+
80
+ 深入閱讀我們的 [入門指南](./getting-started.md) 來安裝此函式庫,並在幾分鐘內建立您的第一個支付表單。
@@ -0,0 +1,80 @@
1
+ # 概述
2
+
3
+ `@blocklet/payment-react` 是一个全面的 React 组件库,旨在简化将支付流程、订阅和捐赠系统集成到您的 Blocklet 中的过程。它基于 [Payment Kit](https://www.arcblock.io/docs/arcblock-payment-kit) 构建,提供了一套预构建、可定制且生产就绪的组件,帮助您以最少的精力构建强大的支付体验。
4
+
5
+ ## 主要特性
6
+
7
+ <x-cards data-columns="3">
8
+ <x-card data-title="预构建的 UI 组件" data-icon="lucide:layout-template">
9
+ 包含一组丰富的组件,如结账表单、定价表和捐赠小部件,可开箱即用地覆盖常见的支付场景。
10
+ </x-card>
11
+ <x-card data-title="可定制主题" data-icon="lucide:palette">
12
+ 使用 Material-UI 主题完全控制支付流程的外观和感觉,确保一致的用户体验。
13
+ </x-card>
14
+ <x-card data-title="i18n 支持" data-icon="lucide:languages">
15
+ 内置的国际化支持使您可以轻松地为全球受众本地化组件文本。
16
+ </x-card>
17
+ <x-card data-title="全面的支付操作" data-icon="lucide:credit-card">
18
+ 轻松处理复杂的支付逻辑,包括订阅、退款、发票管理和计量计费。
19
+ </x-card>
20
+ <x-card data-title="优化的性能" data-icon="lucide:package-minus">
21
+ 通过内置的懒加载和动态组件导入支持,优化应用程序的包大小并提高性能。
22
+ </x-card>
23
+ </x-cards>
24
+
25
+ ## 工作原理
26
+
27
+ 该库围绕提供者-组件模型构建。`PaymentProvider` 是该库的核心,它创建了一个管理身份验证、API 通信和状态的上下文。所有其他支付组件都必须在此提供者内包装才能正常工作。这种方式集中了支付逻辑,并使各个组件保持轻量和专注。
28
+
29
+ ```d2 High-Level Architecture
30
+ direction: down
31
+
32
+ User: {
33
+ shape: c4-person
34
+ }
35
+
36
+ Your-Application: {
37
+ label: "你的应用"
38
+ shape: rectangle
39
+
40
+ PaymentProvider: {
41
+ label: "PaymentProvider"
42
+ shape: rectangle
43
+
44
+ Payment-Components: {
45
+ label: "支付组件"
46
+ shape: rectangle
47
+ grid-columns: 2
48
+
49
+ CheckoutForm: { label: "CheckoutForm" }
50
+ CheckoutTable: { label: "CheckoutTable" }
51
+ CheckoutDonate: { label: "CheckoutDonate" }
52
+ CustomerInvoiceList: { label: "CustomerInvoiceList" }
53
+ }
54
+ }
55
+ }
56
+
57
+ Payment-Kit-Backend: {
58
+ label: "Payment Kit 后端"
59
+ shape: cylinder
60
+ }
61
+
62
+ User -> Your-Application.PaymentProvider.Payment-Components: "与 UI 交互"
63
+ Your-Application.PaymentProvider -> Payment-Kit-Backend: "处理 API 通信"
64
+ Payment-Kit-Backend -> Your-Application.PaymentProvider: "返回数据"
65
+ Your-Application.PaymentProvider.Payment-Components -> User: "渲染 UI 更新"
66
+
67
+ ```
68
+
69
+ ## 你可以构建什么
70
+
71
+ - **订阅服务:** 使用 `CheckoutTable` 为 SaaS 产品快速实现定价页面和结账流程。
72
+ - **电子商务结账:** 使用 `CheckoutForm` 构建用于销售商品的一次性支付表单。
73
+ - **捐赠系统:** 使用 `CheckoutDonate` 添加灵活的捐赠小部件以支持创作者或事业。
74
+ - **客户门户:** 使用 `CustomerInvoiceList` 和其他历史组件为用户显示发票历史和管理支付方式。
75
+
76
+ ## 下一步
77
+
78
+ 现在你已经对 `@blocklet/payment-react` 提供的功能有了大致了解,最好的学习方式就是动手构建一些东西。
79
+
80
+ 深入阅读我们的 [入门指南](./getting-started.md) 来安装该库,并在几分钟内创建你的第一个支付表单。
@@ -0,0 +1,153 @@
1
+ # DonateProvider
2
+
3
+ `DonateProvider`は、アプリケーション内のすべての寄付関連コンポーネントの状態と設定を管理する、極めて重要なコンテキストプロバイダーです。バックエンドから設定を取得し、パフォーマンス向上のためにキャッシュし、`CheckoutDonate`などのコンポーネントに提供する役割を担います。
4
+
5
+ 寄付機能を使用するには、コンポーネントを`DonateProvider`でラップする必要があります。また、このプロバイダーは、必要な支払いコンテキストとセッション情報へのアクセスを確保するために、[`PaymentProvider`](./providers-payment-provider.md)内にネストされている必要があります。
6
+
7
+ ## 仕組み
8
+
9
+ `DonateProvider`は、いくつかの主要な機能を実行します:
10
+
11
+ 1. **設定の取得**:マウント時に、APIエンドポイントを呼び出して、一意の`mountLocation`プロップに関連付けられた寄付設定を取得します。これらの設定は、子となる寄付コンポーネントの動作を決定します。
12
+ 2. **データのキャッシュ**:パフォーマンスを向上させ、ネットワークリクエストを削減するために、取得した設定は`localStorage`に保存されます。キャッシュは次回以降の読み込みで自動的に使用され、必要に応じて手動でクリアすることもできます。
13
+ 3. **コンテキストの提供**:ReactのContext APIを使用して、設定と制御関数(`refresh`、`updateSettings`)を、それらを必要とするすべての子孫コンポーネントに渡します。
14
+ 4. **寄付の有効化**:管理者ユーザー('owner'または'admin')に対して、寄付インスタンスが非アクティブであっても`enableDonate`プロップが設定されている場合、プロバイダーはそれをアクティブ化するためのUIをレンダリングします。
15
+
16
+ ## Props
17
+
18
+ `DonateProvider`は、その動作を設定するために以下のプロップを受け入れます:
19
+
20
+ | Prop | Type | Required | Description |
21
+ | ----------------- | ---------------------------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | `mountLocation` | `string` | はい | この特定の寄付インスタンスのための一意の文字列識別子。設定の取得、キャッシュ、更新のキーとして使用されます。 |
23
+ | `description` | `string` | はい | システムバックエンドやログでこの寄付インスタンスを識別するのに役立つ、人間が読める形式の説明。 |
24
+ | `children` | `ReactNode` | はい | プロバイダーの内部でレンダリングされる子コンポーネント。通常は `CheckoutDonate` を含みます。 |
25
+ | `defaultSettings` | `DonateConfigSettings` | いいえ | バックエンドで設定が見つからない場合に適用されるデフォルト設定を持つオブジェクト。利用可能なオプションについては、以下の型定義を参照してください。 |
26
+ | `active` | `boolean` | いいえ | 寄付インスタンスが最初に作成されるときの初期アクティブ状態を設定します。デフォルトは `true` です。 |
27
+ | `enableDonate` | `boolean` | いいえ | `true` の場合、管理者ユーザーが現在非アクティブなこの寄付インスタンスをUIから有効にできるようにします。デフォルトは `false` です。 |
28
+
29
+ ### DonateConfigSettings 型
30
+
31
+ これは `defaultSettings` オブジェクトの形状です:
32
+
33
+ ```typescript DonateConfigSettings type
34
+ export interface DonateConfigSettings {
35
+ amount?: {
36
+ presets?: string[]; // 例:['1', '5', '10']
37
+ preset?: string; // デフォルトで選択されるプリセット金額
38
+ custom: boolean; // ユーザーがカスタム金額を入力できるようにする
39
+ minimum?: string; // 最小カスタム金額
40
+ maximum?: string; // 最大カスタム金額
41
+ };
42
+ btnText?: string; // メインの寄付ボタンのテキスト、例:「寄付する」
43
+ historyType?: 'table' | 'avatar'; // 支援者リストの表示方法
44
+ }
45
+ ```
46
+
47
+ ## 使用例
48
+
49
+ 以下は、ページに寄付セクションを設定する完全な例です。`CheckoutDonate` を `DonateProvider` と `PaymentProvider` の両方でラップする方法を示しています。
50
+
51
+ ```tsx App.tsx icon=logos:react
52
+ import {
53
+ PaymentProvider,
54
+ DonateProvider,
55
+ CheckoutDonate,
56
+ } from '@blocklet/payment-react';
57
+ import { useSessionContext } from './hooks/use-session'; // あなたのカスタムセッションフック
58
+
59
+ function DonationSection() {
60
+ const { session, connectApi } = useSessionContext();
61
+
62
+ // ユーザーが認証されていない場合は何もレンダリングしないか、ログインプロンプトを表示します
63
+ if (!session?.user) {
64
+ return <div>Please log in to make a donation.</div>;
65
+ }
66
+
67
+ return (
68
+ <PaymentProvider session={session} connect={connectApi}>
69
+ <DonateProvider
70
+ mountLocation="support-our-blog-post-123"
71
+ description="Donation for the article 'Getting Started with React'"
72
+ defaultSettings={{
73
+ btnText: 'Support the Author',
74
+ amount: {
75
+ presets: ['1', '5', '10'],
76
+ custom: true,
77
+ minimum: '1',
78
+ },
79
+ }}>
80
+ <CheckoutDonate
81
+ settings={{
82
+ target: 'post-123', // 寄付対象の一意の識別子
83
+ title: 'Support the Author',
84
+ description: 'If you found this article helpful, feel free to buy me a coffee.',
85
+ reference: 'https://your-site.com/posts/123',
86
+ beneficiaries: [
87
+ {
88
+ address: 'z8iZ75n8fWJ2aL1c9a9f4c3b2e1a0d9f8e7d6c5b4a392817',
89
+ share: '100',
90
+ },
91
+ ],
92
+ }}
93
+ />
94
+ </DonateProvider>
95
+ </PaymentProvider>
96
+ );
97
+ }
98
+ ```
99
+
100
+ ## フックとユーティリティ
101
+
102
+ このライブラリは、寄付コンテキストとキャッシュを高度に制御するためのヘルパー関数もいくつかエクスポートしています。
103
+
104
+ ### `useDonateContext`
105
+
106
+ `DonateProvider` の任意の子コンポーネントから寄付コンテキストに直接アクセスするためのReactフック。
107
+
108
+ ```tsx
109
+ import { useDonateContext } from '@blocklet/payment-react';
110
+
111
+ function CustomDonationInfo() {
112
+ const { settings, refresh } = useDonateContext();
113
+
114
+ return (
115
+ <div>
116
+ <p>Donations are currently {settings.active ? 'enabled' : 'disabled'}.</p>
117
+ <button onClick={() => refresh(true)}>Refresh Settings</button>
118
+ </div>
119
+ );
120
+ }
121
+ ```
122
+
123
+ ### `clearDonateCache`
124
+
125
+ この関数は、特定の `mountLocation` のキャッシュされた設定を `localStorage` から手動で削除します。これは、サーバー上で設定が変更されたことがわかっており、次のコンポーネントのレンダリング時に強制的に新しいデータを取得したい場合に便利です。
126
+
127
+ ```javascript
128
+ import { clearDonateCache } from '@blocklet/payment-react';
129
+
130
+ // キャッシュを無効にする必要があるときにこの関数を呼び出します
131
+ clearDonateCache('support-our-blog-post-123');
132
+ ```
133
+
134
+ ### `clearDonateSettings`
135
+
136
+ この関数は、指定された `mountLocation` の設定を永久に削除するために、バックエンドAPIに `DELETE` リクエストを送信します。また、その場所のローカルキャッシュもクリアします。
137
+
138
+ ```javascript
139
+ import { clearDonateSettings } from '@blocklet/payment-react';
140
+
141
+ async function deleteDonationInstance() {
142
+ try {
143
+ await clearDonateSettings('support-our-blog-post-123');
144
+ console.log('Donation settings have been deleted.');
145
+ } catch (error) {
146
+ console.error('Failed to delete settings:', error);
147
+ }
148
+ }
149
+ ```
150
+
151
+ `DonateProvider` を設定すると、さまざまな寄付機能を実装できるようになります。次のステップは、寄付UIを表示するためのメインコンポーネントを探ることです。
152
+
153
+ ➡️ 次に、[`CheckoutDonate`](./components-checkout-checkout-donate.md) コンポーネントを使用して寄付ウィジェットをレンダリングする方法を学びます。
@@ -0,0 +1,153 @@
1
+ # DonateProvider
2
+
3
+ `DonateProvider` 是一個關鍵的 context provider,負責管理應用程式中所有捐款相關元件的狀態和設定。它會處理從後端擷取設定、為了效能而快取設定,並將設定提供給像 `CheckoutDonate` 這樣的元件。
4
+
5
+ 若要使用任何捐款功能,您必須用 `DonateProvider` 包裹您的元件。此 provider 也必須巢狀嵌套在 [`PaymentProvider`](./providers-payment-provider.md) 內,以確保能存取必要的支付 context 和 session 資訊。
6
+
7
+ ## 運作方式
8
+
9
+ `DonateProvider` 執行幾個關鍵功能:
10
+
11
+ 1. **擷取設定**:在掛載時,它會呼叫一個 API 端點來擷取與唯一的 `mountLocation` prop 相關聯的捐款設定。這些設定決定了子捐款元件的行為。
12
+ 2. **快取資料**:為了提升效能並減少網路請求,擷取到的設定會儲存在 `localStorage` 中。快取會在後續載入時自動使用,如有需要也可以手動清除。
13
+ 3. **提供 Context**:它使用 React 的 Context API 將設定和控制函式(`refresh`、`updateSettings`)傳遞給任何需要它們的後代元件。
14
+ 4. **啟用捐款**:對於管理員使用者('owner' 或 'admin'),如果捐款實例處於非活動狀態但設定了 `enableDonate` prop,provider 將會渲染一個 UI 來啟用它。
15
+
16
+ ## Props
17
+
18
+ `DonateProvider` 接受以下 props 來設定其行為:
19
+
20
+ | Prop | Type | Required | Description |
21
+ | ----------------- | ---------------------------------- | :------: | ---------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | `mountLocation` | `string` | 是 | 此特定捐款實例的唯一字串識別碼。它被用作擷取、快取和更新設定的鍵。 |
23
+ | `description` | `string` | 是 | 一個人類可讀的描述,有助於在系統後端或日誌中識別此捐款實例。 |
24
+ | `children` | `ReactNode` | 是 | 將在 provider 內渲染的子元件,通常包含 `CheckoutDonate`。 |
25
+ | `defaultSettings` | `DonateConfigSettings` | 否 | 一個包含預設設定的物件,如果在後端找不到設定時套用。有關可用選項,請參閱下方的類型定義。 |
26
+ | `active` | `boolean` | 否 | 設定捐款實例首次建立時的初始活動狀態。預設為 `true`。 |
27
+ | `enableDonate` | `boolean` | 否 | 如果為 `true`,允許管理員使用者在捐款實例目前為非活動狀態時,從 UI 啟用它。預設為 `false`。 |
28
+
29
+ ### DonateConfigSettings 類型
30
+
31
+ 這是 `defaultSettings` 物件的結構:
32
+
33
+ ```typescript DonateConfigSettings type
34
+ export interface DonateConfigSettings {
35
+ amount?: {
36
+ presets?: string[]; // 例如 ['1', '5', '10']
37
+ preset?: string; // 預設選擇的預設金額
38
+ custom: boolean; // 允許使用者輸入自訂金額
39
+ minimum?: string; // 最小自訂金額
40
+ maximum?: string; // 最大自訂金額
41
+ };
42
+ btnText?: string; // 主要捐款按鈕的文字,例如 "Donate"
43
+ historyType?: 'table' | 'avatar'; // 如何顯示支持者列表
44
+ }
45
+ ```
46
+
47
+ ## 使用範例
48
+
49
+ 這是一個在頁面上設定捐款區塊的完整範例。它展示了如何使用 `DonateProvider` 和 `PaymentProvider` 來包裹 `CheckoutDonate`。
50
+
51
+ ```tsx App.tsx icon=logos:react
52
+ import {
53
+ PaymentProvider,
54
+ DonateProvider,
55
+ CheckoutDonate,
56
+ } from '@blocklet/payment-react';
57
+ import { useSessionContext } from './hooks/use-session'; // 您的自訂 session hook
58
+
59
+ function DonationSection() {
60
+ const { session, connectApi } = useSessionContext();
61
+
62
+ // 如果使用者未經驗證,則不渲染任何內容或顯示登入提示
63
+ if (!session?.user) {
64
+ return <div>Please log in to make a donation.</div>;
65
+ }
66
+
67
+ return (
68
+ <PaymentProvider session={session} connect={connectApi}>
69
+ <DonateProvider
70
+ mountLocation="support-our-blog-post-123"
71
+ description="Donation for the article 'Getting Started with React'"
72
+ defaultSettings={{
73
+ btnText: 'Support the Author',
74
+ amount: {
75
+ presets: ['1', '5', '10'],
76
+ custom: true,
77
+ minimum: '1',
78
+ },
79
+ }}>
80
+ <CheckoutDonate
81
+ settings={{
82
+ target: 'post-123', // 捐款目標的唯一識別碼
83
+ title: 'Support the Author',
84
+ description: 'If you found this article helpful, feel free to buy me a coffee.',
85
+ reference: 'https://your-site.com/posts/123',
86
+ beneficiaries: [
87
+ {
88
+ address: 'z8iZ75n8fWJ2aL1c9a9f4c3b2e1a0d9f8e7d6c5b4a392817',
89
+ share: '100',
90
+ },
91
+ ],
92
+ }}
93
+ />
94
+ </DonateProvider>
95
+ </PaymentProvider>
96
+ );
97
+ }
98
+ ```
99
+
100
+ ## Hooks 和公用程式
101
+
102
+ 該函式庫還匯出了一些輔助函式,用於對捐款 context 和快取進行進階控制。
103
+
104
+ ### `useDonateContext`
105
+
106
+ 一個 React hook,用於從 `DonateProvider` 的任何子元件中直接存取捐款 context。
107
+
108
+ ```tsx
109
+ import { useDonateContext } from '@blocklet/payment-react';
110
+
111
+ function CustomDonationInfo() {
112
+ const { settings, refresh } = useDonateContext();
113
+
114
+ return (
115
+ <div>
116
+ <p>Donations are currently {settings.active ? 'enabled' : 'disabled'}.</p>
117
+ <button onClick={() => refresh(true)}>Refresh Settings</button>
118
+ </div>
119
+ );
120
+ }
121
+ ```
122
+
123
+ ### `clearDonateCache`
124
+
125
+ 此函式會從 `localStorage` 中手動移除特定 `mountLocation` 的快取設定。當您知道伺服器上的設定已變更,並希望在下次元件渲染時強制重新擷取時,這非常有用。
126
+
127
+ ```javascript
128
+ import { clearDonateCache } from '@blocklet/payment-react';
129
+
130
+ // 當您需要讓快取失效時,呼叫此函式
131
+ clearDonateCache('support-our-blog-post-123');
132
+ ```
133
+
134
+ ### `clearDonateSettings`
135
+
136
+ 此函式會向後端 API 發送一個 `DELETE` 請求,以永久移除給定 `mountLocation` 的設定。它也會清除該位置的本地快取。
137
+
138
+ ```javascript
139
+ import { clearDonateSettings } from '@blocklet/payment-react';
140
+
141
+ async function deleteDonationInstance() {
142
+ try {
143
+ await clearDonateSettings('support-our-blog-post-123');
144
+ console.log('Donation settings have been deleted.');
145
+ } catch (error) {
146
+ console.error('Failed to delete settings:', error);
147
+ }
148
+ }
149
+ ```
150
+
151
+ 設定好 `DonateProvider` 後,您現在可以實作各種捐款功能。下一步是探索用於顯示捐款 UI 的主要元件。
152
+
153
+ ➡️ 接下來,學習如何使用 [`CheckoutDonate`](./components-checkout-checkout-donate.md) 元件來渲染捐款小工具。