@blocklet/ui-react 3.4.14 → 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.
- package/lib/common/org-switch/use-org.d.ts +4 -4
- package/lib/common/ws.d.ts +22 -1
- package/package.json +10 -7
- package/.aigne/doc-smith/.local/afs-storage.sqlite3 +0 -0
- package/.aigne/doc-smith/config.yaml +0 -78
- package/.aigne/doc-smith/history.yaml +0 -14
- package/.aigne/doc-smith/media-description.yaml +0 -11
- package/.aigne/doc-smith/output/structure-plan.json +0 -255
- package/.aigne/doc-smith/translation-cache.yaml +0 -11
- package/.aigne/doc-smith/upload-cache.yaml +0 -528
- package/build.config.ts +0 -24
- package/docs/_sidebar.md +0 -19
- package/docs/assets/diagram/component-installer-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/component-installer-diagram-0.jpg +0 -0
- package/docs/assets/diagram/component-installer-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/component-installer-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/component-management-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/component-management-diagram-0.jpg +0 -0
- package/docs/assets/diagram/component-management-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/component-management-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/core-concepts-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/core-concepts-diagram-0.jpg +0 -0
- package/docs/assets/diagram/core-concepts-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/core-concepts-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/dashboard-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/dashboard-diagram-0.jpg +0 -0
- package/docs/assets/diagram/dashboard-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/dashboard-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/header-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/header-diagram-0.jpg +0 -0
- package/docs/assets/diagram/header-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/header-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/layout-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/layout-diagram-0.jpg +0 -0
- package/docs/assets/diagram/layout-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/layout-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/notifications-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/notifications-diagram-0.jpg +0 -0
- package/docs/assets/diagram/notifications-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/notifications-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/overview-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/overview-diagram-0.jpg +0 -0
- package/docs/assets/diagram/overview-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/overview-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/user-center-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/user-center-diagram-0.jpg +0 -0
- package/docs/assets/diagram/user-center-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/user-center-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/user-management-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/user-management-diagram-0.jpg +0 -0
- package/docs/assets/diagram/user-management-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/user-management-diagram-0.zh.jpg +0 -0
- package/docs/assets/diagram/user-sessions-diagram-0.ja.jpg +0 -0
- package/docs/assets/diagram/user-sessions-diagram-0.jpg +0 -0
- package/docs/assets/diagram/user-sessions-diagram-0.zh-TW.jpg +0 -0
- package/docs/assets/diagram/user-sessions-diagram-0.zh.jpg +0 -0
- package/docs/components-component-management-blocklet-studio.ja.md +0 -194
- package/docs/components-component-management-blocklet-studio.md +0 -194
- package/docs/components-component-management-blocklet-studio.zh-TW.md +0 -194
- package/docs/components-component-management-blocklet-studio.zh.md +0 -194
- package/docs/components-component-management-component-installer.ja.md +0 -182
- package/docs/components-component-management-component-installer.md +0 -182
- package/docs/components-component-management-component-installer.zh-TW.md +0 -182
- package/docs/components-component-management-component-installer.zh.md +0 -182
- package/docs/components-component-management.ja.md +0 -30
- package/docs/components-component-management.md +0 -30
- package/docs/components-component-management.zh-TW.md +0 -30
- package/docs/components-component-management.zh.md +0 -30
- package/docs/components-layout-dashboard.ja.md +0 -185
- package/docs/components-layout-dashboard.md +0 -187
- package/docs/components-layout-dashboard.zh-TW.md +0 -185
- package/docs/components-layout-dashboard.zh.md +0 -185
- package/docs/components-layout-footer.ja.md +0 -165
- package/docs/components-layout-footer.md +0 -165
- package/docs/components-layout-footer.zh-TW.md +0 -165
- package/docs/components-layout-footer.zh.md +0 -165
- package/docs/components-layout-header.ja.md +0 -183
- package/docs/components-layout-header.md +0 -183
- package/docs/components-layout-header.zh-TW.md +0 -183
- package/docs/components-layout-header.zh.md +0 -183
- package/docs/components-layout.ja.md +0 -31
- package/docs/components-layout.md +0 -31
- package/docs/components-layout.zh-TW.md +0 -31
- package/docs/components-layout.zh.md +0 -31
- package/docs/components-notifications.ja.md +0 -125
- package/docs/components-notifications.md +0 -125
- package/docs/components-notifications.zh-TW.md +0 -125
- package/docs/components-notifications.zh.md +0 -125
- package/docs/components-user-management-user-center.ja.md +0 -148
- package/docs/components-user-management-user-center.md +0 -147
- package/docs/components-user-management-user-center.zh-TW.md +0 -148
- package/docs/components-user-management-user-center.zh.md +0 -148
- package/docs/components-user-management-user-sessions.ja.md +0 -121
- package/docs/components-user-management-user-sessions.md +0 -123
- package/docs/components-user-management-user-sessions.zh-TW.md +0 -121
- package/docs/components-user-management-user-sessions.zh.md +0 -121
- package/docs/components-user-management.ja.md +0 -49
- package/docs/components-user-management.md +0 -51
- package/docs/components-user-management.zh-TW.md +0 -49
- package/docs/components-user-management.zh.md +0 -49
- package/docs/components-utilities-icon.ja.md +0 -106
- package/docs/components-utilities-icon.md +0 -106
- package/docs/components-utilities-icon.zh-TW.md +0 -106
- package/docs/components-utilities-icon.zh.md +0 -106
- package/docs/components-utilities.ja.md +0 -136
- package/docs/components-utilities.md +0 -136
- package/docs/components-utilities.zh-TW.md +0 -136
- package/docs/components-utilities.zh.md +0 -136
- package/docs/components.ja.md +0 -27
- package/docs/components.md +0 -27
- package/docs/components.zh-TW.md +0 -27
- package/docs/components.zh.md +0 -27
- package/docs/core-concepts.ja.md +0 -134
- package/docs/core-concepts.md +0 -135
- package/docs/core-concepts.zh-TW.md +0 -134
- package/docs/core-concepts.zh.md +0 -134
- package/docs/getting-started.ja.md +0 -132
- package/docs/getting-started.md +0 -132
- package/docs/getting-started.zh-TW.md +0 -132
- package/docs/getting-started.zh.md +0 -132
- package/docs/hooks-api.ja.md +0 -214
- package/docs/hooks-api.md +0 -214
- package/docs/hooks-api.zh-TW.md +0 -214
- package/docs/hooks-api.zh.md +0 -214
- package/docs/how-to-guides.ja.md +0 -413
- package/docs/how-to-guides.md +0 -413
- package/docs/how-to-guides.zh-TW.md +0 -413
- package/docs/how-to-guides.zh.md +0 -413
- package/docs/overview.ja.md +0 -51
- package/docs/overview.md +0 -51
- package/docs/overview.zh-TW.md +0 -51
- package/docs/overview.zh.md +0 -51
- package/glossary.md +0 -12
- package/src/@types/index.ts +0 -230
- package/src/@types/shims.d.ts +0 -18
- package/src/BlockletStudio/README.md +0 -116
- package/src/BlockletStudio/index.tsx +0 -145
- package/src/ComponentInstaller/ComponentInstaller.stories.jsx +0 -16
- package/src/ComponentInstaller/index.jsx +0 -207
- package/src/ComponentInstaller/installer-item.jsx +0 -129
- package/src/ComponentInstaller/locales.js +0 -22
- package/src/ComponentInstaller/use-component-installed.js +0 -88
- package/src/ComponentManager/components/add-component.tsx +0 -136
- package/src/ComponentManager/components/check-component.tsx +0 -3
- package/src/ComponentManager/components/publish-component.tsx +0 -90
- package/src/ComponentManager/components/resource-dialog.tsx +0 -91
- package/src/ComponentManager/index.tsx +0 -3
- package/src/ComponentManager/libs/locales.ts +0 -15
- package/src/Dashboard/Dashboard.stories.jsx +0 -20
- package/src/Dashboard/app-shell/app-badge.stories.tsx +0 -64
- package/src/Dashboard/app-shell/app-badge.tsx +0 -94
- package/src/Dashboard/app-shell/app-header.tsx +0 -104
- package/src/Dashboard/app-shell/app-info-context.tsx +0 -182
- package/src/Dashboard/app-shell/badges/app-badge-default.tsx +0 -130
- package/src/Dashboard/app-shell/badges/app-badge-did.tsx +0 -28
- package/src/Dashboard/app-shell/badges/app-badge-state.tsx +0 -40
- package/src/Dashboard/app-shell/badges/app-badge-switch.tsx +0 -72
- package/src/Dashboard/app-shell/badges/app-badge-version.tsx +0 -60
- package/src/Dashboard/app-shell/index.ts +0 -5
- package/src/Dashboard/index.jsx +0 -184
- package/src/Footer/Footer.stories.jsx +0 -33
- package/src/Footer/brand.jsx +0 -81
- package/src/Footer/copyright.jsx +0 -22
- package/src/Footer/index.jsx +0 -111
- package/src/Footer/internal-footer.jsx +0 -139
- package/src/Footer/layout/plain.jsx +0 -55
- package/src/Footer/layout/row.jsx +0 -43
- package/src/Footer/layout/standard.jsx +0 -114
- package/src/Footer/links.jsx +0 -321
- package/src/Footer/social-media.jsx +0 -55
- package/src/Header/Header.stories.jsx +0 -30
- package/src/Header/index.tsx +0 -259
- package/src/Icon/Icon.stories.jsx +0 -12
- package/src/Icon/index.tsx +0 -87
- package/src/Notifications/Snackbar.tsx +0 -261
- package/src/Notifications/hooks/use-title.tsx +0 -254
- package/src/Notifications/hooks/use-width.tsx +0 -16
- package/src/Notifications/utils.ts +0 -246
- package/src/UserCenter/assets/banner.png +0 -0
- package/src/UserCenter/components/config-inviter.tsx +0 -48
- package/src/UserCenter/components/config-profile.tsx +0 -99
- package/src/UserCenter/components/danger-zone.tsx +0 -82
- package/src/UserCenter/components/editable-field.tsx +0 -273
- package/src/UserCenter/components/fallback.tsx +0 -57
- package/src/UserCenter/components/nft-preview.tsx +0 -84
- package/src/UserCenter/components/nft.tsx +0 -279
- package/src/UserCenter/components/notification.tsx +0 -319
- package/src/UserCenter/components/passport.tsx +0 -107
- package/src/UserCenter/components/privacy.tsx +0 -120
- package/src/UserCenter/components/settings.tsx +0 -170
- package/src/UserCenter/components/status-dialog/date-picker.tsx +0 -77
- package/src/UserCenter/components/status-dialog/index.tsx +0 -293
- package/src/UserCenter/components/status-selector/duration-menu.tsx +0 -90
- package/src/UserCenter/components/status-selector/index.tsx +0 -58
- package/src/UserCenter/components/status-selector/menu-item.tsx +0 -56
- package/src/UserCenter/components/storage/action.tsx +0 -49
- package/src/UserCenter/components/storage/connected.tsx +0 -61
- package/src/UserCenter/components/storage/delete.tsx +0 -72
- package/src/UserCenter/components/storage/disconnect.tsx +0 -40
- package/src/UserCenter/components/storage/icons/empty-spaces-nft.svg +0 -1
- package/src/UserCenter/components/storage/icons/long-arrow.svg +0 -5
- package/src/UserCenter/components/storage/icons/space-connected.svg +0 -3
- package/src/UserCenter/components/storage/icons/space-disconnect.svg +0 -3
- package/src/UserCenter/components/storage/index.tsx +0 -41
- package/src/UserCenter/components/storage/preview-nft.tsx +0 -72
- package/src/UserCenter/components/third-party-login/index.tsx +0 -199
- package/src/UserCenter/components/third-party-login/third-party-item.tsx +0 -296
- package/src/UserCenter/components/user-center.tsx +0 -787
- package/src/UserCenter/components/user-info/address.tsx +0 -143
- package/src/UserCenter/components/user-info/index.tsx +0 -4
- package/src/UserCenter/components/user-info/link-preview-input.tsx +0 -274
- package/src/UserCenter/components/user-info/metadata.tsx +0 -658
- package/src/UserCenter/components/user-info/social-actions/chat.tsx +0 -43
- package/src/UserCenter/components/user-info/social-actions/follow.tsx +0 -23
- package/src/UserCenter/components/user-info/social-actions/index.tsx +0 -17
- package/src/UserCenter/components/user-info/switch-role.tsx +0 -42
- package/src/UserCenter/components/user-info/timezone-select.tsx +0 -119
- package/src/UserCenter/components/user-info/user-basic-info.tsx +0 -292
- package/src/UserCenter/components/user-info/user-info-item.tsx +0 -54
- package/src/UserCenter/components/user-info/user-info.tsx +0 -91
- package/src/UserCenter/components/user-info/user-status.tsx +0 -234
- package/src/UserCenter/components/user-info/utils.ts +0 -320
- package/src/UserCenter/components/webhook-item.tsx +0 -248
- package/src/UserCenter/index.tsx +0 -1
- package/src/UserCenter/libs/locales.ts +0 -378
- package/src/UserCenter/libs/utils.ts +0 -30
- package/src/UserSessions/components/user-session-info.tsx +0 -78
- package/src/UserSessions/components/user-sessions.tsx +0 -545
- package/src/UserSessions/index.tsx +0 -1
- package/src/UserSessions/libs/locales.ts +0 -60
- package/src/UserSessions/libs/utils.ts +0 -82
- package/src/blocklets.js +0 -195
- package/src/common/domain-warning.jsx +0 -178
- package/src/common/header-addons.jsx +0 -119
- package/src/common/link-blocker.jsx +0 -20
- package/src/common/notification-addon.jsx +0 -135
- package/src/common/org-switch/avatar-uploader.jsx +0 -271
- package/src/common/org-switch/create.jsx +0 -267
- package/src/common/org-switch/index.jsx +0 -407
- package/src/common/org-switch/locales.js +0 -52
- package/src/common/org-switch/use-org.jsx +0 -79
- package/src/common/overridable-theme-provider.jsx +0 -17
- package/src/common/wallet-hidden-topbar.js +0 -14
- package/src/common/wizard-modal.jsx +0 -200
- package/src/common/ws.js +0 -68
- package/src/contexts/config-user-space.tsx +0 -88
- package/src/contexts/user-followers.tsx +0 -54
- package/src/hooks/use-follow.tsx +0 -75
- package/src/hooks/use-mobile.tsx +0 -6
- package/src/index.ts +0 -16
- package/src/libs/constant.ts +0 -1
- package/src/libs/spaces.tsx +0 -18
- package/src/libs/with-hide-when-embed.tsx +0 -24
- package/src/types.js +0 -45
- package/src/utils.js +0 -161
- 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) 部分。
|
package/docs/hooks-api.ja.md
DELETED
|
@@ -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) のドキュメントを参照してください。
|