@blocklet/ui-react 3.4.15 → 3.5.0

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 (255) hide show
  1. package/lib/common/org-switch/use-org.d.ts +4 -4
  2. package/package.json +9 -6
  3. package/.aigne/doc-smith/.local/afs-storage.sqlite3 +0 -0
  4. package/.aigne/doc-smith/config.yaml +0 -78
  5. package/.aigne/doc-smith/history.yaml +0 -14
  6. package/.aigne/doc-smith/media-description.yaml +0 -11
  7. package/.aigne/doc-smith/output/structure-plan.json +0 -255
  8. package/.aigne/doc-smith/translation-cache.yaml +0 -11
  9. package/.aigne/doc-smith/upload-cache.yaml +0 -528
  10. package/build.config.ts +0 -24
  11. package/docs/_sidebar.md +0 -19
  12. package/docs/assets/diagram/component-installer-diagram-0.ja.jpg +0 -0
  13. package/docs/assets/diagram/component-installer-diagram-0.jpg +0 -0
  14. package/docs/assets/diagram/component-installer-diagram-0.zh-TW.jpg +0 -0
  15. package/docs/assets/diagram/component-installer-diagram-0.zh.jpg +0 -0
  16. package/docs/assets/diagram/component-management-diagram-0.ja.jpg +0 -0
  17. package/docs/assets/diagram/component-management-diagram-0.jpg +0 -0
  18. package/docs/assets/diagram/component-management-diagram-0.zh-TW.jpg +0 -0
  19. package/docs/assets/diagram/component-management-diagram-0.zh.jpg +0 -0
  20. package/docs/assets/diagram/core-concepts-diagram-0.ja.jpg +0 -0
  21. package/docs/assets/diagram/core-concepts-diagram-0.jpg +0 -0
  22. package/docs/assets/diagram/core-concepts-diagram-0.zh-TW.jpg +0 -0
  23. package/docs/assets/diagram/core-concepts-diagram-0.zh.jpg +0 -0
  24. package/docs/assets/diagram/dashboard-diagram-0.ja.jpg +0 -0
  25. package/docs/assets/diagram/dashboard-diagram-0.jpg +0 -0
  26. package/docs/assets/diagram/dashboard-diagram-0.zh-TW.jpg +0 -0
  27. package/docs/assets/diagram/dashboard-diagram-0.zh.jpg +0 -0
  28. package/docs/assets/diagram/header-diagram-0.ja.jpg +0 -0
  29. package/docs/assets/diagram/header-diagram-0.jpg +0 -0
  30. package/docs/assets/diagram/header-diagram-0.zh-TW.jpg +0 -0
  31. package/docs/assets/diagram/header-diagram-0.zh.jpg +0 -0
  32. package/docs/assets/diagram/layout-diagram-0.ja.jpg +0 -0
  33. package/docs/assets/diagram/layout-diagram-0.jpg +0 -0
  34. package/docs/assets/diagram/layout-diagram-0.zh-TW.jpg +0 -0
  35. package/docs/assets/diagram/layout-diagram-0.zh.jpg +0 -0
  36. package/docs/assets/diagram/notifications-diagram-0.ja.jpg +0 -0
  37. package/docs/assets/diagram/notifications-diagram-0.jpg +0 -0
  38. package/docs/assets/diagram/notifications-diagram-0.zh-TW.jpg +0 -0
  39. package/docs/assets/diagram/notifications-diagram-0.zh.jpg +0 -0
  40. package/docs/assets/diagram/overview-diagram-0.ja.jpg +0 -0
  41. package/docs/assets/diagram/overview-diagram-0.jpg +0 -0
  42. package/docs/assets/diagram/overview-diagram-0.zh-TW.jpg +0 -0
  43. package/docs/assets/diagram/overview-diagram-0.zh.jpg +0 -0
  44. package/docs/assets/diagram/user-center-diagram-0.ja.jpg +0 -0
  45. package/docs/assets/diagram/user-center-diagram-0.jpg +0 -0
  46. package/docs/assets/diagram/user-center-diagram-0.zh-TW.jpg +0 -0
  47. package/docs/assets/diagram/user-center-diagram-0.zh.jpg +0 -0
  48. package/docs/assets/diagram/user-management-diagram-0.ja.jpg +0 -0
  49. package/docs/assets/diagram/user-management-diagram-0.jpg +0 -0
  50. package/docs/assets/diagram/user-management-diagram-0.zh-TW.jpg +0 -0
  51. package/docs/assets/diagram/user-management-diagram-0.zh.jpg +0 -0
  52. package/docs/assets/diagram/user-sessions-diagram-0.ja.jpg +0 -0
  53. package/docs/assets/diagram/user-sessions-diagram-0.jpg +0 -0
  54. package/docs/assets/diagram/user-sessions-diagram-0.zh-TW.jpg +0 -0
  55. package/docs/assets/diagram/user-sessions-diagram-0.zh.jpg +0 -0
  56. package/docs/components-component-management-blocklet-studio.ja.md +0 -194
  57. package/docs/components-component-management-blocklet-studio.md +0 -194
  58. package/docs/components-component-management-blocklet-studio.zh-TW.md +0 -194
  59. package/docs/components-component-management-blocklet-studio.zh.md +0 -194
  60. package/docs/components-component-management-component-installer.ja.md +0 -182
  61. package/docs/components-component-management-component-installer.md +0 -182
  62. package/docs/components-component-management-component-installer.zh-TW.md +0 -182
  63. package/docs/components-component-management-component-installer.zh.md +0 -182
  64. package/docs/components-component-management.ja.md +0 -30
  65. package/docs/components-component-management.md +0 -30
  66. package/docs/components-component-management.zh-TW.md +0 -30
  67. package/docs/components-component-management.zh.md +0 -30
  68. package/docs/components-layout-dashboard.ja.md +0 -185
  69. package/docs/components-layout-dashboard.md +0 -187
  70. package/docs/components-layout-dashboard.zh-TW.md +0 -185
  71. package/docs/components-layout-dashboard.zh.md +0 -185
  72. package/docs/components-layout-footer.ja.md +0 -165
  73. package/docs/components-layout-footer.md +0 -165
  74. package/docs/components-layout-footer.zh-TW.md +0 -165
  75. package/docs/components-layout-footer.zh.md +0 -165
  76. package/docs/components-layout-header.ja.md +0 -183
  77. package/docs/components-layout-header.md +0 -183
  78. package/docs/components-layout-header.zh-TW.md +0 -183
  79. package/docs/components-layout-header.zh.md +0 -183
  80. package/docs/components-layout.ja.md +0 -31
  81. package/docs/components-layout.md +0 -31
  82. package/docs/components-layout.zh-TW.md +0 -31
  83. package/docs/components-layout.zh.md +0 -31
  84. package/docs/components-notifications.ja.md +0 -125
  85. package/docs/components-notifications.md +0 -125
  86. package/docs/components-notifications.zh-TW.md +0 -125
  87. package/docs/components-notifications.zh.md +0 -125
  88. package/docs/components-user-management-user-center.ja.md +0 -148
  89. package/docs/components-user-management-user-center.md +0 -147
  90. package/docs/components-user-management-user-center.zh-TW.md +0 -148
  91. package/docs/components-user-management-user-center.zh.md +0 -148
  92. package/docs/components-user-management-user-sessions.ja.md +0 -121
  93. package/docs/components-user-management-user-sessions.md +0 -123
  94. package/docs/components-user-management-user-sessions.zh-TW.md +0 -121
  95. package/docs/components-user-management-user-sessions.zh.md +0 -121
  96. package/docs/components-user-management.ja.md +0 -49
  97. package/docs/components-user-management.md +0 -51
  98. package/docs/components-user-management.zh-TW.md +0 -49
  99. package/docs/components-user-management.zh.md +0 -49
  100. package/docs/components-utilities-icon.ja.md +0 -106
  101. package/docs/components-utilities-icon.md +0 -106
  102. package/docs/components-utilities-icon.zh-TW.md +0 -106
  103. package/docs/components-utilities-icon.zh.md +0 -106
  104. package/docs/components-utilities.ja.md +0 -136
  105. package/docs/components-utilities.md +0 -136
  106. package/docs/components-utilities.zh-TW.md +0 -136
  107. package/docs/components-utilities.zh.md +0 -136
  108. package/docs/components.ja.md +0 -27
  109. package/docs/components.md +0 -27
  110. package/docs/components.zh-TW.md +0 -27
  111. package/docs/components.zh.md +0 -27
  112. package/docs/core-concepts.ja.md +0 -134
  113. package/docs/core-concepts.md +0 -135
  114. package/docs/core-concepts.zh-TW.md +0 -134
  115. package/docs/core-concepts.zh.md +0 -134
  116. package/docs/getting-started.ja.md +0 -132
  117. package/docs/getting-started.md +0 -132
  118. package/docs/getting-started.zh-TW.md +0 -132
  119. package/docs/getting-started.zh.md +0 -132
  120. package/docs/hooks-api.ja.md +0 -214
  121. package/docs/hooks-api.md +0 -214
  122. package/docs/hooks-api.zh-TW.md +0 -214
  123. package/docs/hooks-api.zh.md +0 -214
  124. package/docs/how-to-guides.ja.md +0 -413
  125. package/docs/how-to-guides.md +0 -413
  126. package/docs/how-to-guides.zh-TW.md +0 -413
  127. package/docs/how-to-guides.zh.md +0 -413
  128. package/docs/overview.ja.md +0 -51
  129. package/docs/overview.md +0 -51
  130. package/docs/overview.zh-TW.md +0 -51
  131. package/docs/overview.zh.md +0 -51
  132. package/glossary.md +0 -12
  133. package/src/@types/index.ts +0 -230
  134. package/src/@types/shims.d.ts +0 -18
  135. package/src/BlockletStudio/README.md +0 -116
  136. package/src/BlockletStudio/index.tsx +0 -145
  137. package/src/ComponentInstaller/ComponentInstaller.stories.jsx +0 -16
  138. package/src/ComponentInstaller/index.jsx +0 -207
  139. package/src/ComponentInstaller/installer-item.jsx +0 -129
  140. package/src/ComponentInstaller/locales.js +0 -22
  141. package/src/ComponentInstaller/use-component-installed.js +0 -88
  142. package/src/ComponentManager/components/add-component.tsx +0 -136
  143. package/src/ComponentManager/components/check-component.tsx +0 -3
  144. package/src/ComponentManager/components/publish-component.tsx +0 -90
  145. package/src/ComponentManager/components/resource-dialog.tsx +0 -91
  146. package/src/ComponentManager/index.tsx +0 -3
  147. package/src/ComponentManager/libs/locales.ts +0 -15
  148. package/src/Dashboard/Dashboard.stories.jsx +0 -20
  149. package/src/Dashboard/app-shell/app-badge.stories.tsx +0 -64
  150. package/src/Dashboard/app-shell/app-badge.tsx +0 -94
  151. package/src/Dashboard/app-shell/app-header.tsx +0 -104
  152. package/src/Dashboard/app-shell/app-info-context.tsx +0 -182
  153. package/src/Dashboard/app-shell/badges/app-badge-default.tsx +0 -130
  154. package/src/Dashboard/app-shell/badges/app-badge-did.tsx +0 -28
  155. package/src/Dashboard/app-shell/badges/app-badge-state.tsx +0 -40
  156. package/src/Dashboard/app-shell/badges/app-badge-switch.tsx +0 -72
  157. package/src/Dashboard/app-shell/badges/app-badge-version.tsx +0 -60
  158. package/src/Dashboard/app-shell/index.ts +0 -5
  159. package/src/Dashboard/index.jsx +0 -184
  160. package/src/Footer/Footer.stories.jsx +0 -33
  161. package/src/Footer/brand.jsx +0 -81
  162. package/src/Footer/copyright.jsx +0 -22
  163. package/src/Footer/index.jsx +0 -111
  164. package/src/Footer/internal-footer.jsx +0 -139
  165. package/src/Footer/layout/plain.jsx +0 -55
  166. package/src/Footer/layout/row.jsx +0 -43
  167. package/src/Footer/layout/standard.jsx +0 -114
  168. package/src/Footer/links.jsx +0 -321
  169. package/src/Footer/social-media.jsx +0 -55
  170. package/src/Header/Header.stories.jsx +0 -30
  171. package/src/Header/index.tsx +0 -259
  172. package/src/Icon/Icon.stories.jsx +0 -12
  173. package/src/Icon/index.tsx +0 -87
  174. package/src/Notifications/Snackbar.tsx +0 -261
  175. package/src/Notifications/hooks/use-title.tsx +0 -254
  176. package/src/Notifications/hooks/use-width.tsx +0 -16
  177. package/src/Notifications/utils.ts +0 -246
  178. package/src/UserCenter/assets/banner.png +0 -0
  179. package/src/UserCenter/components/config-inviter.tsx +0 -48
  180. package/src/UserCenter/components/config-profile.tsx +0 -99
  181. package/src/UserCenter/components/danger-zone.tsx +0 -82
  182. package/src/UserCenter/components/editable-field.tsx +0 -273
  183. package/src/UserCenter/components/fallback.tsx +0 -57
  184. package/src/UserCenter/components/nft-preview.tsx +0 -84
  185. package/src/UserCenter/components/nft.tsx +0 -279
  186. package/src/UserCenter/components/notification.tsx +0 -319
  187. package/src/UserCenter/components/passport.tsx +0 -107
  188. package/src/UserCenter/components/privacy.tsx +0 -120
  189. package/src/UserCenter/components/settings.tsx +0 -170
  190. package/src/UserCenter/components/status-dialog/date-picker.tsx +0 -77
  191. package/src/UserCenter/components/status-dialog/index.tsx +0 -293
  192. package/src/UserCenter/components/status-selector/duration-menu.tsx +0 -90
  193. package/src/UserCenter/components/status-selector/index.tsx +0 -58
  194. package/src/UserCenter/components/status-selector/menu-item.tsx +0 -56
  195. package/src/UserCenter/components/storage/action.tsx +0 -49
  196. package/src/UserCenter/components/storage/connected.tsx +0 -61
  197. package/src/UserCenter/components/storage/delete.tsx +0 -72
  198. package/src/UserCenter/components/storage/disconnect.tsx +0 -40
  199. package/src/UserCenter/components/storage/icons/empty-spaces-nft.svg +0 -1
  200. package/src/UserCenter/components/storage/icons/long-arrow.svg +0 -5
  201. package/src/UserCenter/components/storage/icons/space-connected.svg +0 -3
  202. package/src/UserCenter/components/storage/icons/space-disconnect.svg +0 -3
  203. package/src/UserCenter/components/storage/index.tsx +0 -41
  204. package/src/UserCenter/components/storage/preview-nft.tsx +0 -72
  205. package/src/UserCenter/components/third-party-login/index.tsx +0 -199
  206. package/src/UserCenter/components/third-party-login/third-party-item.tsx +0 -296
  207. package/src/UserCenter/components/user-center.tsx +0 -787
  208. package/src/UserCenter/components/user-info/address.tsx +0 -143
  209. package/src/UserCenter/components/user-info/index.tsx +0 -4
  210. package/src/UserCenter/components/user-info/link-preview-input.tsx +0 -274
  211. package/src/UserCenter/components/user-info/metadata.tsx +0 -658
  212. package/src/UserCenter/components/user-info/social-actions/chat.tsx +0 -43
  213. package/src/UserCenter/components/user-info/social-actions/follow.tsx +0 -23
  214. package/src/UserCenter/components/user-info/social-actions/index.tsx +0 -17
  215. package/src/UserCenter/components/user-info/switch-role.tsx +0 -42
  216. package/src/UserCenter/components/user-info/timezone-select.tsx +0 -119
  217. package/src/UserCenter/components/user-info/user-basic-info.tsx +0 -292
  218. package/src/UserCenter/components/user-info/user-info-item.tsx +0 -54
  219. package/src/UserCenter/components/user-info/user-info.tsx +0 -91
  220. package/src/UserCenter/components/user-info/user-status.tsx +0 -234
  221. package/src/UserCenter/components/user-info/utils.ts +0 -320
  222. package/src/UserCenter/components/webhook-item.tsx +0 -248
  223. package/src/UserCenter/index.tsx +0 -1
  224. package/src/UserCenter/libs/locales.ts +0 -378
  225. package/src/UserCenter/libs/utils.ts +0 -30
  226. package/src/UserSessions/components/user-session-info.tsx +0 -78
  227. package/src/UserSessions/components/user-sessions.tsx +0 -545
  228. package/src/UserSessions/index.tsx +0 -1
  229. package/src/UserSessions/libs/locales.ts +0 -60
  230. package/src/UserSessions/libs/utils.ts +0 -82
  231. package/src/blocklets.js +0 -195
  232. package/src/common/domain-warning.jsx +0 -178
  233. package/src/common/header-addons.jsx +0 -119
  234. package/src/common/link-blocker.jsx +0 -20
  235. package/src/common/notification-addon.jsx +0 -135
  236. package/src/common/org-switch/avatar-uploader.jsx +0 -271
  237. package/src/common/org-switch/create.jsx +0 -267
  238. package/src/common/org-switch/index.jsx +0 -407
  239. package/src/common/org-switch/locales.js +0 -52
  240. package/src/common/org-switch/use-org.jsx +0 -79
  241. package/src/common/overridable-theme-provider.jsx +0 -17
  242. package/src/common/wallet-hidden-topbar.js +0 -14
  243. package/src/common/wizard-modal.jsx +0 -200
  244. package/src/common/ws.js +0 -68
  245. package/src/contexts/config-user-space.tsx +0 -88
  246. package/src/contexts/user-followers.tsx +0 -54
  247. package/src/hooks/use-follow.tsx +0 -75
  248. package/src/hooks/use-mobile.tsx +0 -6
  249. package/src/index.ts +0 -16
  250. package/src/libs/constant.ts +0 -1
  251. package/src/libs/spaces.tsx +0 -18
  252. package/src/libs/with-hide-when-embed.tsx +0 -24
  253. package/src/types.js +0 -45
  254. package/src/utils.js +0 -161
  255. package/vite.config.mjs +0 -34
@@ -1,121 +0,0 @@
1
- # UserSessions
2
-
3
- `UserSessions` コンポーネントは、ユーザーのログインセッションを表示および管理するための包括的なデータテーブルをレンダリングします。さまざまなデバイスにわたるすべてのアクティブ、期限切れ、オフラインのセッションの明確な概要を提供し、ユーザーがアカウントのセキュリティを管理できるようにします。
4
-
5
- このコンポーネントは、セッション管理機能を実装する必要がある開発者向けのプラグアンドプレイソリューションとして設計されています。データの取得、ページネーション、UIのレンダリング、および特定のセッションからのログアウトなどのアクションを処理します。
6
-
7
- ## 機能
8
-
9
- - **セッションのフィルタリング:** ユーザーはセッションをステータス(`online`、`expired`、または `offline`)で簡単にフィルタリングできます。
10
- - **詳細情報:** 各セッションエントリには、オペレーティングシステム、デバイスタイプ(ブラウザ)、ウォレットOSなど、解析されたユーザーエージェントデータが表示されます。
11
- - **IPジオロケーション:** 最終ログインIPアドレスに基づいて地理的な地域を自動的に解決し、表示します。
12
- - **セッションの終了:** ユーザーは現在のセッションを除く任意のセッションを終了させることができます。
13
- - **一括操作:** 特定のステータスのすべてのセッションを終了させる「すべてログアウト」機能が含まれています。
14
- - **レスポンシブデザイン:** さまざまな画面サイズに適応し、デスクトップとモバイルデバイスの両方で一貫したユーザーエクスペリエンスを保証します。
15
-
16
- ## 仕組み
17
-
18
- `UserSessions` コンポーネントは、開発者が提供する関数からセッションデータを要求することによって動作します。この設計により、コンポーネントは特定のバックエンド実装から切り離され、より大きな柔軟性が提供されます。
19
-
20
- <!-- DIAGRAM_IMAGE_START:sequence:16:9:1765962229 -->
21
- ![UserSessions](assets/diagram/user-sessions-diagram-0.ja.jpg)
22
- <!-- DIAGRAM_IMAGE_END -->
23
-
24
- ## 使用方法
25
-
26
- `UserSessions` コンポーネントを使用するには、`user` オブジェクトと `getUserSessions` 関数を提供する必要があります。`getUserSessions` 関数は、バックエンドサービスからセッションデータを取得する役割を担います。
27
-
28
- ```javascript Integration Example icon=lucide:code
29
- import { UserSessions } from '@arcblock/blocklet-ui-react';
30
- import { client } from './libs/client'; // API クライアントインスタンス
31
-
32
- // セッションが表示される対象のユーザーオブジェクト。
33
- const currentUser = {
34
- did: 'z1...',
35
- name: 'Alice',
36
- // 他のユーザープロパティ
37
- };
38
-
39
- /**
40
- * この関数はバックエンドからセッションデータを取得します。
41
- * UserSessions コンポーネントは、新しいデータが必要になるたびにこの関数を呼び出します。
42
- *
43
- * @param {object} params - クエリパラメータ。
44
- * @param {number} params.page - 現在のページ番号。
45
- * @param {number} params.pageSize - ページごとのアイテム数。
46
- * @param {string} params.status - フィルタリングするセッションのステータス('online'、'expired'、'offline')。
47
- * @returns {Promise<{ list: UserSession[], paging: { total: number } }>} セッションデータに解決される Promise。
48
- */
49
- const fetchUserSessions = async ({ page, pageSize, status }) => {
50
- const response = await client.user.getSessions({
51
- page,
52
- pageSize,
53
- status,
54
- });
55
-
56
- // 返り値の形式がコンポーネントの要件と一致することを確認
57
- return {
58
- list: response?.list || [],
59
- paging: {
60
- total: response?.paging?.total || 0,
61
- },
62
- };
63
- };
64
-
65
- export default function MyAccountSessionsPage() {
66
- return (
67
- <div>
68
- <h2>ログインセッションの管理</h2>
69
- <UserSessions
70
- user={currentUser}
71
- getUserSessions={fetchUserSessions}
72
- />
73
- </div>
74
- );
75
- }
76
- ```
77
-
78
- ## Props
79
-
80
- `UserSessions` コンポーネントは、その動作と外観をカスタマイズするために以下の props を受け入れます。
81
-
82
- <x-field-group>
83
- <x-field data-name="user" data-type="User" data-required="true">
84
- <x-field-desc markdown>セッションが表示される対象のユーザーオブジェクト。コンポーネントは、セッションリストにコンテキストを提供するためにこれを必要とします。</x-field-desc>
85
- </x-field>
86
- <x-field data-name="getUserSessions" data-type="function" data-required="true">
87
- <x-field-desc markdown>バックエンドからページ分割されたセッションデータを取得する役割を担う非同期関数。`page`、`pageSize`、`status` を含むオブジェクトを受け取り、`{ list: UserSession[], paging: { total: number } }` という形式のオブジェクトに解決される `Promise` を返す必要があります。</x-field-desc>
88
- </x-field>
89
- <x-field data-name="showAction" data-type="boolean" data-default="true" data-required="false">
90
- <x-field-desc markdown>ログアウトボタンを含む「アクション」列の表示を制御します。`false` に設定すると、読み取り専用のビューが作成されます。</x-field-desc>
91
- </x-field>
92
- <x-field data-name="showUser" data-type="boolean" data-default="true" data-required="false">
93
- <x-field-desc markdown>「ユーザー」列の表示を制御します。これは、各セッションのユーザーを識別する必要があるマルチユーザーまたは管理コンテキストで役立ちます。</x-field-desc>
94
- </x-field>
95
- <x-field data-name="showOffline" data-type="boolean" data-default="false" data-required="false">
96
- <x-field-desc markdown>UIで「オフライン」フィルターオプションが利用可能かどうかを決定します。オフラインセッションは通常、現在アクティブではない長期間有効なセッションを表します。</x-field-desc>
97
- </x-field>
98
- <x-field data-name="showAppPid" data-type="boolean" data-default="false" data-required="false">
99
- <x-field-desc markdown>セッションに関連付けられた Blocklet のプログラム ID を表示できる「App Pid」列の表示を制御します。</x-field-desc>
100
- </x-field>
101
- </x-field-group>
102
-
103
- ## 表示情報
104
-
105
- このコンポーネントは、データテーブル内の各セッションについて以下の情報をレンダリングします。
106
-
107
- | 列 | 説明 |
108
- | :--- | :--- |
109
- | **プラットフォーム** | セッションのユーザーエージェント文字列から派生したオペレーティングシステムとバージョン(例:`Windows/10`)。 |
110
- | **デバイスタイプ** | セッションに使用されたブラウザまたはアプリケーション(例:`Chrome/108.0.0`)。 |
111
- | **ウォレットOS** | 接続されたDIDウォレットのオペレーティングシステム(利用可能な場合)。 |
112
- | **App Pid** | セッションを作成した Blocklet のプログラム ID。(`showAppPid` が `true` の場合に表示)。 |
113
- | **ユーザー** | セッションに関連付けられたユーザー。(`showUser` が `true` の場合に表示)。 |
114
- | **作成日時** | セッションが最初に作成されたときのタイムスタンプ。 |
115
- | **最終アクティブ** | 最後のアクティビティのタイムスタンプ。期限切れのセッションの場合、この列には「期限切れ」と表示されます。 |
116
- | **最終ログインIP** | セッションの最後に確認されたIPアドレスと、その解決された地理的な地域。 |
117
- | **アクション** | セッションからログアウトするためのボタンを提供します。(`showAction` が `true` の場合に表示)。 |
118
-
119
- ---
120
-
121
- 完全なユーザー管理インターフェースには、[UserCenter](./components-user-management-user-center.md) コンポーネント内で `UserSessions` コンポーネントを使用することを検討してください。
@@ -1,123 +0,0 @@
1
- # UserSessions
2
-
3
- The `UserSessions` component renders a comprehensive data table for displaying and managing a user's login sessions. It provides a clear overview of all active, expired, and offline sessions across various devices, giving users control over their account security.
4
-
5
- The component is designed to be a plug-and-play solution for developers needing to implement session management features. It handles data fetching, pagination, UI rendering, and actions like logging out of specific sessions.
6
-
7
- ## Features
8
-
9
- - **Session Filtering:** Users can easily filter sessions by their status: `online`, `expired`, or `offline`.
10
- - **Detailed Information:** Each session entry displays parsed user-agent data, including the operating system, device type (browser), and wallet OS.
11
- - **IP Geolocation:** Automatically resolves and displays the geographical region based on the last login IP address.
12
- - **Session Termination:** Allows users to terminate any session except the current one.
13
- - **Bulk Actions:** Includes a "Logout All" feature to terminate all sessions of a specific status.
14
- - **Responsive Design:** Adapts to different screen sizes, ensuring a consistent user experience on both desktop and mobile devices.
15
-
16
- ## How It Works
17
-
18
- The `UserSessions` component operates by requesting session data from a developer-provided function. This design decouples the component from any specific backend implementation, offering greater flexibility.
19
-
20
- The following diagram illustrates the interaction between the user, the component, and the application backend:
21
-
22
- <!-- DIAGRAM_IMAGE_START:sequence:16:9:1765962229 -->
23
- ![UserSessions](assets/diagram/user-sessions-diagram-0.jpg)
24
- <!-- DIAGRAM_IMAGE_END -->
25
-
26
- ## Usage
27
-
28
- To use the `UserSessions` component, you must provide a `user` object and a `getUserSessions` function. The `getUserSessions` function is responsible for fetching the session data from your backend service.
29
-
30
- ```javascript Integration Example icon=lucide:code
31
- import { UserSessions } from '@arcblock/blocklet-ui-react';
32
- import { client } from './libs/client'; // Your API client instance
33
-
34
- // The user object for whom sessions are being displayed.
35
- const currentUser = {
36
- did: 'z1...',
37
- name: 'Alice',
38
- // other user properties
39
- };
40
-
41
- /**
42
- * This function fetches session data from your backend.
43
- * The UserSessions component will call this function whenever it needs new data.
44
- *
45
- * @param {object} params - The query parameters.
46
- * @param {number} params.page - The current page number.
47
- * @param {number} params.pageSize - The number of items per page.
48
- * @param {string} params.status - The session status to filter by ('online', 'expired', 'offline').
49
- * @returns {Promise<{ list: UserSession[], paging: { total: number } }>} A promise that resolves to the session data.
50
- */
51
- const fetchUserSessions = async ({ page, pageSize, status }) => {
52
- const response = await client.user.getSessions({
53
- page,
54
- pageSize,
55
- status,
56
- });
57
-
58
- // Ensure the return format matches the component's requirements
59
- return {
60
- list: response?.list || [],
61
- paging: {
62
- total: response?.paging?.total || 0,
63
- },
64
- };
65
- };
66
-
67
- export default function MyAccountSessionsPage() {
68
- return (
69
- <div>
70
- <h2>Manage Your Login Sessions</h2>
71
- <UserSessions
72
- user={currentUser}
73
- getUserSessions={fetchUserSessions}
74
- />
75
- </div>
76
- );
77
- }
78
- ```
79
-
80
- ## Props
81
-
82
- The `UserSessions` component accepts the following props to customize its behavior and appearance.
83
-
84
- <x-field-group>
85
- <x-field data-name="user" data-type="User" data-required="true">
86
- <x-field-desc markdown>The user object for whom the sessions are being displayed. The component requires this to provide context for the session list.</x-field-desc>
87
- </x-field>
88
- <x-field data-name="getUserSessions" data-type="function" data-required="true">
89
- <x-field-desc markdown>An asynchronous function responsible for fetching paginated session data from your backend. It receives an object with `page`, `pageSize`, and `status` and must return a `Promise` that resolves to an object with the shape `{ list: UserSession[], paging: { total: number } }`.</x-field-desc>
90
- </x-field>
91
- <x-field data-name="showAction" data-type="boolean" data-default="true" data-required="false">
92
- <x-field-desc markdown>Controls the visibility of the "Actions" column, which contains the logout buttons. Set to `false` to create a read-only view.</x-field-desc>
93
- </x-field>
94
- <x-field data-name="showUser" data-type="boolean" data-default="true" data-required="false">
95
- <x-field-desc markdown>Controls the visibility of the "User" column. This is useful in multi-user or administrative contexts where identifying the user for each session is necessary.</x-field-desc>
96
- </x-field>
97
- <x-field data-name="showOffline" data-type="boolean" data-default="false" data-required="false">
98
- <x-field-desc markdown>Determines whether the "Offline" filter option is available in the UI. Offline sessions typically represent long-lived sessions that are not currently active.</x-field-desc>
99
- </x-field>
100
- <x-field data-name="showAppPid" data-type="boolean" data-default="false" data-required="false">
101
- <x-field-desc markdown>Controls the visibility of the "App Pid" column, which can display a Blocklet's Program ID associated with the session.</x-field-desc>
102
- </x-field>
103
- </x-field-group>
104
-
105
- ## Displayed Information
106
-
107
- The component renders the following information for each session in the data table:
108
-
109
- | Column | Description |
110
- | :--- | :--- |
111
- | **Platform** | The operating system and version derived from the session's user-agent string (e.g., `Windows/10`). |
112
- | **Device Type** | The browser or application used for the session (e.g., `Chrome/108.0.0`). |
113
- | **Wallet OS** | The operating system of the connected DID wallet, if available. |
114
- | **App Pid** | The Program ID of the Blocklet that created the session. (Visible if `showAppPid` is `true`). |
115
- | **User** | The user associated with the session. (Visible if `showUser` is `true`). |
116
- | **Created At** | The timestamp when the session was initially created. |
117
- | **Last Active** | The timestamp of the last activity. For expired sessions, this column shows "Expired". |
118
- | **Last Login IP** | The last known IP address for the session, along with its resolved geographical region. |
119
- | **Actions** | Provides a button to log out of the session. (Visible if `showAction` is `true`). |
120
-
121
- ---
122
-
123
- For a complete user management interface, consider using the `UserSessions` component within the [UserCenter](./components-user-management-user-center.md) component.
@@ -1,121 +0,0 @@
1
- # UserSessions
2
-
3
- `UserSessions` 元件會渲染一個全面的資料表,用於顯示和管理使用者的登入會話。它清晰地概覽了所有在各種裝置上的活躍、過期和離線會話,讓使用者能夠掌控其帳戶安全。
4
-
5
- 此元件被設計為一個隨插即用的解決方案,供需要實作會話管理功能的開發人員使用。它處理資料擷取、分頁、UI 渲染以及登出特定會話等操作。
6
-
7
- ## 功能
8
-
9
- - **會話篩選:** 使用者可以輕鬆地按會話狀態篩選:`online`、`expired` 或 `offline`。
10
- - **詳細資訊:** 每個會話條目都會顯示解析後的使用者代理資料,包括作業系統、裝置類型(瀏覽器)和錢包作業系統。
11
- - **IP 地理位置:** 根據上次登入的 IP 位址自動解析並顯示地理區域。
12
- - **終止會話:** 允許使用者終止除了當前會話以外的任何會話。
13
- - **批次操作:** 包含「全部登出」功能,以終止特定狀態下的所有會話。
14
- - **響應式設計:** 適應不同螢幕尺寸,確保在桌面和行動裝置上擁有一致的使用者體驗。
15
-
16
- ## 運作方式
17
-
18
- `UserSessions` 元件透過向開發人員提供的函式請求會話資料來運作。這種設計將元件與任何特定的後端實作解耦,提供了更大的靈活性。
19
-
20
- <!-- DIAGRAM_IMAGE_START:sequence:16:9:1765962229 -->
21
- ![UserSessions](assets/diagram/user-sessions-diagram-0.zh-TW.jpg)
22
- <!-- DIAGRAM_IMAGE_END -->
23
-
24
- ## 使用方式
25
-
26
- 要使用 `UserSessions` 元件,您必須提供一個 `user` 物件和一個 `getUserSessions` 函式。`getUserSessions` 函式負責從您的後端服務中擷取會話資料。
27
-
28
- ```javascript 整合範例 icon=lucide:code
29
- import { UserSessions } from '@arcblock/blocklet-ui-react';
30
- import { client } from './libs/client'; // 您的 API 客戶端實例
31
-
32
- // 正在顯示其會話的使用者物件。
33
- const currentUser = {
34
- did: 'z1...',
35
- name: 'Alice',
36
- // 其他使用者屬性
37
- };
38
-
39
- /**
40
- * 此函式從您的後端擷取會話資料。
41
- * 每當需要新資料時,UserSessions 元件將會呼叫此函式。
42
- *
43
- * @param {object} params - 查詢參數。
44
- * @param {number} params.page - 當前頁碼。
45
- * @param {number} params.pageSize - 每頁的項目數。
46
- * @param {string} params.status - 用於篩選的會話狀態('online'、'expired'、'offline')。
47
- * @returns {Promise<{ list: UserSession[], paging: { total: number } }>} 一個解析為會話資料的 promise。
48
- */
49
- const fetchUserSessions = async ({ page, pageSize, status }) => {
50
- const response = await client.user.getSessions({
51
- page,
52
- pageSize,
53
- status,
54
- });
55
-
56
- // 確保回傳格式符合元件的要求
57
- return {
58
- list: response?.list || [],
59
- paging: {
60
- total: response?.paging?.total || 0,
61
- },
62
- };
63
- };
64
-
65
- export default function MyAccountSessionsPage() {
66
- return (
67
- <div>
68
- <h2>管理您的登入會話</h2>
69
- <UserSessions
70
- user={currentUser}
71
- getUserSessions={fetchUserSessions}
72
- />
73
- </div>
74
- );
75
- }
76
- ```
77
-
78
- ## 屬性
79
-
80
- `UserSessions` 元件接受以下屬性以自訂其行為和外觀。
81
-
82
- <x-field-group>
83
- <x-field data-name="user" data-type="User" data-required="true">
84
- <x-field-desc markdown>正在顯示其會話的使用者物件。元件需要此物件來為會話列表提供上下文。</x-field-desc>
85
- </x-field>
86
- <x-field data-name="getUserSessions" data-type="function" data-required="true">
87
- <x-field-desc markdown>一個非同步函式,負責從您的後端擷取分頁的會話資料。它會接收一個包含 `page`、`pageSize` 和 `status` 的物件,並且必須回傳一個解析為 `{ list: UserSession[], paging: { total: number } }` 形狀物件的 `Promise`。</x-field-desc>
88
- </x-field>
89
- <x-field data-name="showAction" data-type="boolean" data-default="true" data-required="false">
90
- <x-field-desc markdown>控制「操作」欄位的可見性,該欄位包含登出按鈕。設定為 `false` 可建立唯讀視圖。</x-field-desc>
91
- </x-field>
92
- <x-field data-name="showUser" data-type="boolean" data-default="true" data-required="false">
93
- <x-field-desc markdown>控制「使用者」欄位的可見性。這在多使用者或管理情境中很有用,因為在這些情境下需要識別每個會話的使用者。</x-field-desc>
94
- </x-field>
95
- <x-field data-name="showOffline" data-type="boolean" data-default="false" data-required="false">
96
- <x-field-desc markdown>決定「離線」篩選選項是否在 UI 中可用。離線會話通常代表目前不活躍的長期會話。</x-field-desc>
97
- </x-field>
98
- <x-field data-name="showAppPid" data-type="boolean" data-default="false" data-required="false">
99
- <x-field-desc markdown>控制「App Pid」欄位的可見性,該欄位可以顯示與會話關聯的 Blocklet 的程式 ID。</x-field-desc>
100
- </x-field>
101
- </x-field-group>
102
-
103
- ## 顯示資訊
104
-
105
- 此元件在資料表中為每個會話渲染以下資訊:
106
-
107
- | 欄位 | 說明 |
108
- | :--- | :--- |
109
- | **Platform** | 從會話的使用者代理字串中解析出的作業系統和版本(例如 `Windows/10`)。 |
110
- | **Device Type** | 用於此會話的瀏覽器或應用程式(例如 `Chrome/108.0.0`)。 |
111
- | **Wallet OS** | 已連接的 DID 錢包的作業系統(如果有的話)。 |
112
- | **App Pid** | 建立此會話的 Blocklet 的程式 ID。(如果 `showAppPid` 為 `true` 則可見)。 |
113
- | **User** | 與此會話關聯的使用者。(如果 `showUser` 為 `true` 則可見)。 |
114
- | **Created At** | 會話最初建立的時間戳。 |
115
- | **Last Active** | 上次活動的時間戳。對於已過期的會話,此欄位顯示「已過期」。 |
116
- | **Last Login IP** | 此會話的最後已知 IP 位址,及其解析出的地理區域。 |
117
- | **Actions** | 提供一個登出此會話的按鈕。(如果 `showAction` 為 `true` 則可見)。 |
118
-
119
- ---
120
-
121
- 若要獲得一個完整的使用者管理介面,請考慮在 [UserCenter](./components-user-management-user-center.md) 元件中使用 `UserSessions` 元件。
@@ -1,121 +0,0 @@
1
- # UserSessions
2
-
3
- `UserSessions` 组件渲染一个全面的数据表格,用于显示和管理用户的登录会话。它清晰地概览了用户在各种设备上的所有活跃、已过期和离线会话,让用户能够控制其账户安全。
4
-
5
- 该组件被设计成一个即插即用的解决方案,供需要实现会话管理功能的开发者使用。它负责处理数据获取、分页、UI 渲染以及登出特定会话等操作。
6
-
7
- ## 功能
8
-
9
- - **会话筛选:** 用户可以轻松按状态(`online`、`expired` 或 `offline`)筛选会话。
10
- - **详细信息:** 每个会话条目都会显示解析后的 user-agent 数据,包括操作系统、设备类型(浏览器)和钱包操作系统。
11
- - **IP 地理位置:** 根据上次登录的 IP 地址自动解析并显示地理区域。
12
- - **会话终止:** 允许用户终止除当前会话之外的任何会话。
13
- - **批量操作:** 包含“全部登出”功能,可终止特定状态下的所有会話。
14
- - **响应式设计:** 适应不同屏幕尺寸,确保在桌面和移动设备上提供一致的用户体验。
15
-
16
- ## 工作原理
17
-
18
- `UserSessions` 组件通过调用开发者提供的函数来请求会话数据。这种设计将组件与任何特定的后端实现解耦,从而提供了更大的灵活性。
19
-
20
- <!-- DIAGRAM_IMAGE_START:sequence:16:9:1765962229 -->
21
- ![UserSessions](assets/diagram/user-sessions-diagram-0.zh.jpg)
22
- <!-- DIAGRAM_IMAGE_END -->
23
-
24
- ## 用法
25
-
26
- 要使用 `UserSessions` 组件,您必须提供一个 `user` 对象和一个 `getUserSessions` 函数。`getUserSessions` 函数负责从您的后端服务获取会话数据。
27
-
28
- ```javascript Integration Example icon=lucide:code
29
- import { UserSessions } from '@arcblock/blocklet-ui-react';
30
- import { client } from './libs/client'; // 您的 API 客户端实例
31
-
32
- // 正在显示其会话的用户对象。
33
- const currentUser = {
34
- did: 'z1...',
35
- name: 'Alice',
36
- // other user properties
37
- };
38
-
39
- /**
40
- * 此函数从您的后端获取会话数据。
41
- * UserSessions 组件在需要新数据时会调用此函数。
42
- *
43
- * @param {object} params - 查询参数。
44
- * @param {number} params.page - 当前页码。
45
- * @param {number} params.pageSize - 每页的项目数。
46
- * @param {string} params.status - 用于筛选的会话状态('online'、'expired'、'offline')。
47
- * @returns {Promise<{ list: UserSession[], paging: { total: number } }>} 一个解析为会话数据的 Promise。
48
- */
49
- const fetchUserSessions = async ({ page, pageSize, status }) => {
50
- const response = await client.user.getSessions({
51
- page,
52
- pageSize,
53
- status,
54
- });
55
-
56
- // 确保返回格式符合组件的要求
57
- return {
58
- list: response?.list || [],
59
- paging: {
60
- total: response?.paging?.total || 0,
61
- },
62
- };
63
- };
64
-
65
- export default function MyAccountSessionsPage() {
66
- return (
67
- <div>
68
- <h2>管理您的登录会话</h2>
69
- <UserSessions
70
- user={currentUser}
71
- getUserSessions={fetchUserSessions}
72
- />
73
- </div>
74
- );
75
- }
76
- ```
77
-
78
- ## 属性
79
-
80
- `UserSessions` 组件接受以下属性以自定义其行为和外观。
81
-
82
- <x-field-group>
83
- <x-field data-name="user" data-type="User" data-required="true">
84
- <x-field-desc markdown>正在显示其会话的用户对象。组件需要此对象为会话列表提供上下文。</x-field-desc>
85
- </x-field>
86
- <x-field data-name="getUserSessions" data-type="function" data-required="true">
87
- <x-field-desc markdown>一个异步函数,负责从您的后端获取分页的会话数据。它接收一个包含 `page`、`pageSize` 和 `status` 的对象,并且必须返回一个解析为 `{ list: UserSession[], paging: { total: number } }` 形状对象的 `Promise`。</x-field-desc>
88
- </x-field>
89
- <x-field data-name="showAction" data-type="boolean" data-default="true" data-required="false">
90
- <x-field-desc markdown>控制包含登出按钮的“操作”列的可见性。设置为 `false` 可创建只读视图。</x-field-desc>
91
- </x-field>
92
- <x-field data-name="showUser" data-type="boolean" data-default="true" data-required="false">
93
- <x-field-desc markdown>控制“用户”列的可见性。这在需要为每个会话识别用户的多用户或管理上下文中很有用。</x-field-desc>
94
- </x-field>
95
- <x-field data-name="showOffline" data-type="boolean" data-default="false" data-required="false">
96
- <x-field-desc markdown>决定“离线”筛选选项在 UI 中是否可用。离线会话通常代表当前不活跃的长期会话。</x-field-desc>
97
- </x-field>
98
- <x-field data-name="showAppPid" data-type="boolean" data-default="false" data-required="false">
99
- <x-field-desc markdown>控制“应用 Pid”列的可见性,该列可以显示与会话关联的 Blocklet 的程序 ID。</x-field-desc>
100
- </x-field>
101
- </x-field-group>
102
-
103
- ## 显示信息
104
-
105
- 该组件在数据表格中为每个会话渲染以下信息:
106
-
107
- | 列 | 描述 |
108
- | :--- | :--- |
109
- | **平台** | 从会话的 user-agent 字符串派生的操作系统和版本(例如 `Windows/10`)。 |
110
- | **设备类型** | 用于会话的浏览器或应用程序(例如 `Chrome/108.0.0`)。 |
111
- | **钱包操作系统** | 连接的 DID 钱包的操作系统(如果可用)。 |
112
- | **应用 Pid** | 创建会话的 Blocklet 的程序 ID。(`showAppPid` 为 `true` 时可见)。 |
113
- | **用户** | 与会话关联的用户。(`showUser` 为 `true` 时可见)。 |
114
- | **创建于** | 会话最初创建时的时间戳。 |
115
- | **上次活跃** | 上次活动的时间戳。对于已过期的会话,此列显示“已过期”。 |
116
- | **上次登录 IP** | 会话的最后已知 IP 地址及其解析的地理区域。 |
117
- | **操作** | 提供一个用于登出该会话的按钮。(`showAction` 为 `true` 时可见)。 |
118
-
119
- ---
120
-
121
- 要获得完整的用户管理界面,请考虑在 [UserCenter](./components-user-management-user-center.md) 组件中使用 `UserSessions` 组件。
@@ -1,49 +0,0 @@
1
- # ユーザー管理
2
-
3
- ユーザー管理スイートは、ユーザー関連の重要な機能を取り扱うために設計された、事前構築済みのReactコンポーネントのコレクションを提供します。これらのコンポーネントは、アプリケーション内でのユーザープロファイル、セッション管理、組織切り替えの実装を簡素化し、一貫性のある信頼性の高いユーザーエクスペリエンスを保証します。
4
-
5
- このセクションでは、スイートで利用可能な主要コンポーネントの概要を説明します。詳細な実装ガイドとAPIリファレンスについては、以下にリンクされている特定のコンポーネントのドキュメントを参照してください。
6
-
7
- <!-- DIAGRAM_IMAGE_START:architecture:16:9:1765962229 -->
8
- ![User Management](assets/diagram/user-management-diagram-0.ja.jpg)
9
- <!-- DIAGRAM_IMAGE_END -->
10
-
11
- ## コアコンポーネント
12
-
13
- このスイートは、それぞれがユーザー管理の特定の側面に対応する、いくつかの主要なコンポーネントで構成されています。
14
-
15
- <x-cards>
16
- <x-card data-title="UserCenter" data-icon="lucide:user-cog" data-href="/components/user-management/user-center">
17
- ユーザープロファイルの表示と管理を行うための包括的なコンポーネントです。ユーザー設定、パスポート管理、他のユーザーをフォローするなどのソーシャルインタラクションを処理する機能が含まれています。
18
- </x-card>
19
- <x-card data-title="UserSessions" data-icon="lucide:smartphone-nfc" data-href="/components/user-management/user-sessions">
20
- ユーザーがさまざまなデバイスでのアクティブおよび過去のログインセッションを表示・管理できるようにする、セキュリティに重点を置いたコンポーネントで、アカウントのセキュリティを強化します。
21
- </x-card>
22
- </x-cards>
23
-
24
- ### 組織の切り替え
25
-
26
- `OrgsSwitch` コンポーネントは、複数の組織に所属するユーザー向けにドロップダウンメニューインターフェースを提供します。これにより、チームベースまたはマルチテナント機能を持つアプリケーションにとって重要な、シームレスなコンテキスト切り替えが可能になります。
27
-
28
- **主な機能:**
29
-
30
- * **現在の組織の表示:** ユーザーの現在の組織コンテキストを明確に表示します。
31
- * **組織リスト:** ユーザーが切り替え可能なすべての組織を一覧表示し、パフォーマンス向上のための無限スクロール機能を備えています。
32
- * **検索機能:** 特定の組織を素早くフィルタリングして見つけるための検索バーが含まれています。
33
- * **作成とナビゲーション:** 新しい組織を作成するオプションと、すべての組織を管理するための専用ページへのリンクを提供します。
34
-
35
- ### ユーザーインタラクション用のフック
36
-
37
- ソーシャル機能の開発を容易にするため、このライブラリには複雑なロジックを抽象化するカスタムフックとコンテキストも含まれています。
38
-
39
- * **`useFollow` フック**: このフックは、他のユーザーをフォローおよびアンフォローするための完全なロジックを管理します。APIリクエストと状態変更を処理し、現在のフォロー状態 (`followed`) と、`followUser` および `unfollowUser` 関数を返します。
40
- * **`UserFollowersProvider` コンテキスト**: フォロー状態が複数のコンポーネント間でアクセス可能である必要があるアプリケーションの場合、このプロバイダーはコンポーネントツリーの一部をラップし、`useUserFollowersContext` フックを介してフォローの状態とアクションを利用可能にします。
41
-
42
- ## まとめ
43
-
44
- このコンポーネントスイートは、ライブラリで構築されたあらゆるアプリケーションにおける堅牢なユーザー管理のために必要なビルディングブロックを提供します。これらのコンポーネントを使用することで、開発を加速し、アプリケーションがユーザーアカウント管理とセキュリティのベストプラクティスに従うことを保証できます。
45
-
46
- 詳細な実装ガイドについては、特定のコンポーネントのドキュメントに進んでください。
47
-
48
- * **次へ:** [UserCenter](./components-user-management-user-center.md)
49
- * **関連項目:** [UserSessions](./components-user-management-user-sessions.md)
@@ -1,51 +0,0 @@
1
- # User Management
2
-
3
- The User Management suite provides a collection of pre-built React components designed to handle essential user-related functionalities. These components simplify the implementation of user profiles, session management, and organization switching within your application, ensuring a consistent and reliable user experience.
4
-
5
- This section provides an overview of the main components available in the suite. The following diagram illustrates how a user interacts with the different components of the application:
6
-
7
- <!-- DIAGRAM_IMAGE_START:architecture:16:9:1765962229 -->
8
- ![User Management](assets/diagram/user-management-diagram-0.jpg)
9
- <!-- DIAGRAM_IMAGE_END -->
10
-
11
- For detailed implementation guides and API references, please refer to the specific component documentation linked below.
12
-
13
- ## Core Components
14
-
15
- The suite is composed of several key components, each addressing a specific aspect of user management.
16
-
17
- <x-cards>
18
- <x-card data-title="UserCenter" data-icon="lucide:user-cog" data-href="/components/user-management/user-center">
19
- A comprehensive component for displaying and managing user profiles. It includes features for handling user settings, passport management, and social interactions like following other users.
20
- </x-card>
21
- <x-card data-title="UserSessions" data-icon="lucide:smartphone-nfc" data-href="/components/user-management/user-sessions">
22
- A security-focused component that allows users to view and manage their active and past login sessions across different devices, enhancing account security.
23
- </x-card>
24
- </x-cards>
25
-
26
- ### Organization Switching
27
-
28
- The `OrgsSwitch` component provides a dropdown menu interface for users who belong to multiple organizations. It allows for seamless context switching, which is critical for applications with team-based or multi-tenant features.
29
-
30
- **Key Features:**
31
-
32
- * **Current Organization Display:** Clearly shows the user's current organizational context.
33
- * **Organization List:** Lists all available organizations a user can switch to, complete with infinite scrolling for performance.
34
- * **Search Functionality:** Includes a search bar to quickly filter and find a specific organization.
35
- * **Creation and Navigation:** Provides options to create a new organization and a link to a dedicated page for managing all organizations.
36
-
37
- ### Hooks for User Interaction
38
-
39
- To facilitate the development of social features, the library also includes custom hooks and contexts that abstract away complex logic.
40
-
41
- * **`useFollow` hook**: This hook manages the complete logic for following and unfollowing other users. It handles the API requests and state changes, returning the current follow status (`followed`) and functions to `followUser` and `unfollowUser`.
42
- * **`UserFollowersProvider` context**: For applications where follow status needs to be accessible across multiple components, this provider wraps a section of your component tree and makes the follow state and actions available via the `useUserFollowersContext` hook.
43
-
44
- ## Summary
45
-
46
- This suite of components provides the necessary building blocks for robust user management in any application built with the library. By using these components, you can accelerate development and ensure your application follows best practices for user account management and security.
47
-
48
- For detailed implementation guides, please proceed to the specific component documentation.
49
-
50
- * **Next:** [UserCenter](./components-user-management-user-center.md)
51
- * **See Also:** [UserSessions](./components-user-management-user-sessions.md)
@@ -1,49 +0,0 @@
1
- # 使用者管理
2
-
3
- 使用者管理套件提供了一系列預先建置的 React 元件,專為處理基本的使用者相關功能而設計。這些元件簡化了在您的應用程式中實現使用者個人資料、會話管理和組織切換的過程,確保提供一致且可靠的使用者體驗。
4
-
5
- 本節概述了此套件中可用的主要元件。有關詳細的實作指南和 API 參考,請參閱下方連結的特定元件文件。
6
-
7
- <!-- DIAGRAM_IMAGE_START:architecture:16:9:1765962229 -->
8
- ![User Management](assets/diagram/user-management-diagram-0.zh-TW.jpg)
9
- <!-- DIAGRAM_IMAGE_END -->
10
-
11
- ## 核心元件
12
-
13
- 此套件由幾個關鍵元件組成,每個元件都處理使用者管理的特定方面。
14
-
15
- <x-cards>
16
- <x-card data-title="UserCenter" data-icon="lucide:user-cog" data-href="/components/user-management/user-center">
17
- 一個用於顯示和管理使用者個人資料的全面元件。它包含處理使用者設定、通行證管理以及如追蹤其他使用者等社交互動的功能。
18
- </x-card>
19
- <x-card data-title="UserSessions" data-icon="lucide:smartphone-nfc" data-href="/components/user-management/user-sessions">
20
- 一個注重安全性的元件,允許使用者查看和管理他們在不同裝置上的有效和過去的登入會話,從而增強帳戶安全性。
21
- </x-card>
22
- </x-cards>
23
-
24
- ### 組織切換
25
-
26
- `OrgsSwitch` 元件為屬於多個組織的使用者提供了一個下拉式選單介面。它允許無縫的情境切換,這對於具有團隊或多租戶功能的應用程式至關重要。
27
-
28
- **主要功能:**
29
-
30
- * **目前組織顯示:**清楚地顯示使用者目前的組織情境。
31
- * **組織列表:**列出使用者可以切換的所有可用組織,並具備無限滾動功能以提升效能。
32
- * **搜尋功能:**包含一個搜尋欄,可快速篩選和尋找特定組織。
33
- * **建立與導覽:**提供建立新組織的選項,以及一個連結到管理所有組織的專屬頁面。
34
-
35
- ### 用於使用者互動的 Hooks
36
-
37
- 為方便開發社交功能,此函式庫還包含自訂的 hooks 和 contexts,用以抽象化複雜的邏輯。
38
-
39
- * **`useFollow` hook**:此 hook 管理追蹤和取消追蹤其他使用者的完整邏輯。它處理 API 請求和狀態變更,並返回目前的追蹤狀態(`followed`)以及 `followUser` 和 `unfollowUser` 函式。
40
- * **`UserFollowersProvider` context**:對於需要在多個元件中存取追蹤狀態的應用程式,此提供者會包覆您的元件樹的一部分,並透過 `useUserFollowersContext` hook 提供追蹤狀態和操作。
41
-
42
- ## 總結
43
-
44
- 這套元件為任何使用此函式庫建置的應用程式提供了強健使用者管理的必要建構區塊。透過使用這些元件,您可以加速開發,並確保您的應用程式遵循使用者帳戶管理和安全性的最佳實踐。
45
-
46
- 有關詳細的實作指南,請繼續參閱特定元件的文件。
47
-
48
- * **下一步:** [UserCenter](./components-user-management-user-center.md)
49
- * **另請參閱:** [UserSessions](./components-user-management-user-sessions.md)