@blocklet/ui-react 2.9.17 → 2.9.19

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 (104) hide show
  1. package/build.config.ts +1 -1
  2. package/es/@types/index.d.ts +2 -0
  3. package/es/Dashboard/index.js +1 -1
  4. package/es/UserCenter/components/settings.d.ts +1 -2
  5. package/es/UserCenter/components/settings.js +8 -1
  6. package/es/UserCenter/components/storage/connect-to.d.ts +7 -0
  7. package/es/UserCenter/components/storage/connect-to.js +104 -0
  8. package/es/UserCenter/components/storage/connected.d.ts +7 -0
  9. package/es/UserCenter/components/storage/connected.js +21 -0
  10. package/es/UserCenter/components/storage/delete.d.ts +7 -0
  11. package/es/UserCenter/components/storage/delete.js +59 -0
  12. package/es/UserCenter/components/storage/disconnect.d.ts +3 -0
  13. package/es/UserCenter/components/storage/disconnect.js +23 -0
  14. package/es/UserCenter/components/storage/icons/empty-spaces-nft.svg +58 -0
  15. package/es/UserCenter/components/storage/icons/long-arrow.svg +5 -0
  16. package/es/UserCenter/components/storage/icons/space-connected.svg +3 -0
  17. package/es/UserCenter/components/storage/icons/space-disconnect.svg +3 -0
  18. package/es/UserCenter/components/storage/index.d.ts +3 -0
  19. package/es/UserCenter/components/storage/index.js +25 -0
  20. package/es/UserCenter/components/storage/item.d.ts +9 -0
  21. package/es/UserCenter/components/storage/item.js +147 -0
  22. package/es/UserCenter/components/storage/preview-nft.d.ts +6 -0
  23. package/es/UserCenter/components/storage/preview-nft.js +80 -0
  24. package/es/UserCenter/components/user-basic-info.d.ts +3 -1
  25. package/es/UserCenter/components/user-basic-info.js +133 -46
  26. package/es/UserCenter/components/user-center.d.ts +9 -6
  27. package/es/UserCenter/components/user-center.js +39 -138
  28. package/es/UserCenter/components/user-info-item.d.ts +2 -1
  29. package/es/UserCenter/components/user-info-item.js +4 -2
  30. package/es/UserCenter/components/user-info.js +6 -2
  31. package/es/UserCenter/libs/api.d.ts +3 -0
  32. package/es/UserCenter/libs/api.js +4 -0
  33. package/es/UserCenter/libs/locales.d.ts +6 -0
  34. package/es/UserCenter/libs/locales.js +8 -2
  35. package/es/contexts/config-user-space.d.ts +26 -0
  36. package/es/contexts/config-user-space.js +53 -0
  37. package/es/hooks/use-mobile.d.ts +4 -0
  38. package/es/hooks/use-mobile.js +5 -0
  39. package/es/libs/spaces.d.ts +1 -0
  40. package/es/libs/spaces.js +7 -0
  41. package/lib/@types/index.d.ts +2 -0
  42. package/lib/Dashboard/index.js +2 -0
  43. package/lib/UserCenter/components/settings.d.ts +1 -2
  44. package/lib/UserCenter/components/settings.js +9 -1
  45. package/lib/UserCenter/components/storage/connect-to.d.ts +7 -0
  46. package/lib/UserCenter/components/storage/connect-to.js +127 -0
  47. package/lib/UserCenter/components/storage/connected.d.ts +7 -0
  48. package/lib/UserCenter/components/storage/connected.js +45 -0
  49. package/lib/UserCenter/components/storage/delete.d.ts +7 -0
  50. package/lib/UserCenter/components/storage/delete.js +71 -0
  51. package/lib/UserCenter/components/storage/disconnect.d.ts +3 -0
  52. package/lib/UserCenter/components/storage/disconnect.js +37 -0
  53. package/lib/UserCenter/components/storage/icons/empty-spaces-nft.svg +58 -0
  54. package/lib/UserCenter/components/storage/icons/long-arrow.svg +5 -0
  55. package/lib/UserCenter/components/storage/icons/space-connected.svg +3 -0
  56. package/lib/UserCenter/components/storage/icons/space-disconnect.svg +3 -0
  57. package/lib/UserCenter/components/storage/index.d.ts +3 -0
  58. package/lib/UserCenter/components/storage/index.js +56 -0
  59. package/lib/UserCenter/components/storage/item.d.ts +9 -0
  60. package/lib/UserCenter/components/storage/item.js +179 -0
  61. package/lib/UserCenter/components/storage/preview-nft.d.ts +6 -0
  62. package/lib/UserCenter/components/storage/preview-nft.js +88 -0
  63. package/lib/UserCenter/components/user-basic-info.d.ts +3 -1
  64. package/lib/UserCenter/components/user-basic-info.js +81 -4
  65. package/lib/UserCenter/components/user-center.d.ts +9 -6
  66. package/lib/UserCenter/components/user-center.js +36 -95
  67. package/lib/UserCenter/components/user-info-item.d.ts +2 -1
  68. package/lib/UserCenter/components/user-info-item.js +5 -2
  69. package/lib/UserCenter/components/user-info.js +9 -2
  70. package/lib/UserCenter/libs/api.d.ts +3 -0
  71. package/lib/UserCenter/libs/api.js +16 -0
  72. package/lib/UserCenter/libs/locales.d.ts +6 -0
  73. package/lib/UserCenter/libs/locales.js +8 -2
  74. package/lib/contexts/config-user-space.d.ts +26 -0
  75. package/lib/contexts/config-user-space.js +61 -0
  76. package/lib/hooks/use-mobile.d.ts +4 -0
  77. package/lib/hooks/use-mobile.js +13 -0
  78. package/lib/libs/spaces.d.ts +1 -0
  79. package/lib/libs/spaces.js +13 -0
  80. package/package.json +6 -4
  81. package/src/@types/index.ts +3 -0
  82. package/src/Dashboard/index.jsx +1 -1
  83. package/src/UserCenter/components/settings.tsx +8 -2
  84. package/src/UserCenter/components/storage/connect-to.tsx +117 -0
  85. package/src/UserCenter/components/storage/connected.tsx +29 -0
  86. package/src/UserCenter/components/storage/delete.tsx +66 -0
  87. package/src/UserCenter/components/storage/disconnect.tsx +27 -0
  88. package/src/UserCenter/components/storage/icons/empty-spaces-nft.svg +58 -0
  89. package/src/UserCenter/components/storage/icons/long-arrow.svg +5 -0
  90. package/src/UserCenter/components/storage/icons/space-connected.svg +3 -0
  91. package/src/UserCenter/components/storage/icons/space-disconnect.svg +3 -0
  92. package/src/UserCenter/components/storage/index.tsx +47 -0
  93. package/src/UserCenter/components/storage/item.tsx +150 -0
  94. package/src/UserCenter/components/storage/preview-nft.tsx +72 -0
  95. package/src/UserCenter/components/user-basic-info.tsx +88 -5
  96. package/src/UserCenter/components/user-center.tsx +36 -115
  97. package/src/UserCenter/components/user-info-item.tsx +4 -2
  98. package/src/UserCenter/components/user-info.tsx +6 -2
  99. package/src/UserCenter/libs/api.ts +7 -0
  100. package/src/UserCenter/libs/locales.ts +6 -0
  101. package/src/contexts/config-user-space.tsx +86 -0
  102. package/src/hooks/use-mobile.tsx +6 -0
  103. package/src/libs/spaces.tsx +10 -0
  104. package/babel.config.es.js +0 -8
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import { BoxProps } from '@mui/material';
3
+ import { SpaceGateway } from '../../../contexts/config-user-space';
4
+ declare function SpaceItem({ spaceGateway, connected, onDisconnect, ...rest }: {
5
+ spaceGateway: SpaceGateway;
6
+ connected: boolean;
7
+ onDisconnect: Function;
8
+ } & BoxProps): import("react").JSX.Element;
9
+ export default SpaceItem;
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _material = require("@mui/material");
9
+ var _context = require("@arcblock/ux/lib/Locale/context");
10
+ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
11
+ var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+ var _spaceConnected = _interopRequireDefault(require("./icons/space-connected.svg?react"));
14
+ var _DID = _interopRequireDefault(require("@arcblock/ux/lib/DID"));
15
+ var _previewNft = _interopRequireDefault(require("./preview-nft"));
16
+ var _useMobile = _interopRequireDefault(require("../../../hooks/use-mobile"));
17
+ var _spaces = require("../../../libs/spaces");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function SpaceItem({
20
+ spaceGateway,
21
+ connected,
22
+ onDisconnect,
23
+ ...rest
24
+ }) {
25
+ const isMobile = (0, _useMobile.default)({});
26
+ const {
27
+ t
28
+ } = (0, _context.useLocaleContext)();
29
+ const handleOnDisconnect = async () => {
30
+ try {
31
+ await onDisconnect();
32
+ _Toast.default.success(t("storage.spaces.gateway.delete.succeeded", {
33
+ name: spaceGateway.name
34
+ }));
35
+ } catch (error) {
36
+ console.error(error);
37
+ _Toast.default.error(error.message);
38
+ }
39
+ };
40
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(BoxContainer, {
41
+ style: {
42
+ position: "relative"
43
+ },
44
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
45
+ sx: {
46
+ backgroundColor: connected ? "#F0FDFF" : "inherit",
47
+ "&:hover": {
48
+ backgroundColor: connected ? "#F0FDFF" : "#FBFBFB"
49
+ },
50
+ borderRadius: "8px"
51
+ },
52
+ display: "flex",
53
+ padding: "12px 20px",
54
+ ...rest,
55
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
56
+ display: "flex",
57
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_previewNft.default, {
58
+ alt: spaceGateway.did,
59
+ src: (0, _spaces.getSpaceNftDisplayUrlFromEndpoint)(spaceGateway.endpoint)
60
+ })
61
+ }), /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
62
+ className: "spaces-info",
63
+ display: "flex",
64
+ flexGrow: 1,
65
+ flexDirection: "column",
66
+ sx: {
67
+ marginLeft: "20px",
68
+ padding: "0px 0px"
69
+ },
70
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
71
+ className: "spaces-info",
72
+ display: "flex",
73
+ maxWidth: "360px",
74
+ alignItems: "center",
75
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
76
+ color: connected ? "primary" : "inherit",
77
+ fontSize: "1rem",
78
+ fontWeight: "bold",
79
+ children: spaceGateway.name
80
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Chip, {
81
+ label: /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
82
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_spaceConnected.default, {
83
+ style: {
84
+ marginRight: "4px"
85
+ }
86
+ }), t("storage.spaces.connected.tag")]
87
+ }),
88
+ variant: "outlined",
89
+ size: "small",
90
+ style: {
91
+ marginLeft: isMobile ? void 0 : "20px",
92
+ fontWeight: "bold"
93
+ }
94
+ })]
95
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
96
+ className: "spaces-address",
97
+ display: "flex",
98
+ color: "#9397A1",
99
+ marginTop: "8px",
100
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
101
+ sx: {
102
+ display: "inline-flex",
103
+ alignItems: "center",
104
+ fontSize: "14px"
105
+ },
106
+ color: "#9397A1",
107
+ children: spaceGateway.did && /* @__PURE__ */(0, _jsxRuntime.jsx)(_DID.default, {
108
+ copyable: false,
109
+ size: 14,
110
+ compact: true,
111
+ responsive: false,
112
+ did: spaceGateway.did
113
+ })
114
+ })
115
+ })]
116
+ })]
117
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
118
+ className: "selected-container selected",
119
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_Check.default, {
120
+ className: "selected-icon"
121
+ })
122
+ })]
123
+ });
124
+ }
125
+ const BoxContainer = (0, _styled.default)(_material.Box)`
126
+ .selected-container {
127
+ position: absolute;
128
+ right: 0px;
129
+ bottom: 0px;
130
+ display: flex;
131
+ -webkit-box-pack: end;
132
+ justify-content: flex-end;
133
+ align-items: flex-end;
134
+ width: 32px;
135
+ height: 32px;
136
+ border-radius: 0px 0px 8px;
137
+ color: rgb(255, 255, 255);
138
+ overflow: hidden;
139
+ transition: all 0.4s ease 0s;
140
+
141
+ &::after {
142
+ position: absolute;
143
+ z-index: 0;
144
+ left: 60px;
145
+ top: 60px;
146
+ display: block;
147
+ width: 0px;
148
+ height: 0px;
149
+ border-width: 16px;
150
+ border-style: solid;
151
+ border-color: transparent #1dc1c7 #1dc1c7 transparent;
152
+ transition: all 0.1s ease 0s;
153
+ content: '';
154
+ }
155
+
156
+ .selected-icon {
157
+ visibility: hidden;
158
+ width: 60%;
159
+ height: 60%;
160
+ position: relative;
161
+ z-index: 2;
162
+ margin: 0px 1px 1px 0px;
163
+ font-size: 16px;
164
+ transition: all 0.2s ease 0s;
165
+ }
166
+ }
167
+
168
+ .selected-container.selected {
169
+ &::after {
170
+ left: 0px;
171
+ top: 0px;
172
+ }
173
+
174
+ .selected-icon {
175
+ visibility: visible;
176
+ }
177
+ }
178
+ `;
179
+ module.exports = SpaceItem;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare function PreviewSpaceNft({ src, alt }: {
3
+ src: string;
4
+ alt: string;
5
+ }): import("react").JSX.Element;
6
+ export default PreviewSpaceNft;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _react = require("react");
9
+ var _reactPlaceholder = _interopRequireDefault(require("react-placeholder"));
10
+ var _material = require("@mui/material");
11
+ var _CloseOutlined = _interopRequireDefault(require("@mui/icons-material/CloseOutlined"));
12
+ var _emptySpacesNft = _interopRequireDefault(require("./icons/empty-spaces-nft.svg?react"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function PreviewSpaceNft({
15
+ src,
16
+ alt
17
+ }) {
18
+ const [showEmptySpaceNFT, setShowEmptySpaceNFT] = (0, _react.useState)(false);
19
+ const [open, setOpen] = (0, _react.useState)(false);
20
+ const handleOpen = () => setOpen(true);
21
+ const handleClose = () => setOpen(false);
22
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
23
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_reactPlaceholder.default, {
24
+ ready: showEmptySpaceNFT,
25
+ customPlaceholder:
26
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
27
+ /* @__PURE__ */
28
+ (0, _jsxRuntime.jsx)("img", {
29
+ style: {
30
+ cursor: "pointer"
31
+ },
32
+ alt,
33
+ src,
34
+ width: "58px",
35
+ height: "58px",
36
+ onError: () => setShowEmptySpaceNFT(true),
37
+ onClick: handleOpen
38
+ }),
39
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_emptySpacesNft.default, {
40
+ style: {
41
+ cursor: "pointer",
42
+ width: "58px",
43
+ height: "58px"
44
+ },
45
+ onClick: handleOpen
46
+ })
47
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Dialog, {
48
+ open,
49
+ onClose: handleClose,
50
+ "aria-labelledby": "preview-space-nft-display",
51
+ "aria-describedby": "preview space nft display",
52
+ fullWidth: true,
53
+ maxWidth: "md",
54
+ children: /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.DialogContent, {
55
+ style: {
56
+ padding: "8px 8px",
57
+ backgroundColor: "rgba(0,0,0,0.8)"
58
+ },
59
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.IconButton, {
60
+ color: "inherit",
61
+ onClick: handleClose,
62
+ "aria-label": "close",
63
+ style: {
64
+ position: "absolute",
65
+ top: 8,
66
+ right: 8,
67
+ color: "white"
68
+ },
69
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_CloseOutlined.default, {})
70
+ }), showEmptySpaceNFT ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_emptySpacesNft.default, {
71
+ style: {
72
+ width: "100%",
73
+ height: "75vh"
74
+ }
75
+ }) : /* @__PURE__ */(0, _jsxRuntime.jsx)("img", {
76
+ src,
77
+ alt: "",
78
+ style: {
79
+ width: "100%",
80
+ height: "75vh",
81
+ objectFit: "contain"
82
+ }
83
+ })]
84
+ })
85
+ })]
86
+ });
87
+ }
88
+ module.exports = PreviewSpaceNft;
@@ -1,8 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  import type { BoxProps } from '@mui/material';
3
3
  import type { User } from '../../@types';
4
- export default function UserBasicInfo({ user, isMyself, switchPassport, ...rest }: {
4
+ export default function UserBasicInfo({ user, isMyself, switchPassport, switchProfile, openSettings, ...rest }: {
5
5
  user: User;
6
6
  isMyself: boolean;
7
7
  switchPassport: () => void;
8
+ switchProfile: () => void;
9
+ openSettings: () => void;
8
10
  } & BoxProps): import("react").JSX.Element;
@@ -8,27 +8,82 @@ var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _material = require("@mui/material");
9
9
  var _react = require("@iconify/react");
10
10
  var _swapHorizRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/swap-horiz-rounded"));
11
+ var _settingsOutlineRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/settings-outline-rounded"));
12
+ var _Avatar = _interopRequireDefault(require("@arcblock/ux/lib/Avatar"));
11
13
  var _Colors = require("@arcblock/ux/lib/Colors");
14
+ var _Theme = require("@arcblock/ux/lib/Theme");
12
15
  var _DID = _interopRequireDefault(require("@arcblock/ux/lib/DID"));
13
16
  var _ahooks = require("ahooks");
17
+ var _util = require("@arcblock/ux/lib/Locale/util");
18
+ var _context = require("@arcblock/ux/lib/Locale/context");
19
+ var _noop = _interopRequireDefault(require("lodash/noop"));
20
+ var _locales = require("../libs/locales");
14
21
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
22
  function UserBasicInfo({
16
23
  user,
17
24
  isMyself = true,
18
25
  switchPassport,
26
+ switchProfile,
27
+ openSettings,
19
28
  ...rest
20
29
  }) {
30
+ const {
31
+ locale
32
+ } = (0, _context.useLocaleContext)();
33
+ const t = (0, _ahooks.useMemoizedFn)((key, data = {}) => {
34
+ return (0, _util.translate)(_locales.translations, key, locale, "en", data);
35
+ });
21
36
  const currentRole = (0, _ahooks.useCreation)(() => (user?.passports || [])?.find(item => item.name === user.role), [user?.passports, user?.role]);
37
+ const theme = (0, _Theme.useTheme)();
38
+ const isSmallView = theme.breakpoints.down("md");
22
39
  return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
23
40
  ...rest,
24
- children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Typography, {
25
- variant: "h4",
41
+ sx: {
42
+ position: "relative",
43
+ ...rest.sx
44
+ },
45
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_Avatar.default, {
46
+ src: user?.avatar,
47
+ did: user?.did,
48
+ size: isSmallView ? 64 : 80,
49
+ variant: "circle",
50
+ shape: "circle",
51
+ sx: {
52
+ borderRadius: "100%",
53
+ backgroundColor: "#fff",
54
+ position: "relative",
55
+ overflow: "hidden",
56
+ ...(isMyself ? {
57
+ cursor: "pointer",
58
+ "&:hover": {
59
+ "&::after": {
60
+ content: `"${t("switchProfile")}"`
61
+ }
62
+ },
63
+ "&::after": {
64
+ color: "white",
65
+ position: "absolute",
66
+ fontSize: "12px",
67
+ bottom: 0,
68
+ left: 0,
69
+ right: 0,
70
+ height: "50%",
71
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
72
+ display: "flex",
73
+ justifyContent: "center",
74
+ alignItems: "center"
75
+ }
76
+ } : {})
77
+ },
78
+ onClick: isMyself ? switchProfile : _noop.default
79
+ }), /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Typography, {
80
+ variant: "h5",
26
81
  sx: {
27
82
  fontWeight: "bold",
28
83
  display: "flex",
29
84
  alignItems: "center",
30
85
  gap: 1,
31
- mb: 1
86
+ fontSize: "24px !important"
32
87
  },
33
88
  children: [user?.fullName, isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Chip, {
34
89
  label: currentRole?.title || user?.role || "Guest",
@@ -62,6 +117,28 @@ function UserBasicInfo({
62
117
  }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_DID.default, {
63
118
  did: user.did,
64
119
  copyable: false
65
- })]
120
+ }), isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.IconButton, {
121
+ sx: {
122
+ borderRadius: 2,
123
+ color: _Colors.temp.textBase,
124
+ backgroundColor: "white",
125
+ border: `1px solid ${_Colors.temp.strokeBorderBase}`,
126
+ position: "absolute",
127
+ bottom: {
128
+ xs: "unset",
129
+ md: 0
130
+ },
131
+ top: {
132
+ xs: 0,
133
+ md: "unset"
134
+ },
135
+ right: 0
136
+ },
137
+ disableFocusRipple: true,
138
+ onClick: openSettings,
139
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_react.Icon, {
140
+ icon: _settingsOutlineRounded.default
141
+ })
142
+ }) : null]
66
143
  });
67
144
  }
@@ -1,9 +1,12 @@
1
1
  /// <reference types="react" />
2
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;
3
+ export default function UserCenter({ children, currentTab, contentProps, disableAutoRedirect, autoPopupSetting, hideFooter, headerProps, footerProps, }: {
4
+ readonly children: any;
5
+ readonly currentTab: string;
6
+ readonly contentProps?: PaperProps;
7
+ readonly disableAutoRedirect?: boolean;
8
+ readonly autoPopupSetting?: boolean;
9
+ readonly hideFooter?: boolean;
10
+ readonly headerProps?: object;
11
+ readonly footerProps?: object;
9
12
  }): import("react").JSX.Element | null;
@@ -8,10 +8,7 @@ var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _react = require("react");
9
9
  var _material = require("@mui/material");
10
10
  var _ahooks = require("ahooks");
11
- var _react2 = require("@iconify/react");
12
- var _settingsOutlineRounded = _interopRequireDefault(require("@iconify-icons/material-symbols/settings-outline-rounded"));
13
11
  var _Session = require("@arcblock/did-connect/lib/Session");
14
- var _Avatar = _interopRequireDefault(require("@arcblock/ux/lib/Avatar"));
15
12
  var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
16
13
  var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
17
14
  var _Colors = require("@arcblock/ux/lib/Colors");
@@ -21,9 +18,8 @@ var _context = require("@arcblock/ux/lib/Locale/context");
21
18
  var _ErrorBoundary = require("@arcblock/ux/lib/ErrorBoundary");
22
19
  var _cloneDeep = _interopRequireDefault(require("lodash/cloneDeep"));
23
20
  var _ufo = require("ufo");
24
- var _Header = _interopRequireDefault(require("../../Header"));
21
+ var _ = require("../../");
25
22
  var _locales = require("../libs/locales");
26
- var _banner = _interopRequireDefault(require("../assets/banner.png"));
27
23
  var _userInfo = _interopRequireDefault(require("./user-info"));
28
24
  var _userBasicInfo = _interopRequireDefault(require("./user-basic-info"));
29
25
  var _blocklets = require("../../blocklets");
@@ -36,7 +32,10 @@ function UserCenter({
36
32
  currentTab,
37
33
  contentProps = {},
38
34
  disableAutoRedirect = false,
39
- autoPopupSetting = false
35
+ autoPopupSetting = false,
36
+ hideFooter = false,
37
+ headerProps = {},
38
+ footerProps = {}
40
39
  }) {
41
40
  const {
42
41
  locale
@@ -144,15 +143,6 @@ function UserCenter({
144
143
  });
145
144
  }
146
145
  });
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
146
  const openSettings = (0, _ahooks.useMemoizedFn)(() => {
157
147
  confirmApi.open({
158
148
  title: t("settings"),
@@ -194,67 +184,19 @@ function UserCenter({
194
184
  }
195
185
  return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
196
186
  sx: {
197
- maxWidth: 1200,
187
+ maxWidth: 880,
198
188
  margin: "0 auto",
199
- px: 3,
200
- pb: 3,
201
- display: "grid",
189
+ p: 3,
190
+ display: "flex",
202
191
  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
- }
192
+ flexDirection: "column"
215
193
  },
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, {
194
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_userBasicInfo.default, {
252
195
  isMyself,
253
196
  switchPassport: session.switchPassport,
254
- user: userState.data,
255
- sx: {
256
- gridArea: "basicInfo"
257
- }
197
+ switchProfile: session.switchProfile,
198
+ openSettings,
199
+ user: userState.data
258
200
  }), userCenterTabs.length > 0 && currentTab ? /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
259
201
  sx: {
260
202
  gridArea: "tabs",
@@ -323,34 +265,35 @@ function UserCenter({
323
265
  })
324
266
  }) : null, isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
325
267
  children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
326
- sx: {
327
- gridArea: "passport"
328
- },
329
268
  children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
330
269
  variant: "h5",
331
270
  sx: {
332
271
  fontWeight: "bold",
333
272
  mb: 1.5
334
273
  },
335
- children: "Passport"
274
+ children: t("passport")
336
275
  }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_passport.default, {
337
276
  user: userState.data
338
277
  })]
339
- }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
340
- sx: {
341
- gridArea: "extraInfo"
342
- },
343
- children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_userInfo.default, {
278
+ }), /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
279
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
280
+ variant: "h5",
281
+ sx: {
282
+ fontWeight: "bold",
283
+ mb: 1.5
284
+ },
285
+ children: t("userInfo")
286
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_userInfo.default, {
344
287
  user: userState.data,
345
288
  sx: {
346
289
  padding: 3,
347
290
  borderRadius: 3
348
291
  }
349
- })
292
+ })]
350
293
  })]
351
294
  }) : null]
352
295
  });
353
- }, [userState, userCenterTabs, mdGridTemplateAreas, xsGridTemplateAreas]);
296
+ }, [userState, userCenterTabs]);
354
297
  if (!disableAutoRedirect && !currentTab && formattedBlocklet?.navigation?.userCenter?.length > 0) {
355
298
  window.location.replace(formattedBlocklet?.navigation?.userCenter[0]?.link);
356
299
  return null;
@@ -358,19 +301,17 @@ function UserCenter({
358
301
  return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
359
302
  sx: {
360
303
  backgroundColor: _Colors.temp.backgroundsBgSubtitle,
361
- minHeight: "100vh"
304
+ minHeight: "100vh",
305
+ display: "flex",
306
+ flexDirection: "column"
362
307
  },
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]
308
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_.Header, {
309
+ ...headerProps
310
+ }), /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
311
+ flex: 1,
312
+ children: [content, confirmHolder]
313
+ }), hideFooter ? null : /* @__PURE__ */(0, _jsxRuntime.jsx)(_.Footer, {
314
+ ...footerProps
315
+ })]
375
316
  });
376
317
  }
@@ -1,4 +1,5 @@
1
1
  /// <reference types="react" />
2
+ import { BoxProps } from '@mui/material';
2
3
  type TUserInfoItemProps = {
3
4
  data: {
4
5
  icon: any;
@@ -6,5 +7,5 @@ type TUserInfoItemProps = {
6
7
  content: any;
7
8
  };
8
9
  };
9
- export default function UserInfoItem({ data }: TUserInfoItemProps): import("react").JSX.Element;
10
+ export default function UserInfoItem({ data, ...rest }: TUserInfoItemProps & BoxProps): import("react").JSX.Element;
10
11
  export {};
@@ -8,16 +8,19 @@ var _jsxRuntime = require("react/jsx-runtime");
8
8
  var _material = require("@mui/material");
9
9
  var _Colors = require("@arcblock/ux/lib/Colors");
10
10
  function UserInfoItem({
11
- data
11
+ data,
12
+ ...rest
12
13
  }) {
13
14
  return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
15
+ ...rest,
14
16
  sx: {
15
17
  display: "grid",
16
18
  gridTemplateColumns: "auto 1fr",
17
19
  gridTemplateAreas: `"icon title" ". content"`,
18
20
  alignItems: "center",
19
21
  rowGap: 0.75,
20
- columnGap: 1
22
+ columnGap: 1,
23
+ ...rest.sx
21
24
  },
22
25
  children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
23
26
  sx: {