@blocklet/ui-react 2.9.13 → 2.9.14

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 (161) hide show
  1. package/build.config.ts +29 -0
  2. package/es/@types/index.d.ts +63 -0
  3. package/es/@types/index.js +0 -0
  4. package/es/@types/shims.d.ts +12 -0
  5. package/es/Dashboard/index.d.ts +41 -0
  6. package/es/Dashboard/index.js +63 -97
  7. package/es/Footer/brand.d.ts +22 -0
  8. package/es/Footer/brand.js +20 -37
  9. package/es/Footer/copyright.d.ts +18 -0
  10. package/es/Footer/copyright.js +14 -16
  11. package/es/Footer/index.d.ts +6 -0
  12. package/es/Footer/index.js +30 -56
  13. package/es/Footer/internal-footer.d.ts +29 -0
  14. package/es/Footer/internal-footer.js +67 -94
  15. package/es/Footer/layout/plain.d.ts +15 -0
  16. package/es/Footer/layout/plain.js +19 -37
  17. package/es/Footer/layout/row.d.ts +18 -0
  18. package/es/Footer/layout/row.js +9 -19
  19. package/es/Footer/layout/standard.d.ts +15 -0
  20. package/es/Footer/layout/standard.js +29 -57
  21. package/es/Footer/links.d.ts +22 -0
  22. package/es/Footer/links.js +72 -104
  23. package/es/Footer/social-media.d.ts +14 -0
  24. package/es/Footer/social-media.js +35 -35
  25. package/es/Header/index.d.ts +9 -0
  26. package/es/Header/index.js +55 -100
  27. package/es/Icon/index.d.ts +23 -0
  28. package/es/Icon/index.js +23 -58
  29. package/es/UserCenter/assets/banner.png +0 -0
  30. package/es/UserCenter/components/notification.d.ts +5 -0
  31. package/es/UserCenter/components/notification.js +276 -0
  32. package/es/UserCenter/components/passport.d.ts +6 -0
  33. package/es/UserCenter/components/passport.js +69 -0
  34. package/es/UserCenter/components/privacy.d.ts +11 -0
  35. package/es/UserCenter/components/privacy.js +99 -0
  36. package/es/UserCenter/components/settings.d.ts +10 -0
  37. package/es/UserCenter/components/settings.js +68 -0
  38. package/es/UserCenter/components/user-basic-info.d.ts +8 -0
  39. package/es/UserCenter/components/user-basic-info.js +66 -0
  40. package/es/UserCenter/components/user-center.d.ts +9 -0
  41. package/es/UserCenter/components/user-center.js +397 -0
  42. package/es/UserCenter/components/user-info-item.d.ts +10 -0
  43. package/es/UserCenter/components/user-info-item.js +54 -0
  44. package/es/UserCenter/components/user-info.d.ts +6 -0
  45. package/es/UserCenter/components/user-info.js +68 -0
  46. package/es/UserCenter/components/webhook-item.d.ts +3 -0
  47. package/es/UserCenter/components/webhook-item.js +243 -0
  48. package/es/UserCenter/index.d.ts +1 -0
  49. package/es/UserCenter/index.js +1 -0
  50. package/es/UserCenter/libs/client.d.ts +2 -0
  51. package/es/UserCenter/libs/client.js +2 -0
  52. package/es/UserCenter/libs/locales.d.ts +72 -0
  53. package/es/UserCenter/libs/locales.js +72 -0
  54. package/es/UserCenter/libs/utils.d.ts +4 -0
  55. package/es/UserCenter/libs/utils.js +14 -0
  56. package/es/blocklets.d.ts +16 -0
  57. package/es/blocklets.js +56 -45
  58. package/es/common/header-addons.d.ts +22 -0
  59. package/es/common/header-addons.js +41 -59
  60. package/es/common/link-blocker.d.ts +7 -0
  61. package/es/common/link-blocker.js +10 -17
  62. package/es/common/overridable-theme-provider.d.ts +18 -0
  63. package/es/common/overridable-theme-provider.js +6 -16
  64. package/es/common/wallet-hidden-topbar.d.ts +1 -0
  65. package/es/common/wallet-hidden-topbar.js +12 -10
  66. package/es/index.d.ts +5 -0
  67. package/es/index.js +5 -0
  68. package/es/types.d.ts +2 -0
  69. package/es/types.js +17 -11
  70. package/es/utils.d.ts +8 -0
  71. package/es/utils.js +21 -26
  72. package/lib/@types/index.d.ts +63 -0
  73. package/lib/@types/index.js +1 -0
  74. package/lib/@types/shims.d.ts +12 -0
  75. package/lib/Dashboard/index.d.ts +41 -0
  76. package/lib/Dashboard/index.js +44 -71
  77. package/lib/Footer/brand.d.ts +22 -0
  78. package/lib/Footer/brand.js +65 -30
  79. package/lib/Footer/copyright.d.ts +18 -0
  80. package/lib/Footer/copyright.js +18 -23
  81. package/lib/Footer/index.d.ts +6 -0
  82. package/lib/Footer/index.js +33 -42
  83. package/lib/Footer/internal-footer.d.ts +29 -0
  84. package/lib/Footer/internal-footer.js +43 -59
  85. package/lib/Footer/layout/plain.d.ts +15 -0
  86. package/lib/Footer/layout/plain.js +25 -30
  87. package/lib/Footer/layout/row.d.ts +18 -0
  88. package/lib/Footer/layout/row.js +34 -23
  89. package/lib/Footer/layout/standard.d.ts +15 -0
  90. package/lib/Footer/layout/standard.js +35 -41
  91. package/lib/Footer/links.d.ts +22 -0
  92. package/lib/Footer/links.js +163 -60
  93. package/lib/Footer/social-media.d.ts +14 -0
  94. package/lib/Footer/social-media.js +31 -25
  95. package/lib/Header/index.d.ts +9 -0
  96. package/lib/Header/index.js +83 -76
  97. package/lib/Icon/index.d.ts +23 -0
  98. package/lib/Icon/index.js +37 -51
  99. package/lib/UserCenter/assets/banner.png +0 -0
  100. package/lib/UserCenter/components/notification.d.ts +5 -0
  101. package/lib/UserCenter/components/notification.js +261 -0
  102. package/lib/UserCenter/components/passport.d.ts +6 -0
  103. package/lib/UserCenter/components/passport.js +86 -0
  104. package/lib/UserCenter/components/privacy.d.ts +11 -0
  105. package/lib/UserCenter/components/privacy.js +101 -0
  106. package/lib/UserCenter/components/settings.d.ts +10 -0
  107. package/lib/UserCenter/components/settings.js +81 -0
  108. package/lib/UserCenter/components/user-basic-info.d.ts +8 -0
  109. package/lib/UserCenter/components/user-basic-info.js +67 -0
  110. package/lib/UserCenter/components/user-center.d.ts +9 -0
  111. package/lib/UserCenter/components/user-center.js +376 -0
  112. package/lib/UserCenter/components/user-info-item.d.ts +10 -0
  113. package/lib/UserCenter/components/user-info-item.js +46 -0
  114. package/lib/UserCenter/components/user-info.d.ts +6 -0
  115. package/lib/UserCenter/components/user-info.js +94 -0
  116. package/lib/UserCenter/components/webhook-item.d.ts +3 -0
  117. package/lib/UserCenter/components/webhook-item.js +236 -0
  118. package/lib/UserCenter/index.d.ts +1 -0
  119. package/lib/UserCenter/index.js +13 -0
  120. package/lib/UserCenter/libs/client.d.ts +2 -0
  121. package/lib/UserCenter/libs/client.js +8 -0
  122. package/lib/UserCenter/libs/locales.d.ts +72 -0
  123. package/lib/UserCenter/libs/locales.js +78 -0
  124. package/lib/UserCenter/libs/utils.d.ts +4 -0
  125. package/lib/UserCenter/libs/utils.js +25 -0
  126. package/lib/blocklets.d.ts +16 -0
  127. package/lib/blocklets.js +28 -36
  128. package/lib/common/header-addons.d.ts +22 -0
  129. package/lib/common/header-addons.js +24 -36
  130. package/lib/common/link-blocker.d.ts +7 -0
  131. package/lib/common/link-blocker.js +10 -18
  132. package/lib/common/overridable-theme-provider.d.ts +18 -0
  133. package/lib/common/overridable-theme-provider.js +9 -14
  134. package/lib/common/wallet-hidden-topbar.d.ts +1 -0
  135. package/lib/common/wallet-hidden-topbar.js +1 -3
  136. package/lib/index.d.ts +5 -0
  137. package/lib/index.js +52 -0
  138. package/lib/types.d.ts +2 -0
  139. package/lib/types.js +3 -5
  140. package/lib/utils.d.ts +8 -0
  141. package/lib/utils.js +16 -23
  142. package/package.json +17 -11
  143. package/src/@types/index.ts +70 -0
  144. package/src/@types/shims.d.ts +12 -0
  145. package/src/UserCenter/assets/banner.png +0 -0
  146. package/src/UserCenter/components/notification.tsx +275 -0
  147. package/src/UserCenter/components/passport.tsx +83 -0
  148. package/src/UserCenter/components/privacy.tsx +107 -0
  149. package/src/UserCenter/components/settings.tsx +78 -0
  150. package/src/UserCenter/components/user-basic-info.tsx +70 -0
  151. package/src/UserCenter/components/user-center.tsx +410 -0
  152. package/src/UserCenter/components/user-info-item.tsx +50 -0
  153. package/src/UserCenter/components/user-info.tsx +85 -0
  154. package/src/UserCenter/components/webhook-item.tsx +243 -0
  155. package/src/UserCenter/index.tsx +1 -0
  156. package/src/UserCenter/libs/client.ts +3 -0
  157. package/src/UserCenter/libs/locales.ts +72 -0
  158. package/src/UserCenter/libs/utils.ts +21 -0
  159. package/src/blocklets.js +2 -0
  160. package/src/index.ts +9 -0
  161. /package/src/common/{link-blocker.js → link-blocker.jsx} +0 -0
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = Settings;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
9
+ var _material = require("@mui/material");
10
+ var _ahooks = require("ahooks");
11
+ var _util = require("@arcblock/ux/lib/Locale/util");
12
+ var _context = require("@arcblock/ux/lib/Locale/context");
13
+ var _locales = require("../libs/locales");
14
+ var _notification = _interopRequireDefault(require("./notification"));
15
+ var _privacy = _interopRequireDefault(require("./privacy"));
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+ function Settings({
18
+ user,
19
+ settings,
20
+ onSave,
21
+ ...rest
22
+ }) {
23
+ const {
24
+ locale
25
+ } = (0, _context.useLocaleContext)();
26
+ const t = (0, _ahooks.useMemoizedFn)((key, data = {}) => {
27
+ return (0, _util.translate)(_locales.translations, key, locale, "en", data);
28
+ });
29
+ const privacyConfigList = (0, _ahooks.useCreation)(() => {
30
+ const userCenterTabs = settings?.userCenterTabs || [];
31
+ return userCenterTabs.map(item => {
32
+ return {
33
+ key: item.value,
34
+ name: item.label,
35
+ value: item.protected
36
+ };
37
+ });
38
+ }, [settings?.userCenterTabs]);
39
+ const tabs = (0, _ahooks.useCreation)(() => {
40
+ return [{
41
+ label: t("notificationManagement"),
42
+ value: "notification",
43
+ content: /* @__PURE__ */(0, _jsxRuntime.jsx)(_notification.default, {
44
+ user
45
+ })
46
+ }, {
47
+ label: t("privacyManagement"),
48
+ value: "privacy",
49
+ content: /* @__PURE__ */(0, _jsxRuntime.jsx)(_privacy.default, {
50
+ configList: privacyConfigList,
51
+ onSave
52
+ })
53
+ }];
54
+ }, [user, privacyConfigList]);
55
+ const currentState = (0, _ahooks.useReactive)({
56
+ tab: tabs[0].value
57
+ });
58
+ const currentTab = (0, _ahooks.useCreation)(() => {
59
+ return tabs.find(x => x.value === currentState.tab);
60
+ }, [currentState.tab]);
61
+ const handleChangeTab = (0, _ahooks.useMemoizedFn)(value => {
62
+ currentState.tab = value;
63
+ });
64
+ return currentTab && /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
65
+ ...rest,
66
+ sx: {
67
+ ...rest?.sx,
68
+ width: 520,
69
+ maxWidth: "100%"
70
+ },
71
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_Tabs.default, {
72
+ variant: "card",
73
+ tabs,
74
+ current: currentTab.value,
75
+ onChange: handleChangeTab
76
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
77
+ mt: 2.5,
78
+ children: currentTab.content
79
+ })]
80
+ });
81
+ }
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import type { BoxProps } from '@mui/material';
3
+ import type { User } from '../../@types';
4
+ export default function UserBasicInfo({ user, isMyself, switchPassport, ...rest }: {
5
+ user: User;
6
+ isMyself: boolean;
7
+ switchPassport: () => void;
8
+ } & BoxProps): import("react").JSX.Element;
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = UserBasicInfo;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _material = require("@mui/material");
9
+ var _react = require("@iconify/react");
10
+ var _swapHorizRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/swap-horiz-rounded"));
11
+ var _Colors = require("@arcblock/ux/lib/Colors");
12
+ var _DID = _interopRequireDefault(require("@arcblock/ux/lib/DID"));
13
+ var _ahooks = require("ahooks");
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function UserBasicInfo({
16
+ user,
17
+ isMyself = true,
18
+ switchPassport,
19
+ ...rest
20
+ }) {
21
+ const currentRole = (0, _ahooks.useCreation)(() => (user?.passports || [])?.find(item => item.name === user.role), [user?.passports, user?.role]);
22
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
23
+ ...rest,
24
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Typography, {
25
+ variant: "h4",
26
+ sx: {
27
+ fontWeight: "bold",
28
+ display: "flex",
29
+ alignItems: "center",
30
+ gap: 1,
31
+ mb: 1
32
+ },
33
+ children: [user?.fullName, isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Chip, {
34
+ label: currentRole?.title || user?.role || "Guest",
35
+ size: "small",
36
+ variant: "outlined",
37
+ sx: {
38
+ flexShrink: 0,
39
+ fontWeight: "bold",
40
+ fontSize: "12px",
41
+ color: _Colors.temp.textBase,
42
+ borderColor: _Colors.temp.strokeBorderStrong,
43
+ backgroundColor: "white",
44
+ textTransform: "capitalize",
45
+ pr: 1,
46
+ pl: 0.5,
47
+ "&:hover": {
48
+ backgroundColor: "rgba(0, 0, 0, 0.04)"
49
+ },
50
+ "&:active": {
51
+ boxShadow: "none"
52
+ }
53
+ },
54
+ clickable: true,
55
+ deleteIcon: /* @__PURE__ */(0, _jsxRuntime.jsx)(_react.Icon, {
56
+ icon: _swapHorizRounded.default,
57
+ color: _Colors.temp.textBase
58
+ }),
59
+ onDelete: switchPassport,
60
+ onClick: switchPassport
61
+ }) : null]
62
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_DID.default, {
63
+ did: user.did,
64
+ copyable: false
65
+ })]
66
+ });
67
+ }
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { PaperProps } from '@mui/material';
3
+ export default function UserCenter({ children, currentTab, contentProps, disableAutoRedirect, autoPopupSetting, }: {
4
+ children: any;
5
+ currentTab: string;
6
+ contentProps?: PaperProps;
7
+ disableAutoRedirect?: boolean;
8
+ autoPopupSetting?: boolean;
9
+ }): import("react").JSX.Element | null;
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = UserCenter;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _react = require("react");
9
+ var _material = require("@mui/material");
10
+ var _ahooks = require("ahooks");
11
+ var _react2 = require("@iconify/react");
12
+ var _settingsOutlineRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/settings-outline-rounded"));
13
+ var _Session = require("@arcblock/did-connect/lib/Session");
14
+ var _Avatar = _interopRequireDefault(require("@arcblock/ux/lib/Avatar"));
15
+ var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
16
+ var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
17
+ var _Colors = require("@arcblock/ux/lib/Colors");
18
+ var _Dialog = require("@arcblock/ux/lib/Dialog");
19
+ var _util = require("@arcblock/ux/lib/Locale/util");
20
+ var _context = require("@arcblock/ux/lib/Locale/context");
21
+ var _ErrorBoundary = require("@arcblock/ux/lib/ErrorBoundary");
22
+ var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
23
+ var _ufo = require("ufo");
24
+ var _Header = _interopRequireDefault(require("../../Header"));
25
+ var _locales = require("../libs/locales");
26
+ var _banner = _interopRequireDefault(require("../assets/banner.png"));
27
+ var _userInfo = _interopRequireDefault(require("./user-info"));
28
+ var _userBasicInfo = _interopRequireDefault(require("./user-basic-info"));
29
+ var _blocklets = require("../../blocklets");
30
+ var _passport = _interopRequireDefault(require("./passport"));
31
+ var _settings = _interopRequireDefault(require("./settings"));
32
+ var _client = require("../libs/client");
33
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
34
+ function UserCenter({
35
+ children,
36
+ currentTab,
37
+ contentProps = {},
38
+ disableAutoRedirect = false,
39
+ autoPopupSetting = false
40
+ }) {
41
+ const {
42
+ locale
43
+ } = (0, _context.useLocaleContext)();
44
+ const t = (0, _ahooks.useMemoizedFn)((key, data = {}) => {
45
+ return (0, _util.translate)(_locales.translations, key, locale, "en", data);
46
+ });
47
+ const sessionCtx = (0, _react.useContext)(_Session.SessionContext);
48
+ const session = sessionCtx?.session;
49
+ const currentDid = (0, _ahooks.useCreation)(() => {
50
+ const currentUrl = window.location.href;
51
+ const query = (0, _ufo.getQuery)(currentUrl);
52
+ if (query?.did) {
53
+ if (Array.isArray(query.did)) {
54
+ return query.did[0];
55
+ }
56
+ return query.did;
57
+ }
58
+ return session?.user?.did;
59
+ }, [session?.user?.did]);
60
+ const isMyself = (0, _ahooks.useCreation)(() => {
61
+ if (session?.user) {
62
+ return currentDid === session?.user?.did;
63
+ }
64
+ return false;
65
+ }, [currentDid, session?.user?.did]);
66
+ const userState = (0, _ahooks.useRequest)(async () => {
67
+ if (isMyself) {
68
+ return session.user;
69
+ }
70
+ if (currentDid) {
71
+ return await _client.client.user.getUserPublicInfo({
72
+ did: currentDid
73
+ });
74
+ }
75
+ throw new Error(t("noUserFound"));
76
+ }, {
77
+ refreshDeps: [currentDid, isMyself]
78
+ });
79
+ const privacyState = (0, _ahooks.useRequest)(async () => {
80
+ if (userState.data && currentTab) {
81
+ const config = await _client.client.user.getUserPrivacyConfig({
82
+ did: currentDid
83
+ });
84
+ return config;
85
+ }
86
+ return null;
87
+ }, {
88
+ refreshDeps: [currentDid, userState.data, currentTab],
89
+ loadingDelay: 300
90
+ });
91
+ const {
92
+ confirmHolder,
93
+ confirmApi
94
+ } = (0, _Dialog.useConfirm)({
95
+ sx: {
96
+ ".MuiDialog-paper": {
97
+ borderRadius: 2
98
+ },
99
+ ".ux-dialog_title": {
100
+ fontWeight: 600
101
+ },
102
+ ".ux-dialog_closeButton": {
103
+ p: 1
104
+ },
105
+ ".MuiDialogActions-root": {
106
+ display: {
107
+ xs: "none",
108
+ md: "flex"
109
+ }
110
+ }
111
+ }
112
+ });
113
+ const formattedBlocklet = (0, _ahooks.useCreation)(() => {
114
+ const blocklet = (0, _cloneDeep.default)(window.blocklet);
115
+ try {
116
+ return (0, _blocklets.formatBlockletInfo)(blocklet);
117
+ } catch (e) {
118
+ console.error("Failed to format blocklet info", e, blocklet);
119
+ return blocklet;
120
+ }
121
+ }, []);
122
+ const userCenterTabs = (0, _ahooks.useCreation)(() => {
123
+ const menus = formattedBlocklet?.navigation?.userCenter || [];
124
+ const localizedMenus = (0, _blocklets.getLocalizedNavigation)(menus, locale) || [];
125
+ return localizedMenus.map(x => {
126
+ const value = x._rawLink ?? x.link;
127
+ return {
128
+ value,
129
+ label: x.title,
130
+ url: x.link,
131
+ protected: privacyState?.data?.[value] ?? false
132
+ // icon: x.icon,
133
+ };
134
+ });
135
+ }, [formattedBlocklet, userState.data, privacyState?.data]);
136
+ const currentActiveTab = (0, _ahooks.useCreation)(() => {
137
+ return userCenterTabs.find(x => x.value === currentTab);
138
+ }, [userCenterTabs]);
139
+ const handleChangeTab = (0, _ahooks.useMemoizedFn)(value => {
140
+ const findTab = userCenterTabs.find(x => x.value === value);
141
+ if (findTab) {
142
+ window.location.href = (0, _ufo.withQuery)(findTab.url, {
143
+ did: isMyself ? void 0 : currentDid
144
+ });
145
+ }
146
+ });
147
+ const xsGridTemplateAreas = (0, _ahooks.useCreation)(() => {
148
+ return ['"avatar settings"', '"basicInfo basicInfo"', userCenterTabs.length > 0 || !isMyself ? '"tabs tabs"' : null, isMyself ? '"passport passport"' : null, isMyself ? '"extraInfo extraInfo"' : null];
149
+ }, [userCenterTabs, isMyself]);
150
+ const mdGridTemplateAreas = (0, _ahooks.useCreation)(() => {
151
+ if (!isMyself) {
152
+ return ['"avatar"', '"basicInfo"', '"tabs"'];
153
+ }
154
+ return ['"avatar settings"', '"basicInfo extraInfo"', userCenterTabs.length > 0 ? '"tabs extraInfo"' : null, '"passport extraInfo"'];
155
+ }, [userCenterTabs, isMyself]);
156
+ const openSettings = (0, _ahooks.useMemoizedFn)(() => {
157
+ confirmApi.open({
158
+ title: t("settings"),
159
+ content: /* @__PURE__ */(0, _jsxRuntime.jsx)(_settings.default, {
160
+ user: userState.data,
161
+ settings: {
162
+ userCenterTabs
163
+ },
164
+ sx: {
165
+ mt: -2
166
+ },
167
+ onSave: async () => {
168
+ await privacyState.runAsync();
169
+ return privacyState.data;
170
+ }
171
+ }),
172
+ showCancelButton: false,
173
+ confirmButtonText: t("done"),
174
+ onConfirm: confirmApi.close
175
+ });
176
+ });
177
+ (0, _ahooks.useMount)(() => {
178
+ if (autoPopupSetting) {
179
+ openSettings();
180
+ }
181
+ });
182
+ const content = (0, _ahooks.useCreation)(() => {
183
+ if (userState.loading || session.loading) {
184
+ return null;
185
+ }
186
+ if (userState.error) {
187
+ const errorMessage = userState.error.response?.data?.error || userState.error.message || "error occurred";
188
+ const formatError = {
189
+ message: errorMessage
190
+ };
191
+ return /* @__PURE__ */(0, _jsxRuntime.jsx)(_ErrorBoundary.ErrorFallback, {
192
+ error: formatError
193
+ });
194
+ }
195
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
196
+ sx: {
197
+ maxWidth: 1200,
198
+ margin: "0 auto",
199
+ px: 3,
200
+ pb: 3,
201
+ display: "grid",
202
+ gap: 2.5,
203
+ gridTemplateAreas: {
204
+ xs: xsGridTemplateAreas.filter(Boolean).join(" "),
205
+ md: mdGridTemplateAreas.filter(Boolean).join(" ")
206
+ },
207
+ gridTemplateRows: {
208
+ xs: "64px auto auto auto",
209
+ md: "64px auto 1fr"
210
+ },
211
+ gridTemplateColumns: {
212
+ xs: "1fr",
213
+ md: isMyself ? "1fr 300px" : "1fr"
214
+ }
215
+ },
216
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
217
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_Avatar.default, {
218
+ src: userState.data?.avatar,
219
+ did: userState.data?.did,
220
+ size: 120,
221
+ variant: "circle",
222
+ shape: "circle",
223
+ style: {
224
+ border: "4px solid #fff",
225
+ transform: "translateY(-50%)",
226
+ borderRadius: "100%",
227
+ gridArea: "avatar",
228
+ backgroundColor: "#fff"
229
+ }
230
+ })
231
+ }), isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
232
+ sx: {
233
+ gridArea: "settings",
234
+ display: "flex",
235
+ justifyContent: "flex-end",
236
+ alignItems: "center"
237
+ },
238
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.IconButton, {
239
+ sx: {
240
+ borderRadius: 2,
241
+ color: _Colors.temp.textBase,
242
+ backgroundColor: "white",
243
+ border: `1px solid ${_Colors.temp.strokeBorderBase}`
244
+ },
245
+ disableFocusRipple: true,
246
+ onClick: openSettings,
247
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_react2.Icon, {
248
+ icon: _settingsOutlineRounded.default
249
+ })
250
+ })
251
+ }) : null, /* @__PURE__ */(0, _jsxRuntime.jsx)(_userBasicInfo.default, {
252
+ isMyself,
253
+ switchPassport: session.switchPassport,
254
+ user: userState.data,
255
+ sx: {
256
+ gridArea: "basicInfo"
257
+ }
258
+ }), userCenterTabs.length > 0 && currentTab ? /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
259
+ sx: {
260
+ gridArea: "tabs",
261
+ overflow: "auto",
262
+ padding: "1px"
263
+ },
264
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_Tabs.default, {
265
+ variant: "card",
266
+ tabs: userCenterTabs,
267
+ current: currentTab,
268
+ onChange: handleChangeTab
269
+ }), !privacyState.data || privacyState.loading ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
270
+ sx: {
271
+ height: "100%",
272
+ minWidth: "160px",
273
+ minHeight: "160px",
274
+ display: "flex",
275
+ justifyContent: "center",
276
+ alignItems: "center"
277
+ },
278
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.CircularProgress, {
279
+ sx: {
280
+ color: _Colors.temp.primary100
281
+ }
282
+ })
283
+ }) : /* @__PURE__ */(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
284
+ children: currentActiveTab?.protected && !isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Paper, {
285
+ variant: "outlined",
286
+ sx: {
287
+ mt: 2,
288
+ borderRadius: 2,
289
+ p: 2
290
+ },
291
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_Empty.default, {
292
+ children: t("underProtected")
293
+ })
294
+ }) : /* @__PURE__ */(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
295
+ children: children && /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Paper, {
296
+ ...contentProps,
297
+ variant: "outlined",
298
+ sx: {
299
+ mt: 2,
300
+ borderRadius: 2,
301
+ p: 2,
302
+ ...contentProps?.sx
303
+ },
304
+ children
305
+ })
306
+ })
307
+ })]
308
+ }) : null, !isMyself && userCenterTabs.length === 0 ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
309
+ sx: {
310
+ gridArea: "tabs",
311
+ overflow: "auto",
312
+ padding: "1px"
313
+ },
314
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Paper, {
315
+ variant: "outlined",
316
+ sx: {
317
+ borderRadius: 2,
318
+ p: 2
319
+ },
320
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_Empty.default, {
321
+ children: t("emptyContent")
322
+ })
323
+ })
324
+ }) : null, isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
325
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
326
+ sx: {
327
+ gridArea: "passport"
328
+ },
329
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
330
+ variant: "h5",
331
+ sx: {
332
+ fontWeight: "bold",
333
+ mb: 1.5
334
+ },
335
+ children: "Passport"
336
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_passport.default, {
337
+ user: userState.data
338
+ })]
339
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
340
+ sx: {
341
+ gridArea: "extraInfo"
342
+ },
343
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_userInfo.default, {
344
+ user: userState.data,
345
+ sx: {
346
+ padding: 3,
347
+ borderRadius: 3
348
+ }
349
+ })
350
+ })]
351
+ }) : null]
352
+ });
353
+ }, [userState, userCenterTabs, mdGridTemplateAreas, xsGridTemplateAreas]);
354
+ if (!disableAutoRedirect && !currentTab && formattedBlocklet?.navigation?.userCenter?.length > 0) {
355
+ window.location.replace(formattedBlocklet?.navigation?.userCenter[0]?.link);
356
+ return null;
357
+ }
358
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
359
+ sx: {
360
+ backgroundColor: _Colors.temp.backgroundsBgSubtitle,
361
+ minHeight: "100vh"
362
+ },
363
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_Header.default, {}), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
364
+ sx: {
365
+ pt: {
366
+ xs: `${400 / 1280 * 100}%`,
367
+ sm: `${300 / 1280 * 100}%`,
368
+ md: `${200 / 1280 * 100}%`
369
+ },
370
+ backgroundImage: `url(${_banner.default})`,
371
+ backgroundSize: "cover",
372
+ minHeight: "60px"
373
+ }
374
+ }), content, confirmHolder]
375
+ });
376
+ }
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ type TUserInfoItemProps = {
3
+ data: {
4
+ icon: any;
5
+ title: string;
6
+ content: any;
7
+ };
8
+ };
9
+ export default function UserInfoItem({ data }: TUserInfoItemProps): import("react").JSX.Element;
10
+ export {};
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = UserInfoItem;
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _material = require("@mui/material");
9
+ var _Colors = require("@arcblock/ux/lib/Colors");
10
+ function UserInfoItem({
11
+ data
12
+ }) {
13
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
14
+ sx: {
15
+ display: "grid",
16
+ gridTemplateColumns: "auto 1fr",
17
+ gridTemplateAreas: `"icon title" ". content"`,
18
+ alignItems: "center",
19
+ rowGap: 0.75,
20
+ columnGap: 1
21
+ },
22
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
23
+ sx: {
24
+ gridArea: "icon",
25
+ display: "flex",
26
+ alignItems: "center"
27
+ },
28
+ children: data.icon
29
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
30
+ sx: {
31
+ color: _Colors.temp.textBase,
32
+ gridArea: "title",
33
+ fontSize: "14px"
34
+ },
35
+ children: data.title
36
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
37
+ sx: {
38
+ color: _Colors.temp.textSubtitle,
39
+ whiteSpace: "pre-wrap",
40
+ gridArea: "content",
41
+ fontSize: "14px"
42
+ },
43
+ children: data.content
44
+ })]
45
+ });
46
+ }
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import type { PaperProps } from '@mui/material';
3
+ import type { User } from '../../@types';
4
+ export default function UserInfo({ user, ...rest }: {
5
+ user: User;
6
+ } & PaperProps): import("react").JSX.Element;