@arcblock/did-connect-react 3.1.41 → 3.1.42

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 (81) hide show
  1. package/.aigne/doc-smith/config.yaml +83 -0
  2. package/.aigne/doc-smith/output/structure-plan.json +197 -0
  3. package/.aigne/doc-smith/upload-cache.yaml +168 -0
  4. package/docs/_sidebar.md +18 -0
  5. package/docs/advanced-authentication-methods.ja.md +261 -0
  6. package/docs/advanced-authentication-methods.md +261 -0
  7. package/docs/advanced-authentication-methods.zh-TW.md +261 -0
  8. package/docs/advanced-authentication-methods.zh.md +261 -0
  9. package/docs/advanced-utilities.ja.md +132 -0
  10. package/docs/advanced-utilities.md +132 -0
  11. package/docs/advanced-utilities.zh-TW.md +132 -0
  12. package/docs/advanced-utilities.zh.md +132 -0
  13. package/docs/advanced.ja.md +95 -0
  14. package/docs/advanced.md +95 -0
  15. package/docs/advanced.zh-TW.md +95 -0
  16. package/docs/advanced.zh.md +95 -0
  17. package/docs/api-reference.ja.md +178 -0
  18. package/docs/api-reference.md +178 -0
  19. package/docs/api-reference.zh-TW.md +178 -0
  20. package/docs/api-reference.zh.md +178 -0
  21. package/docs/core-components-did-connect.ja.md +214 -0
  22. package/docs/core-components-did-connect.md +213 -0
  23. package/docs/core-components-did-connect.zh-TW.md +214 -0
  24. package/docs/core-components-did-connect.zh.md +213 -0
  25. package/docs/core-components-session-provider.ja.md +239 -0
  26. package/docs/core-components-session-provider.md +239 -0
  27. package/docs/core-components-session-provider.zh-TW.md +239 -0
  28. package/docs/core-components-session-provider.zh.md +239 -0
  29. package/docs/core-components.ja.md +16 -0
  30. package/docs/core-components.md +16 -0
  31. package/docs/core-components.zh-TW.md +16 -0
  32. package/docs/core-components.zh.md +16 -0
  33. package/docs/getting-started.ja.md +138 -0
  34. package/docs/getting-started.md +138 -0
  35. package/docs/getting-started.zh-TW.md +138 -0
  36. package/docs/getting-started.zh.md +138 -0
  37. package/docs/hooks-use-connect.ja.md +214 -0
  38. package/docs/hooks-use-connect.md +214 -0
  39. package/docs/hooks-use-connect.zh-TW.md +214 -0
  40. package/docs/hooks-use-connect.zh.md +214 -0
  41. package/docs/hooks-use-did.ja.md +107 -0
  42. package/docs/hooks-use-did.md +107 -0
  43. package/docs/hooks-use-did.zh-TW.md +107 -0
  44. package/docs/hooks-use-did.zh.md +107 -0
  45. package/docs/hooks-use-oauth-passkey.ja.md +188 -0
  46. package/docs/hooks-use-oauth-passkey.md +188 -0
  47. package/docs/hooks-use-oauth-passkey.zh-TW.md +188 -0
  48. package/docs/hooks-use-oauth-passkey.zh.md +188 -0
  49. package/docs/hooks.ja.md +23 -0
  50. package/docs/hooks.md +23 -0
  51. package/docs/hooks.zh-TW.md +23 -0
  52. package/docs/hooks.zh.md +23 -0
  53. package/docs/overview.ja.md +159 -0
  54. package/docs/overview.md +159 -0
  55. package/docs/overview.zh-TW.md +159 -0
  56. package/docs/overview.zh.md +160 -0
  57. package/docs/ui-components-address.ja.md +121 -0
  58. package/docs/ui-components-address.md +121 -0
  59. package/docs/ui-components-address.zh-TW.md +121 -0
  60. package/docs/ui-components-address.zh.md +121 -0
  61. package/docs/ui-components-avatar.ja.md +65 -0
  62. package/docs/ui-components-avatar.md +65 -0
  63. package/docs/ui-components-avatar.zh-TW.md +65 -0
  64. package/docs/ui-components-avatar.zh.md +65 -0
  65. package/docs/ui-components-button.ja.md +99 -0
  66. package/docs/ui-components-button.md +99 -0
  67. package/docs/ui-components-button.zh-TW.md +99 -0
  68. package/docs/ui-components-button.zh.md +99 -0
  69. package/docs/ui-components-logo.ja.md +52 -0
  70. package/docs/ui-components-logo.md +52 -0
  71. package/docs/ui-components-logo.zh-TW.md +52 -0
  72. package/docs/ui-components-logo.zh.md +52 -0
  73. package/docs/ui-components.ja.md +57 -0
  74. package/docs/ui-components.md +57 -0
  75. package/docs/ui-components.zh-TW.md +57 -0
  76. package/docs/ui-components.zh.md +57 -0
  77. package/glossary.md +1 -0
  78. package/lib/package.json.js +1 -1
  79. package/package.json +5 -5
  80. package/src/Session/hooks/use-federated.js +3 -0
  81. package/src/Session/libs/federated.js +3 -0
@@ -0,0 +1,159 @@
1
+ # 總覽
2
+
3
+ `@arcblock/did-connect-react` 函式庫提供了一套全面的 React 元件和鉤子 (hooks),旨在將去中心化身份 (DID) 功能無縫整合到您的 Web 應用程式中。它使用 ArcBlock 的 DID Wallet 簡化了用戶身份驗證和會話管理的過程,為傳統登入系統提供了一個安全且用戶友好的替代方案。
4
+
5
+ 該函式庫的建構旨在實現靈活性和易用性,無論您需要一個開箱即用的完整解決方案,還是對身份驗證流程進行精細控制。
6
+
7
+ ### 主要功能
8
+
9
+ <x-cards data-columns="2">
10
+ <x-card data-title="完整的連線 UI" data-icon="lucide:qr-code-icon">
11
+ 包含 `DidConnect` 元件,這是一個預先建置、可自訂的彈窗,用於處理整個 QR code 掃描和連線過程。
12
+ </x-card>
13
+ <x-card data-title="無縫的會話管理" data-icon="lucide:key-round">
14
+ 利用 `SessionProvider` 和 `useSession` 鉤子,在您的應用程式中輕鬆管理用戶登入狀態、會話和個人資料數據。
15
+ </x-card>
16
+ <x-card data-title="靈活的程式化控制" data-icon="lucide:webhook">
17
+ 使用像 `useConnect` 這樣的鉤子,以程式化方式開啟、關閉和管理連線彈窗,讓您完全控制用戶體驗。
18
+ </x-card>
19
+ <x-card data-title="豐富的 UI 工具組" data-icon="lucide:gem">
20
+ 一系列輔助 UI 元件,如 `Avatar`、`Address` 和 `Button`,用於一致地顯示用戶身份資訊。
21
+ </x-card>
22
+ </x-cards>
23
+
24
+ ### 核心架構
25
+
26
+ 該函式庫圍繞一個核心的 `SessionProvider` 進行,它管理用戶的會話狀態。像 `Button` 這樣的 UI 元件可以觸發 `DidConnect` 彈窗,該彈窗處理與用戶 DID Wallet 之間基於 QR code 的安全互動。一旦連線完成,會話將被更新,您的應用程式 UI 也會相應地作出反應。
27
+
28
+ ```d2 基本身份驗證流程
29
+ direction: down
30
+
31
+ User: {
32
+ shape: c4-person
33
+ }
34
+
35
+ Your-Application: {
36
+ label: "您的 React 應用程式"
37
+ shape: rectangle
38
+
39
+ SessionProvider: {
40
+ label: "SessionProvider\n(管理會話狀態)"
41
+ shape: rectangle
42
+
43
+ App-Components: {
44
+ label: "您的應用程式元件"
45
+ shape: rectangle
46
+
47
+ ConnectButton: {
48
+ label: "ConnectButton"
49
+ shape: rectangle
50
+ }
51
+ }
52
+
53
+ DidConnect-Modal: {
54
+ label: "DidConnect 彈窗\n(處理 QR code 流程)"
55
+ shape: rectangle
56
+ }
57
+ }
58
+ }
59
+
60
+ DID-Wallet: {
61
+ label: "DID Wallet"
62
+ icon: "https://www.arcblock.io/image-bin/uploads/37198ddc4a0b9e91e5c1c821ab895a34.svg"
63
+ }
64
+
65
+ User -> Your-Application.SessionProvider.App-Components.ConnectButton: "1. 點擊按鈕"
66
+ Your-Application.SessionProvider.App-Components.ConnectButton -> Your-Application.SessionProvider.DidConnect-Modal: "2. 開啟彈窗"
67
+ Your-Application.SessionProvider.DidConnect-Modal -> User: "3. 顯示 QR code"
68
+ User -> DID-Wallet: "4. 掃描並批准"
69
+ DID-Wallet -> Your-Application.SessionProvider: "5. 完成連線"
70
+ Your-Application.SessionProvider -> Your-Application.SessionProvider.App-Components: "6. 更新會話狀態"
71
+
72
+ ```
73
+
74
+ ### 安裝
75
+
76
+ 首先,使用 `yarn` 或 `npm` 將該函式庫新增至您的專案中。
77
+
78
+ ```shell 安裝 icon=lucide:download
79
+ # 使用 yarn
80
+ yarn add @arcblock/did-connect-react
81
+
82
+ # 使用 npm
83
+ npm install @arcblock/did-connect-react
84
+ ```
85
+
86
+ ### 運作方式:快速概覽
87
+
88
+ 以下是一個設定登入流程的最小範例。應用程式被包裹在一個 `SessionProvider` 中,並使用一個 `Button` 來切換 `DidConnect` 彈窗的顯示。
89
+
90
+ ```jsx App.js icon=logos:react
91
+ import React from 'react';
92
+ import axios from 'axios';
93
+ import { SessionProvider, SessionConsumer } from '@arcblock/did-connect-react/lib/Session';
94
+ import DidConnect from '@arcblock/did-connect-react/lib/Connect';
95
+ import Button from '@arcblock/did-connect-react/lib/Button';
96
+
97
+ const webWalletUrl = 'https://web.abtwallet.io/';
98
+
99
+ function App() {
100
+ const [isConnectOpen, setConnectOpen] = React.useState(false);
101
+
102
+ const handleClose = () => setConnectOpen(false);
103
+ const handleSuccess = () => {
104
+ // 成功登入後重新導向或更新 UI
105
+ window.location.reload();
106
+ };
107
+
108
+ return (
109
+ <SessionProvider serviceHost="/">
110
+ <div className="main-content">
111
+ <SessionConsumer>
112
+ {({ session }) => {
113
+ if (session.loading) {
114
+ return <div>載入會話中...</div>;
115
+ }
116
+
117
+ return session.user ? (
118
+ <div>
119
+ <h2>歡迎,{session.user.did}!</h2>
120
+ <button onClick={() => session.logout()}>登出</button>
121
+ </div>
122
+ ) : (
123
+ <Button onClick={() => setConnectOpen(true)}>連接錢包</Button>
124
+ );
125
+ }}
126
+ </SessionConsumer>
127
+ </div>
128
+
129
+ <DidConnect
130
+ popup
131
+ open={isConnectOpen}
132
+ action="login"
133
+ checkFn={axios.get}
134
+ onClose={handleClose}
135
+ onSuccess={handleSuccess}
136
+ messages={{
137
+ title: '登入我的應用程式',
138
+ scan: '使用您的 DID Wallet 掃描 QR code',
139
+ confirm: '在您的錢包上確認登入',
140
+ success: '您已成功登入!',
141
+ }}
142
+ webWalletUrl={webWalletUrl}
143
+ />
144
+ </SessionProvider>
145
+ );
146
+ }
147
+
148
+ export default App;
149
+ ```
150
+
151
+ 這個範例展示了如何僅用幾個元件來管理用戶會話並觸發登入過程。
152
+
153
+ ### 下一步
154
+
155
+ 現在您對該函式庫有了基本的了解,可以準備深入探索了。
156
+
157
+ <x-card data-title="入門指南" data-href="/getting-started" data-icon="lucide:rocket" data-cta="開始建構">
158
+ 跟隨我們的逐步指南,從頭開始將 DID Connect 整合到您自己的應用程式中。
159
+ </x-card>
@@ -0,0 +1,160 @@
1
+ # 概览
2
+
3
+ `@arcblock/did-connect-react` 库提供了一套全面的 React 组件和钩子,旨在将去中心化身份(DID)功能无缝集成到您的 Web 应用程序中。它简化了使用 ArcBlock 的 DID 钱包进行用户身份验证和会话管理的过程,为传统登录系统提供了一种安全且用户友好的替代方案。
4
+
5
+ 无论您是需要一个开箱即用的完整解决方案,还是需要对身份验证流程进行精细控制,该库都旨在提供灵活性和易用性。
6
+
7
+ ### 主要功能
8
+
9
+ <x-cards data-columns="2">
10
+ <x-card data-title="完整的连接用户界面" data-icon="lucide:qr-code-icon">
11
+ 包含 `DidConnect` 组件,这是一个预构建的、可自定义的模态框,用于处理整个二维码扫描和连接过程。
12
+ </x-card>
13
+ <x-card data-title="无缝的会话管理" data-icon="lucide:key-round">
14
+ 利用 `SessionProvider` 和 `useSession` 钩子,轻松管理整个应用程序中的用户登录状态、会话和个人资料数据。
15
+ </x-card>
16
+ <x-card data-title="灵活的编程控制" data-icon="lucide:webhook">
17
+ 使用像 `useConnect` 这样的钩子,以编程方式打开、关闭和管理连接模态框,让您完全控制用户体验。
18
+ </x-card>
19
+ <x-card data-title="丰富的 UI 工具包" data-icon="lucide:gem">
20
+ 一系列辅助 UI 组件,如 `Avatar`、`Address` 和 `Button`,用于一致地显示用户身份信息。
21
+ </x-card>
22
+ </x-cards>
23
+
24
+ ### 核心架构
25
+
26
+ 该库围绕一个中央 `SessionProvider` 展开,它管理用户的会话状态。像 `Button` 这样的 UI 组件可以触发 `DidConnect` 模态框,该模态框处理与用户的 DID 钱包之间基于二维码的安全交互。连接完成后,会话将更新,您的应用程序 UI 也会相应地做出反应。
27
+
28
+ ```d2 Basic Authentication Flow
29
+ direction: down
30
+
31
+ User: {
32
+ label: "用户"
33
+ shape: c4-person
34
+ }
35
+
36
+ Your-Application: {
37
+ label: "你的 React 应用"
38
+ shape: rectangle
39
+
40
+ SessionProvider: {
41
+ label: "SessionProvider\n(管理会话状态)"
42
+ shape: rectangle
43
+
44
+ App-Components: {
45
+ label: "你的应用组件"
46
+ shape: rectangle
47
+
48
+ ConnectButton: {
49
+ label: "ConnectButton"
50
+ shape: rectangle
51
+ }
52
+ }
53
+
54
+ DidConnect-Modal: {
55
+ label: "DidConnect 模态框\n(处理二维码流程)"
56
+ shape: rectangle
57
+ }
58
+ }
59
+ }
60
+
61
+ DID-Wallet: {
62
+ label: "DID 钱包"
63
+ icon: "https://www.arcblock.io/image-bin/uploads/37198ddc4a0b9e91e5c1c821ab895a34.svg"
64
+ }
65
+
66
+ User -> Your-Application.SessionProvider.App-Components.ConnectButton: "1. 点击按钮"
67
+ Your-Application.SessionProvider.App-Components.ConnectButton -> Your-Application.SessionProvider.DidConnect-Modal: "2. 打开模态框"
68
+ Your-Application.SessionProvider.DidConnect-Modal -> User: "3. 显示二维码"
69
+ User -> DID-Wallet: "4. 扫描并批准"
70
+ DID-Wallet -> Your-Application.SessionProvider: "5. 完成连接"
71
+ Your-Application.SessionProvider -> Your-Application.SessionProvider.App-Components: "6. 更新会话状态"
72
+
73
+ ```
74
+
75
+ ### 安装
76
+
77
+ 要开始使用,请使用 `yarn` 或 `npm` 将该库添加到您的项目中。
78
+
79
+ ```shell Installation icon=lucide:download
80
+ # 使用 yarn
81
+ yarn add @arcblock/did-connect-react
82
+
83
+ # 使用 npm
84
+ npm install @arcblock/did-connect-react
85
+ ```
86
+
87
+ ### 工作原理:快速了解
88
+
89
+ 这是一个设置登录流程的最小示例。应用程序被包裹在 `SessionProvider` 中,并使用 `Button` 来切换 `DidConnect` 模态框的显示。
90
+
91
+ ```jsx App.js icon=logos:react
92
+ import React from 'react';
93
+ import axios from 'axios';
94
+ import { SessionProvider, SessionConsumer } from '@arcblock/did-connect-react/lib/Session';
95
+ import DidConnect from '@arcblock/did-connect-react/lib/Connect';
96
+ import Button from '@arcblock/did-connect-react/lib/Button';
97
+
98
+ const webWalletUrl = 'https://web.abtwallet.io/';
99
+
100
+ function App() {
101
+ const [isConnectOpen, setConnectOpen] = React.useState(false);
102
+
103
+ const handleClose = () => setConnectOpen(false);
104
+ const handleSuccess = () => {
105
+ // 登录成功后重定向或更新 UI
106
+ window.location.reload();
107
+ };
108
+
109
+ return (
110
+ <SessionProvider serviceHost="/">
111
+ <div className="main-content">
112
+ <SessionConsumer>
113
+ {({ session }) => {
114
+ if (session.loading) {
115
+ return <div>正在加载会话...</div>;
116
+ }
117
+
118
+ return session.user ? (
119
+ <div>
120
+ <h2>欢迎,{session.user.did}!</h2>
121
+ <button onClick={() => session.logout()}>登出</button>
122
+ </div>
123
+ ) : (
124
+ <Button onClick={() => setConnectOpen(true)}>连接钱包</Button>
125
+ );
126
+ }}
127
+ </SessionConsumer>
128
+ </div>
129
+
130
+ <DidConnect
131
+ popup
132
+ open={isConnectOpen}
133
+ action="login"
134
+ checkFn={axios.get}
135
+ onClose={handleClose}
136
+ onSuccess={handleSuccess}
137
+ messages={{
138
+ title: '登录我的应用',
139
+ scan: '请使用您的 DID 钱包扫描二维码',
140
+ confirm: '请在您的钱包上确认登录',
141
+ success: '您已成功登录!',
142
+ }}
143
+ webWalletUrl={webWalletUrl}
144
+ />
145
+ </SessionProvider>
146
+ );
147
+ }
148
+
149
+ export default App;
150
+ ```
151
+
152
+ 这个例子展示了如何仅用几个组件来管理用户会话和触发登录过程。
153
+
154
+ ### 后续步骤
155
+
156
+ 现在您对该库有了基本的了解,可以准备进行更深入的探索了。
157
+
158
+ <x-card data-title="开始使用" data-href="/getting-started" data-icon="lucide:rocket" data-cta="开始构建">
159
+ 跟随我们的分步指南,从头开始将 DID Connect 集成到您自己的应用程序中。
160
+ </x-card>
@@ -0,0 +1,121 @@
1
+ # Address
2
+
3
+ `Address`コンポーネントは、分散型識別子(DID)アドレスをクリーンで読みやすく、ユーザーフレンドリーな形式で表示するために設計された特殊なUI要素です。DIDに典型的な長い文字列を、短縮や簡単なコピーのオプションを提供することで賢く処理し、全体的なユーザーエクスペリエンスを向上させます。
4
+
5
+ このコンポーネントは`@arcblock/ux/lib/Address`からの単純な再エクスポートであり、DID Connectエコシステム内でアドレスを表示するための一貫した方法を提供します。
6
+
7
+ ## インポート方法
8
+
9
+ `Address`コンポーネントを使用するには、ライブラリ内の特定のモジュールパスからインポートします。
10
+
11
+ ```javascript Import icon=logos:javascript
12
+ import Address from '@arcblock/did-connect-react/lib/Address';
13
+ ```
14
+
15
+ ## 基本的な使用法
16
+
17
+ コンポーネントにDID文字列を子として渡すだけで、完全なアドレスをレンダリングできます。
18
+
19
+ ```jsx Basic Address Display icon=logos:react
20
+ import React from 'react';
21
+ import Address from '@arcblock/did-connect-react/lib/Address';
22
+
23
+ function UserProfile() {
24
+ const userDid = 'z1Zg2a5Vw2fA2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t';
25
+
26
+ return (
27
+ <div>
28
+ <h4>User DID:</h4>
29
+ <Address>{userDid}</Address>
30
+ </div>
31
+ );
32
+ }
33
+ ```
34
+
35
+ ## 機能
36
+
37
+ `Address`コンポーネントには、使いやすさを向上させるためのいくつかの便利な機能が含まれています。
38
+
39
+ ### 短縮
40
+
41
+ 長いDIDはUIを乱雑にする可能性があります。`shorten`プロパティを使用して、アドレスの短縮版を表示し、先頭と末尾の文字のみを表示します。これは、リストやコンパクトなプロファイルビューに不可欠です。
42
+
43
+ ### クリップボードにコピー
44
+
45
+ `copyable`プロパティを追加すると、コンポーネントはアドレスの横にコピーアイコンをレンダリングします。このアイコンをクリックすると、完全なDIDがユーザーのクリップボードにコピーされ、便利なワンクリックアクションが提供されます。
46
+
47
+ ## Props
48
+
49
+ `Address`コンポーネントは以下のpropsを受け入れます:
50
+
51
+ <x-field-group>
52
+ <x-field data-name="children" data-type="string" data-required="true">
53
+ <x-field-desc markdown>表示したいDIDアドレス文字列。</x-field-desc>
54
+ </x-field>
55
+ <x-field data-name="shorten" data-type="boolean" data-default="false" data-required="false">
56
+ <x-field-desc markdown>`true`の場合、アドレスはよりコンパクトな形式(例:`z1Zg2a...s0t`)に短縮されます。</x-field-desc>
57
+ </x-field>
58
+ <x-field data-name="copyable" data-type="boolean" data-default="false" data-required="false">
59
+ <x-field-desc markdown>`true`の場合、コピーアイコンが表示され、ユーザーはワンクリックで完全なアドレスをクリップボードにコピーできます。</x-field-desc>
60
+ </x-field>
61
+ <x-field data-name="responsive" data-type="boolean" data-default="true" data-required="false">
62
+ <x-field-desc markdown>`true`の場合、コンポーネントは利用可能な幅に基づいてアドレスを自動的に短縮し、レイアウトを崩さずにコンテナ内に収まるようにします。</x-field-desc>
63
+ </x-field>
64
+ </x-field-group>
65
+
66
+ ## 例
67
+
68
+ 以下は`Address`コンポーネントの一般的な使用例です。
69
+
70
+ ### 短縮およびコピー可能なアドレス
71
+
72
+ これは最も一般的な設定で、ほとんどのUIに適したコンパクトで機能的な表示を提供します。
73
+
74
+ ```jsx Shortened and Copyable icon=logos:react
75
+ import React from 'react';
76
+ import Address from '@arcblock/did-connect-react/lib/Address';
77
+
78
+ function UserCard({ did }) {
79
+ return (
80
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
81
+ <span>DID:</span>
82
+ <Address shorten copyable>
83
+ {did}
84
+ </Address>
85
+ </div>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ### Avatarとの使用
91
+
92
+ `Address`コンポーネントは、`Avatar`コンポーネントと並行して使用することで、ユーザープロファイル要素を構築するのに最適です。
93
+
94
+ ```jsx Profile Header icon=logos:react
95
+ import React from 'react';
96
+ import Address from '@arcblock/did-connect-react/lib/Address';
97
+ import Avatar from '@arcblock/did-connect-react/lib/Avatar';
98
+ import { useSession } from '@arcblock/did-connect-react';
99
+
100
+ function ProfileHeader() {
101
+ const { session } = useSession();
102
+
103
+ if (!session.user) {
104
+ return <p>Please log in.</p>;
105
+ }
106
+
107
+ return (
108
+ <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
109
+ <Avatar did={session.user.did} />
110
+ <div>
111
+ <strong>{session.user.name}</strong>
112
+ <Address shorten copyable>
113
+ {session.user.did}
114
+ </Address>
115
+ </div>
116
+ </div>
117
+ );
118
+ }
119
+ ```
120
+
121
+ ユーザーアドレスの表示方法を学んだので、次はプロフィール写真の表示方法を学びたいかもしれません。[Avatar](./ui-components-avatar.md)コンポーネントのドキュメントで詳細を確認してください。
@@ -0,0 +1,121 @@
1
+ # Address
2
+
3
+ The `Address` component is a specialized UI element designed to display Decentralized Identifier (DID) addresses in a clean, readable, and user-friendly format. It intelligently handles the long strings typical of DIDs by providing options for shortening and easy copying, enhancing the overall user experience.
4
+
5
+ This component is a simple re-export from `@arcblock/ux/lib/Address`, providing a consistent way to display addresses within the DID Connect ecosystem.
6
+
7
+ ## How to Import
8
+
9
+ To use the `Address` component, import it from its specific module path within the library.
10
+
11
+ ```javascript Import icon=logos:javascript
12
+ import Address from '@arcblock/did-connect-react/lib/Address';
13
+ ```
14
+
15
+ ## Basic Usage
16
+
17
+ Simply pass the DID string as a child to the component to render the full address.
18
+
19
+ ```jsx Basic Address Display icon=logos:react
20
+ import React from 'react';
21
+ import Address from '@arcblock/did-connect-react/lib/Address';
22
+
23
+ function UserProfile() {
24
+ const userDid = 'z1Zg2a5Vw2fA2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t';
25
+
26
+ return (
27
+ <div>
28
+ <h4>User DID:</h4>
29
+ <Address>{userDid}</Address>
30
+ </div>
31
+ );
32
+ }
33
+ ```
34
+
35
+ ## Features
36
+
37
+ The `Address` component includes several helpful features to improve usability.
38
+
39
+ ### Shortening
40
+
41
+ Long DIDs can clutter the UI. Use the `shorten` prop to display a truncated version of the address, showing only the beginning and end characters. This is essential for lists or compact profile views.
42
+
43
+ ### Copy to Clipboard
44
+
45
+ By adding the `copyable` prop, the component will render a copy icon next to the address. Clicking this icon copies the full DID to the user's clipboard, providing a convenient one-click action.
46
+
47
+ ## Props
48
+
49
+ The `Address` component accepts the following props:
50
+
51
+ <x-field-group>
52
+ <x-field data-name="children" data-type="string" data-required="true">
53
+ <x-field-desc markdown>The DID address string that you want to display.</x-field-desc>
54
+ </x-field>
55
+ <x-field data-name="shorten" data-type="boolean" data-default="false" data-required="false">
56
+ <x-field-desc markdown>If `true`, the address will be shortened to a more compact format (e.g., `z1Zg2a...s0t`).</x-field-desc>
57
+ </x-field>
58
+ <x-field data-name="copyable" data-type="boolean" data-default="false" data-required="false">
59
+ <x-field-desc markdown>If `true`, a copy icon is displayed, allowing users to copy the full address to their clipboard with a single click.</x-field-desc>
60
+ </x-field>
61
+ <x-field data-name="responsive" data-type="boolean" data-default="true" data-required="false">
62
+ <x-field-desc markdown>When `true`, the component will automatically shorten the address based on the available width, ensuring it fits within its container without breaking the layout.</x-field-desc>
63
+ </x-field>
64
+ </x-field-group>
65
+
66
+ ## Examples
67
+
68
+ Here are some common use cases for the `Address` component.
69
+
70
+ ### Shortened and Copyable Address
71
+
72
+ This is the most common configuration, providing a compact and functional display suitable for most UIs.
73
+
74
+ ```jsx Shortened and Copyable icon=logos:react
75
+ import React from 'react';
76
+ import Address from '@arcblock/did-connect-react/lib/Address';
77
+
78
+ function UserCard({ did }) {
79
+ return (
80
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
81
+ <span>DID:</span>
82
+ <Address shorten copyable>
83
+ {did}
84
+ </Address>
85
+ </div>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ### Usage with Avatar
91
+
92
+ The `Address` component works great alongside the `Avatar` component to build user profile elements.
93
+
94
+ ```jsx Profile Header icon=logos:react
95
+ import React from 'react';
96
+ import Address from '@arcblock/did-connect-react/lib/Address';
97
+ import Avatar from '@arcblock/did-connect-react/lib/Avatar';
98
+ import { useSession } from '@arcblock/did-connect-react';
99
+
100
+ function ProfileHeader() {
101
+ const { session } = useSession();
102
+
103
+ if (!session.user) {
104
+ return <p>Please log in.</p>;
105
+ }
106
+
107
+ return (
108
+ <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
109
+ <Avatar did={session.user.did} />
110
+ <div>
111
+ <strong>{session.user.name}</strong>
112
+ <Address shorten copyable>
113
+ {session.user.did}
114
+ </Address>
115
+ </div>
116
+ </div>
117
+ );
118
+ }
119
+ ```
120
+
121
+ Now that you know how to display user addresses, you might want to learn how to display their profile pictures. Check out the [Avatar](./ui-components-avatar.md) component documentation for more details.
@@ -0,0 +1,121 @@
1
+ # Address
2
+
3
+ `Address` 元件是一個專門的 UI 元素,旨在以清晰、可讀且使用者友善的格式顯示去中心化識別碼 (DID) 位址。它透過提供縮短和輕鬆複製的選項,智慧地處理 DID 常見的長字串,從而提升整體使用者體驗。
4
+
5
+ 此元件是從 `@arcblock/ux/lib/Address` 簡單地重新匯出,提供在 DID Connect 生態系統內顯示位址的一致方式。
6
+
7
+ ## 如何匯入
8
+
9
+ 若要使用 `Address` 元件,請從其在函式庫中的特定模組路徑匯入。
10
+
11
+ ```javascript Import icon=logos:javascript
12
+ import Address from '@arcblock/did-connect-react/lib/Address';
13
+ ```
14
+
15
+ ## 基本用法
16
+
17
+ 只需將 DID 字串作為子項傳遞給元件,即可渲染完整的位址。
18
+
19
+ ```jsx Basic Address Display icon=logos:react
20
+ import React from 'react';
21
+ import Address from '@arcblock/did-connect-react/lib/Address';
22
+
23
+ function UserProfile() {
24
+ const userDid = 'z1Zg2a5Vw2fA2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0t';
25
+
26
+ return (
27
+ <div>
28
+ <h4>User DID:</h4>
29
+ <Address>{userDid}</Address>
30
+ </div>
31
+ );
32
+ }
33
+ ```
34
+
35
+ ## 功能
36
+
37
+ `Address` 元件包含多個實用功能以提升可用性。
38
+
39
+ ### 縮短
40
+
41
+ 長 DID 可能會使 UI 變得混亂。使用 `shorten` 屬性可顯示位址的截斷版本,僅顯示開頭和結尾的字元。這對於列表或緊湊的個人資料視圖至關重要。
42
+
43
+ ### 複製到剪貼簿
44
+
45
+ 透過新增 `copyable` 屬性,元件將在位址旁渲染一個複製圖示。點擊此圖示會將完整的 DID 複製到使用者的剪貼簿,提供方便的一鍵操作。
46
+
47
+ ## 屬性
48
+
49
+ `Address` 元件接受以下屬性:
50
+
51
+ <x-field-group>
52
+ <x-field data-name="children" data-type="string" data-required="true">
53
+ <x-field-desc markdown>您想顯示的 DID 位址字串。</x-field-desc>
54
+ </x-field>
55
+ <x-field data-name="shorten" data-type="boolean" data-default="false" data-required="false">
56
+ <x-field-desc markdown>若為 `true`,位址將被縮短為更緊湊的格式 (例如,`z1Zg2a...s0t`)。</x-field-desc>
57
+ </x-field>
58
+ <x-field data-name="copyable" data-type="boolean" data-default="false" data-required="false">
59
+ <x-field-desc markdown>若為 `true`,將顯示一個複製圖示,讓使用者可以一鍵將完整的位址複製到剪貼簿。</x-field-desc>
60
+ </x-field>
61
+ <x-field data-name="responsive" data-type="boolean" data-default="true" data-required="false">
62
+ <x-field-desc markdown>當為 `true` 時,元件將根據可用寬度自動縮短位址,確保它能適應其容器而不會破壞佈局。</x-field-desc>
63
+ </x-field>
64
+ </x-field-group>
65
+
66
+ ## 範例
67
+
68
+ 以下是 `Address` 元件的一些常見用例。
69
+
70
+ ### 縮短且可複製的位址
71
+
72
+ 這是最常見的配置,提供適合大多數 UI 的緊湊且功能性的顯示。
73
+
74
+ ```jsx Shortened and Copyable icon=logos:react
75
+ import React from 'react';
76
+ import Address from '@arcblock/did-connect-react/lib/Address';
77
+
78
+ function UserCard({ did }) {
79
+ return (
80
+ <div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
81
+ <span>DID:</span>
82
+ <Address shorten copyable>
83
+ {did}
84
+ </Address>
85
+ </div>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ### 與 Avatar 一起使用
91
+
92
+ `Address` 元件可與 `Avatar` 元件完美搭配,以建構使用者個人資料元素。
93
+
94
+ ```jsx Profile Header icon=logos:react
95
+ import React from 'react';
96
+ import Address from '@arcblock/did-connect-react/lib/Address';
97
+ import Avatar from '@arcblock/did-connect-react/lib/Avatar';
98
+ import { useSession } from '@arcblock/did-connect-react';
99
+
100
+ function ProfileHeader() {
101
+ const { session } = useSession();
102
+
103
+ if (!session.user) {
104
+ return <p>Please log in.</p>;
105
+ }
106
+
107
+ return (
108
+ <div style={{ display: 'flex', alignItems: 'center', gap: '12px' }}>
109
+ <Avatar did={session.user.did} />
110
+ <div>
111
+ <strong>{session.user.name}</strong>
112
+ <Address shorten copyable>
113
+ {session.user.did}
114
+ </Address>
115
+ </div>
116
+ </div>
117
+ );
118
+ }
119
+ ```
120
+
121
+ 現在您已經知道如何顯示使用者位址,您可能會想學習如何顯示他們的個人資料圖片。請查閱 [Avatar](./ui-components-avatar.md) 元件文件以獲取更多詳細資訊。