@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,132 +0,0 @@
1
- # 入門指南
2
-
3
- 本指南提供逐步教學,引導您安裝 `@blocklet/ui-react` 函式庫並渲染您的第一個元件。目標是在最短的時間內,讓您的應用程式中能正常運作 `Header` 和 `Footer`。
4
-
5
- ## 先決條件
6
-
7
- 在繼續之前,請確保您的開發環境中已安裝以下項目:
8
- * 一個可運作的 React 專案。
9
- * Node.js 和一個套件管理器(npm 或 yarn)。
10
-
11
- ## 安裝
12
-
13
- 首先,使用您偏好的套件管理器將 `@blocklet/ui-react` 套件新增至您的專案中。
14
-
15
- 使用 npm:
16
- ```bash npm
17
- npm install @blocklet/ui-react
18
- ```
19
-
20
- 使用 yarn:
21
- ```bash yarn
22
- yarn add @blocklet/ui-react
23
- ```
24
-
25
- ## 基本用法:Header 與 Footer
26
-
27
- `Header` 和 `Footer` 元件的設計旨在簡化使用,無需任何初始設定即可渲染。它們會自動從 blocklet 的元資料中獲取資料。
28
-
29
- 1. 將 `Header` 和 `Footer` 元件匯入到您的主應用程式檔案中(例如 `App.js`)。
30
- 2. 將它們分別放置在應用程式佈局的頂部和底部。
31
-
32
- ```jsx App.js icon=logos:react
33
- import React from 'react';
34
- import Header from '@blocklet/ui-react/lib/Header';
35
- import Footer from '@blocklet/ui-react/lib/Footer';
36
-
37
- function App() {
38
- return (
39
- <div>
40
- <Header />
41
- <main style={{ padding: '20px', minHeight: 'calc(100vh - 128px)' }}>
42
- {/* 您的應用程式內容放在這裡 */}
43
- <h1>Welcome to My Blocklet</h1>
44
- </main>
45
- <Footer />
46
- </div>
47
- );
48
- }
49
-
50
- export default App;
51
- ```
52
-
53
- 這些元件會自動從 `window.blocklet` 元資料物件中檢索設定詳情,例如應用程式名稱、標誌和導覽連結。該物件由 Blocklet Server 環境注入。
54
-
55
- 此外,`Header` 元件會智慧地渲染額外的控制項:
56
- * 如果 `SessionContext` 可用,將會顯示**使用者會話管理器**。
57
- * 如果 `LocaleContext` 可用,將會顯示**語言選擇器**。
58
-
59
- ## 手動設定
60
-
61
- 在開發、測試或需要覆寫預設元資料的情況下,您可以使用 `blockletMeta` 屬性將設定物件直接傳遞給元件。
62
-
63
- ```jsx App.js icon=logos:react
64
- import React from 'react';
65
- import Header from '@blocklet/ui-react/lib/Header';
66
-
67
- const customBlockletMeta = {
68
- appName: 'My Custom App',
69
- appLogo: 'https://path.to/your/logo.png',
70
- navigation: [
71
- {
72
- title: 'Home',
73
- link: '/',
74
- },
75
- {
76
- title: 'Documentation',
77
- link: '/docs',
78
- },
79
- ],
80
- };
81
-
82
- function App() {
83
- return (
84
- <div>
85
- <Header blockletMeta={customBlockletMeta} />
86
- {/* ... rest of your app */}
87
- </div>
88
- );
89
- }
90
- ```
91
-
92
- 這種方法讓您能透過覆寫全域 `window.blocklet` 物件提供的任何資料,來精確控制元件的外觀和行為。
93
-
94
- ## 自訂 Header
95
-
96
- `Header` 元件在右側包含一個 `addons` 區域,您可以自訂該區域以包含您自己的元件,例如操作按鈕或自訂連結。
97
-
98
- `addons` 屬性接受一個函式,該函式接收預設的附加元件作為參數。這讓您可以將新元件加到現有元件的前面、後面,或是完全取代它們。
99
-
100
- ```jsx CustomHeader.js icon=logos:react
101
- import React from 'react';
102
- import Header from '@blocklet/ui-react/lib/Header';
103
- import Button from '@mui/material/Button'; // 使用 Material-UI 的範例
104
-
105
- function CustomHeader() {
106
- return (
107
- <Header
108
- addons={existingAddons => {
109
- return [
110
- <Button
111
- key="custom-action"
112
- variant="contained"
113
- color="primary"
114
- size="small"
115
- style={{ marginRight: 8 }}>
116
- Custom Action
117
- </Button>,
118
- ...existingAddons, // 重要:保留預設的 session/locale 附加元件
119
- ];
120
- }}
121
- />
122
- );
123
- }
124
- ```
125
-
126
- 在此範例中,一個自訂按鈕被加到現有的附加元件前面。透過包含 `...existingAddons`,您可以確保預設的會話和地區設定控制項仍然可見。
127
-
128
- ## 總結
129
-
130
- 您已成功安裝 `@blocklet/ui-react` 函式庫,渲染了預設的 `Header` 和 `Footer` 元件,並學會了如何提供自訂設定和附加元件。
131
-
132
- 掌握了這些基礎知識後,您現在可以開始探索此函式庫中提供的所有元件了。關於佈局、使用者管理和工具程式元件的詳細文件,請前往 [元件](./components.md) 部分。
@@ -1,132 +0,0 @@
1
- # 快速入门
2
-
3
- 本指南将引导你逐步安装 @blocklet/ui-react 库并渲染你的第一个组件。目标是在最短的时间内在你的应用程序中拥有一个功能完备的 `Header` 和 `Footer`。
4
-
5
- ## 前提条件
6
-
7
- 在继续之前,请确保你的开发环境中已安装以下内容:
8
- * 一个可正常工作的 React 项目。
9
- * Node.js 和一个包管理器(npm 或 yarn)。
10
-
11
- ## 安装
12
-
13
- 首先,使用你偏好的包管理器将 `@blocklet/ui-react` 包添加到你的项目中。
14
-
15
- 使用 npm:
16
- ```bash npm
17
- npm install @blocklet/ui-react
18
- ```
19
-
20
- 使用 yarn:
21
- ```bash yarn
22
- yarn add @blocklet/ui-react
23
- ```
24
-
25
- ## 基本用法:Header 和 Footer
26
-
27
- `Header` 和 `Footer` 组件的设计旨在简化使用,无需任何初始配置即可渲染。它们会自动从 blocklet 的元数据中获取数据。
28
-
29
- 1. 将 `Header` 和 `Footer` 组件导入到你的主应用程序文件(例如 `App.js`)中。
30
- 2. 将它们分别放置在应用程序布局的顶部和底部。
31
-
32
- ```jsx App.js icon=logos:react
33
- import React from 'react';
34
- import Header from '@blocklet/ui-react/lib/Header';
35
- import Footer from '@blocklet/ui-react/lib/Footer';
36
-
37
- function App() {
38
- return (
39
- <div>
40
- <Header />
41
- <main style={{ padding: '20px', minHeight: 'calc(100vh - 128px)' }}>
42
- {/* 你的应用程序内容放在这里 */}
43
- <h1>Welcome to My Blocklet</h1>
44
- </main>
45
- <Footer />
46
- </div>
47
- );
48
- }
49
-
50
- export default App;
51
- ```
52
-
53
- 这些组件会自动从 `window.blocklet` 元数据对象中检索配置详情(如应用名称、徽标和导航链接),该对象由 Blocklet Server 环境注入。
54
-
55
- 此外,`Header` 组件还会智能地渲染额外的控件:
56
- * 如果 `SessionContext` 可用,则会显示**用户会话管理器**。
57
- * 如果 `LocaleContext` 可用,则会显示**语言选择器**。
58
-
59
- ## 手动配置
60
-
61
- 在开发、测试或需要覆盖默认元数据的情况下,你可以使用 `blockletMeta` 属性直接向组件传递一个配置对象。
62
-
63
- ```jsx App.js icon=logos:react
64
- import React from 'react';
65
- import Header from '@blocklet/ui-react/lib/Header';
66
-
67
- const customBlockletMeta = {
68
- appName: 'My Custom App',
69
- appLogo: 'https://path.to/your/logo.png',
70
- navigation: [
71
- {
72
- title: 'Home',
73
- link: '/',
74
- },
75
- {
76
- title: 'Documentation',
77
- link: '/docs',
78
- },
79
- ],
80
- };
81
-
82
- function App() {
83
- return (
84
- <div>
85
- <Header blockletMeta={customBlockletMeta} />
86
- {/* ... 你的应用程序的其余部分 */}
87
- </div>
88
- );
89
- }
90
- ```
91
-
92
- 这种方法允许你覆盖全局 `window.blocklet` 对象提供的任何数据,从而精确控制组件的外观和行为。
93
-
94
- ## 自定义 Header
95
-
96
- `Header` 组件右侧包含一个 `addons` 区域,你可以对其进行自定义,以包含你自己的组件,例如操作按钮或自定义链接。
97
-
98
- `addons` 属性接受一个函数作为参数,该函数接收默认的附加组件。这允许你在现有组件前后添加新组件或完全替换它们。
99
-
100
- ```jsx CustomHeader.js icon=logos:react
101
- import React from 'react';
102
- import Header from '@blocklet/ui-react/lib/Header';
103
- import Button from '@mui/material/Button'; // 使用 Material-UI 的示例
104
-
105
- function CustomHeader() {
106
- return (
107
- <Header
108
- addons={existingAddons => {
109
- return [
110
- <Button
111
- key="custom-action"
112
- variant="contained"
113
- color="primary"
114
- size="small"
115
- style={{ marginRight: 8 }}>
116
- Custom Action
117
- </Button>,
118
- ...existingAddons, // 重要:保留默认的 session/locale 附加组件
119
- ];
120
- }}
121
- />
122
- );
123
- }
124
- ```
125
-
126
- 在此示例中,一个自定义按钮被添加到了现有附加组件的前面。通过包含 `...existingAddons`,你可以确保默认的会话和语言区域控件保持可见。
127
-
128
- ## 总结
129
-
130
- 你已成功安装 `@blocklet/ui-react` 库,渲染了默认的 `Header` 和 `Footer` 组件,并学会了如何提供自定义配置和附加组件。
131
-
132
- 掌握了这些基础知识后,你现在可以开始探索该库中提供的全部组件了。有关布局、用户管理和实用工具组件的详细文档,请继续阅读 [组件](./components.md) 部分。
@@ -1,214 +0,0 @@
1
- # Hooks API
2
-
3
- このセクションでは、ライブラリ内で利用可能なカスタム React Hook の詳細なリファレンスを提供します。これらのフックは、ステートフルなロジックをカプセル化して再利用するように設計されており、Blocklet 環境内での一般的なタスクやインタラクションを簡素化します。
4
-
5
- ## useComponentInstalled
6
-
7
- このフックは、指定された1つ以上のオプションコンポーネント(DID によって識別される)がインストールされているかどうかをチェックします。これは、他の Blocklet を依存関係として利用する機能を実装するために不可欠です。このフックは、インストールのステータスと、必要に応じてユーザーにインストールを促すために必要な URL を提供します。
8
-
9
- ### パラメータ
10
-
11
- このフックは、以下のプロパティを持つ単一のオブジェクトを受け入れます:
12
-
13
- <x-field-group>
14
- <x-field data-name="did" data-type="string | string[]" data-required="true">
15
- <x-field-desc markdown>チェックするコンポーネントの分散型識別子(DID)または DID の配列。単一の文字列には `;;` で区切られた複数の DID を含めることができます。</x-field-desc>
16
- </x-field>
17
- <x-field data-name="onInstalled" data-type="function" data-required="false">
18
- <x-field-desc markdown>指定されたすべてのコンポーネントがすでにインストールされている場合にトリガーされるオプションのコールバック関数。</x-field-desc>
19
- </x-field>
20
- <x-field data-name="onError" data-type="function" data-required="false">
21
- <x-field-desc markdown>指定された1つ以上のコンポーネントがインストールされていない場合にトリガーされるオプションのコールバック関数。</x-field-desc>
22
- </x-field>
23
- </x-field-group>
24
-
25
- ### 戻り値
26
-
27
- インストールの状態と関連データを含むオブジェクトを返します:
28
-
29
- <x-field-group>
30
- <x-field data-name="optComponents" data-type="array">
31
- <x-field-desc markdown>インストールされていないコンポーネントオブジェクトの配列。各オブジェクトには `meta.did`、`storeUrl`、`installUrl` などのメタデータが含まれます。</x-field-desc>
32
- </x-field>
33
- <x-field data-name="installed" data-type="boolean">
34
- <x-field-desc markdown>指定されたすべてのコンポーネントがインストールされ、`blocklet.yml` で定義されている場合は `true`、そうでない場合は `false` となるブール値。</x-field-desc>
35
- </x-field>
36
- <x-field data-name="installStatus" data-type="object">
37
- <x-field-desc markdown>キーがコンポーネントの DID で、値が現在のインストールステータス(例: 'waiting', 'installing')であるオブジェクト。この状態は `window.postMessage` イベントを介して更新されます。</x-field-desc>
38
- </x-field>
39
- <x-field data-name="setInstallStatus" data-type="function">
40
- <x-field-desc markdown>`installStatus` オブジェクトを手動で更新するためのステートセッター関数。</x-field-desc>
41
- </x-field>
42
- <x-field data-name="definedInBlockletYML" data-type="boolean">
43
- <x-field-desc markdown>コンポーネントが blocklet の設定(`blocklet.yml`)で定義されているかどうかを示すブール値。</x-field-desc>
44
- </x-field>
45
- </x-field-group>
46
-
47
- ### 使用例
48
-
49
- 以下の例は、依存関係が欠落している場合に `useComponentInstalled` を使用して、機能または `ComponentInstaller` コンポーネントを条件付きでレンダリングする方法を示しています。
50
-
51
- ```javascript "ComponentFeature.js" icon=logos:javascript
52
- import React from 'react';
53
- import { useComponentInstalled, ComponentInstaller } from '@blocklet/ui-react';
54
-
55
- const REQUIRED_DID = 'z8ia24z55nve2TSF5m1aZ5322d9f48a43D4a'; // DID の例
56
-
57
- function ComponentFeature() {
58
- const { installed, optComponents } = useComponentInstalled({ did: REQUIRED_DID });
59
-
60
- if (!installed) {
61
- // コンポーネントが存在しない場合は、インストーラー UI をレンダリングします
62
- return <ComponentInstaller components={optComponents} />;
63
- }
64
-
65
- // インストールされたコンポーネントに依存する機能をレンダリングします
66
- return (
67
- <div>
68
- <h2>My Feature</h2>
69
- <p>This feature requires the component with DID: {REQUIRED_DID}</p>
70
- {/* ... 機能の実装 ... */}
71
- </div>
72
- );
73
- }
74
-
75
- export default ComponentFeature;
76
- ```
77
-
78
- ## useFollow
79
-
80
- このフックは、現在認証されているユーザーと、その DID によって指定された別のユーザーとの間のフォロー関係を管理します。フォローおよびアンフォローのための API 呼び出しを処理し、現在のフォロー状況を提供します。
81
-
82
- ### パラメータ
83
-
84
- <x-field-group>
85
- <x-field data-name="userDid" data-type="string" data-required="true">
86
- <x-field-desc markdown>フォロー状況を確認する対象のユーザープロファイルの DID。</x-field-desc>
87
- </x-field>
88
- <x-field data-name="t" data-type="function" data-required="true">
89
- <x-field-desc markdown>成功またはエラーメッセージを表示するために使用される翻訳関数(例: `react-i18next` 由来のもの)。</x-field-desc>
90
- </x-field>
91
- <x-field data-name="isMySelf" data-type="boolean" data-required="true">
92
- <x-field-desc markdown>`userDid` が現在ログインしているユーザーのものである場合に `true` に設定されるべきブール値。</x-field-desc>
93
- </x-field>
94
- </x-field-group>
95
-
96
- ### 戻り値
97
-
98
- 以下のプロパティを持つオブジェクトを返します:
99
-
100
- <x-field-group>
101
- <x-field data-name="followed" data-type="boolean">
102
- <x-field-desc markdown>現在のユーザーが `userDid` で指定されたユーザーをフォローしているかどうかを示します。フォローしている場合は `true`、そうでない場合は `false` です。</x-field-desc>
103
- </x-field>
104
- <x-field data-name="followUser" data-type="function">
105
- <x-field-desc markdown>ユーザーをフォローするために呼び出す安定した関数。API リクエストを処理し、成功時に `followed` ステートを更新します。</x-field-desc>
106
- </x-field>
107
- <x-field data-name="unfollowUser" data-type="function">
108
- <x-field-desc markdown>ユーザーのフォローを解除するために呼び出す安定した関数。API リクエストを処理し、成功時に `followed` ステートを更新します。</x-field-desc>
109
- </x-field>
110
- </x-field-group>
111
-
112
- ### 使用例
113
-
114
- この例では、関係ステータスに基づいて「フォロー」または「アンフォロー」アクションを表示する `FollowButton` コンポーネントを作成する方法を示します。
115
-
116
- ```javascript "FollowButton.js" icon=logos:javascript
117
- import React from 'react';
118
- import Button from '@mui/material/Button';
119
- import { useTranslation } from 'react-i18next';
120
- import { useFollow } from '@blocklet/ui-react/hooks';
121
- import { useSession } from '@blocklet/did-connect-react';
122
-
123
- function FollowButton({ profileDid }) {
124
- const { session } = useSession();
125
- const { t } = useTranslation();
126
- const isMySelf = session?.user?.did === profileDid;
127
-
128
- const { followed, followUser, unfollowUser } = useFollow({
129
- userDid: profileDid,
130
- t,
131
- isMySelf,
132
- });
133
-
134
- if (isMySelf) {
135
- return null; // 自身のプロフィールにはボタンを表示しない
136
- }
137
-
138
- const handleClick = () => {
139
- if (followed) {
140
- unfollowUser();
141
- } else {
142
- followUser();
143
- }
144
- };
145
-
146
- return (
147
- <Button variant="contained" onClick={handleClick}>
148
- {followed ? t('profile.unfollow') : t('profile.follow')}
149
- </Button>
150
- );
151
- }
152
-
153
- export default FollowButton;
154
- ```
155
-
156
- ## useMobile
157
-
158
- レスポンシブコンポーネントを作成するためのシンプルなユーティリティフックです。Material-UI の `useMediaQuery` を利用して、現在のビューポートの幅が指定されたブレークポイント未満であるかどうかを判断します。
159
-
160
- ### パラメータ
161
-
162
- <x-field-group>
163
- <x-field data-name="key" data-type="number | Breakpoint" data-default="'sm'" data-required="false">
164
- <x-field-desc markdown>Material-UI のブレークポイントキー(例: `'xs'`、`'sm'`、`'md'`)または比較対象のピクセル値。画面幅がこの値より小さい場合にフックは `true` を返します。</x-field-desc>
165
- </x-field>
166
- </x-field-group>
167
-
168
- ### 戻り値
169
-
170
- `boolean` 値を返します。ビューポートが指定されたブレークポイントより小さい場合は `true`、そうでない場合は `false` です。
171
-
172
- ### 使用例
173
-
174
- このフックは、Material-UI の `ThemeProvider` でラップされたコンポーネントツリー内で使用する必要があります。
175
-
176
- ```javascript "ResponsiveComponent.js" icon=logos:javascript
177
- import React from 'react';
178
- import Typography from '@mui/material/Typography';
179
- import { ThemeProvider, createTheme } from '@mui/material/styles';
180
- import { useMobile } from '@blocklet/ui-react/hooks';
181
-
182
- // フックを使用するコンポーネント
183
- function ResponsiveComponent() {
184
- const isMobile = useMobile({ key: 'md' }); // 'md' ブレークポイントに対してチェック
185
-
186
- return (
187
- <div>
188
- {isMobile ? (
189
- <Typography variant="h6">Mobile View</Typography>
190
- ) : (
191
- <Typography variant="h4">Desktop View</Typography>
192
- )}
193
- <p>Resize your browser window to see the content change.</p>
194
- </div>
195
- );
196
- }
197
-
198
- // コンポーネントは ThemeProvider でラップする必要があります
199
- const theme = createTheme();
200
-
201
- function App() {
202
- return (
203
- <ThemeProvider theme={theme}>
204
- <ResponsiveComponent />
205
- </ThemeProvider>
206
- );
207
- }
208
-
209
- export default App;
210
- ```
211
-
212
- ---
213
-
214
- これらのフックを使用することで、最小限のボイラープレートコードで複雑な機能を効率的に実装できます。これらのフックを使用する可能性のあるコンポーネントの詳細については、[コンポーネント](./components.md) のドキュメントを参照してください。