@arcblock/ux 3.4.15 → 3.5.1

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 (333) hide show
  1. package/lib/package.json.js +1 -1
  2. package/package.json +10 -7
  3. package/src/ActionButton/ActionButton.stories.jsx +0 -61
  4. package/src/ActionButton/index.jsx +0 -106
  5. package/src/ActivityIndicator/ActivityIndicator.stories.jsx +0 -9
  6. package/src/ActivityIndicator/index.jsx +0 -140
  7. package/src/Address/Address.stories.jsx +0 -38
  8. package/src/Address/compact-text.jsx +0 -76
  9. package/src/Address/did-address.tsx +0 -223
  10. package/src/Address/index.tsx +0 -21
  11. package/src/Address/responsive-did-address.tsx +0 -154
  12. package/src/Alert/Alert.stories.jsx +0 -100
  13. package/src/Alert/index.jsx +0 -130
  14. package/src/AnimationWaiter/AnimationWaiter.stories.jsx +0 -35
  15. package/src/AnimationWaiter/dark-animation.json +0 -1
  16. package/src/AnimationWaiter/default-animation.json +0 -1
  17. package/src/AnimationWaiter/index.jsx +0 -296
  18. package/src/Async/index.tsx +0 -44
  19. package/src/Avatar/Avatar.stories.jsx +0 -11
  20. package/src/Avatar/did-motif.jsx +0 -38
  21. package/src/Avatar/etherscan-blockies.js +0 -81
  22. package/src/Avatar/index.jsx +0 -195
  23. package/src/Badge/Badge.stories.jsx +0 -41
  24. package/src/Badge/index.jsx +0 -101
  25. package/src/Blocklet/Blocklet.stories.jsx +0 -21
  26. package/src/Blocklet/blocklet.jsx +0 -276
  27. package/src/Blocklet/index.js +0 -5
  28. package/src/Blocklet/utils.jsx +0 -58
  29. package/src/BlockletContext/index.tsx +0 -72
  30. package/src/BlockletNFT/BlockletNFT.stories.jsx +0 -21
  31. package/src/BlockletNFT/index.jsx +0 -378
  32. package/src/BlockletV2/Blocklet.stories.jsx +0 -34
  33. package/src/BlockletV2/blocklet.tsx +0 -247
  34. package/src/BlockletV2/components/icon-text.tsx +0 -47
  35. package/src/BlockletV2/components/tooltip-icon.tsx +0 -52
  36. package/src/BlockletV2/index.ts +0 -6
  37. package/src/BlockletV2/utils.js +0 -75
  38. package/src/Button/Button.stories.jsx +0 -24
  39. package/src/Button/index.js +0 -9
  40. package/src/Button/wrap.jsx +0 -126
  41. package/src/ButtonGroup/index.js +0 -16
  42. package/src/CardSelector/index.tsx +0 -136
  43. package/src/Center/Center.stories.jsx +0 -20
  44. package/src/Center/index.tsx +0 -33
  45. package/src/ClickToCopy/ClickToCopy.stories.jsx +0 -24
  46. package/src/ClickToCopy/copy-button.tsx +0 -43
  47. package/src/ClickToCopy/hook.ts +0 -42
  48. package/src/ClickToCopy/index.tsx +0 -96
  49. package/src/CloseButton/index.tsx +0 -37
  50. package/src/CodeBlock/CodeBlock.stories.jsx +0 -22
  51. package/src/CodeBlock/LightBox.tsx +0 -87
  52. package/src/CodeBlock/index.tsx +0 -217
  53. package/src/Colors/Colors.stories.jsx +0 -211
  54. package/src/Colors/index.ts +0 -4
  55. package/src/Colors/themes/default.ts +0 -8
  56. package/src/Colors/themes/did-connect.ts +0 -64
  57. package/src/Colors/themes/temp.ts +0 -52
  58. package/src/Config/Config.stories.jsx +0 -16
  59. package/src/Config/config-provider.tsx +0 -62
  60. package/src/Config/index.ts +0 -2
  61. package/src/Config/theme-mode-toggle.tsx +0 -38
  62. package/src/ContactForm/ContactForm.stories.jsx +0 -32
  63. package/src/ContactForm/index.tsx +0 -264
  64. package/src/CookieConsent/CookieConsent.stories.jsx +0 -33
  65. package/src/CookieConsent/index.tsx +0 -104
  66. package/src/CountDown/CountDown.stories.jsx +0 -15
  67. package/src/CountDown/index.tsx +0 -170
  68. package/src/DID/DID.stories.jsx +0 -37
  69. package/src/DID/index.tsx +0 -393
  70. package/src/DIDConnect/app-icon.tsx +0 -37
  71. package/src/DIDConnect/app-info-item.tsx +0 -93
  72. package/src/DIDConnect/auth-apps/auth-apps-info.tsx +0 -77
  73. package/src/DIDConnect/auth-apps/index.tsx +0 -278
  74. package/src/DIDConnect/auth-apps/switch-role.tsx +0 -47
  75. package/src/DIDConnect/did-connect-container.tsx +0 -326
  76. package/src/DIDConnect/did-connect-footer.tsx +0 -76
  77. package/src/DIDConnect/did-connect-logo.tsx +0 -8
  78. package/src/DIDConnect/icons/did-wallet-logo.tsx +0 -18
  79. package/src/DIDConnect/icons/github-logo.tsx +0 -17
  80. package/src/DIDConnect/index.ts +0 -11
  81. package/src/DIDConnect/landing-page.tsx +0 -218
  82. package/src/DIDConnect/powered-by.tsx +0 -48
  83. package/src/DIDConnect/provider-icon.tsx +0 -62
  84. package/src/DIDConnect/request-storage-access-api-dialog.tsx +0 -304
  85. package/src/DIDConnect/with-container.tsx +0 -323
  86. package/src/DIDConnect/with-ux-theme.tsx +0 -22
  87. package/src/DIDLogo/Logo.stories.jsx +0 -11
  88. package/src/DIDLogo/index.tsx +0 -168
  89. package/src/Datatable/CustomToolbar.jsx +0 -415
  90. package/src/Datatable/Datatable.stories.jsx +0 -92
  91. package/src/Datatable/DatatableContext.jsx +0 -35
  92. package/src/Datatable/TableSearch.jsx +0 -166
  93. package/src/Datatable/index.jsx +0 -652
  94. package/src/Datatable/utils.js +0 -161
  95. package/src/Dialog/Dialog.stories.jsx +0 -21
  96. package/src/Dialog/confirm.jsx +0 -143
  97. package/src/Dialog/dialog.jsx +0 -199
  98. package/src/Dialog/index.js +0 -4
  99. package/src/Dialog/types.d.ts +0 -20
  100. package/src/Dialog/use-confirm.jsx +0 -188
  101. package/src/DriftBot/index.tsx +0 -81
  102. package/src/Earth/Earth.stories.jsx +0 -39
  103. package/src/Earth/countries.json +0 -8057
  104. package/src/Earth/index.tsx +0 -515
  105. package/src/Earth/util.ts +0 -72
  106. package/src/Empty/Empty.stories.jsx +0 -23
  107. package/src/Empty/index.jsx +0 -48
  108. package/src/ErrorBoundary/ErrorBoundary.stories.jsx +0 -13
  109. package/src/ErrorBoundary/fallback.tsx +0 -85
  110. package/src/ErrorBoundary/index.ts +0 -1
  111. package/src/Footer/Footer.stories.jsx +0 -13
  112. package/src/Footer/index.tsx +0 -130
  113. package/src/Header/Header.stories.jsx +0 -30
  114. package/src/Header/addon-button.tsx +0 -41
  115. package/src/Header/auto-hidden.tsx +0 -31
  116. package/src/Header/header-addons.tsx +0 -37
  117. package/src/Header/header.tsx +0 -214
  118. package/src/Header/index.ts +0 -3
  119. package/src/Header/responsive-header.tsx +0 -145
  120. package/src/Icon/Icon.stories.jsx +0 -45
  121. package/src/Icon/image.tsx +0 -53
  122. package/src/Icon/index.tsx +0 -63
  123. package/src/Img/Img.stories.jsx +0 -17
  124. package/src/Img/index.jsx +0 -258
  125. package/src/InfoRow/InfoRow.stories.jsx +0 -14
  126. package/src/InfoRow/index.tsx +0 -91
  127. package/src/Layout/Layout.stories.jsx +0 -24
  128. package/src/Layout/dashboard/external-link.tsx +0 -59
  129. package/src/Layout/dashboard/full-page.tsx +0 -58
  130. package/src/Layout/dashboard/index.tsx +0 -260
  131. package/src/Layout/dashboard/sidebar.tsx +0 -198
  132. package/src/Layout/dashboard-legacy/header.tsx +0 -156
  133. package/src/Layout/dashboard-legacy/index.tsx +0 -127
  134. package/src/Layout/dashboard-legacy/sidebar.tsx +0 -129
  135. package/src/Layout/index.tsx +0 -310
  136. package/src/LoadingMask/index.tsx +0 -108
  137. package/src/Locale/LocaleSelector.stories.jsx +0 -44
  138. package/src/Locale/browser-lang.ts +0 -65
  139. package/src/Locale/context.tsx +0 -162
  140. package/src/Locale/languages.ts +0 -58
  141. package/src/Locale/selector.tsx +0 -174
  142. package/src/Locale/util.ts +0 -38
  143. package/src/Logo/Logo.stories.jsx +0 -23
  144. package/src/Logo/images/logo-dark-text.svg +0 -3
  145. package/src/Logo/images/logo-dark-top.svg +0 -6
  146. package/src/Logo/images/logo-light-text.svg +0 -3
  147. package/src/Logo/images/logo-light-top.svg +0 -6
  148. package/src/Logo/index.tsx +0 -58
  149. package/src/Metric/Metric.stories.jsx +0 -29
  150. package/src/Metric/index.tsx +0 -130
  151. package/src/MuiWrap/index.tsx +0 -10
  152. package/src/NFTDisplay/NFTBroken.svg +0 -34
  153. package/src/NFTDisplay/NFTDisplay.stories.jsx +0 -30
  154. package/src/NFTDisplay/README.md +0 -59
  155. package/src/NFTDisplay/aspect-ratio-container.tsx +0 -36
  156. package/src/NFTDisplay/broken.tsx +0 -51
  157. package/src/NFTDisplay/displayApi.ts +0 -43
  158. package/src/NFTDisplay/index.tsx +0 -393
  159. package/src/NFTDisplay/loading.tsx +0 -16
  160. package/src/NFTDisplay/preview.tsx +0 -84
  161. package/src/NFTDisplay/render-svg.tsx +0 -21
  162. package/src/NFTDisplay/svg-embedder/img.tsx +0 -27
  163. package/src/NFTDisplay/svg-embedder/inline-svg.tsx +0 -36
  164. package/src/NavMenu/NavMenu.stories.jsx +0 -17
  165. package/src/NavMenu/images/OCAP.svg +0 -1
  166. package/src/NavMenu/images/abt-network.svg +0 -1
  167. package/src/NavMenu/images/ai-kit.svg +0 -1
  168. package/src/NavMenu/images/aigne-image-smith.svg +0 -1
  169. package/src/NavMenu/images/aigne.svg +0 -1
  170. package/src/NavMenu/images/aistro.png +0 -0
  171. package/src/NavMenu/images/arcsphere.svg +0 -1
  172. package/src/NavMenu/images/blocklet-framework.svg +0 -1
  173. package/src/NavMenu/images/blocklet-launcher.svg +0 -1
  174. package/src/NavMenu/images/blocklet-server.svg +0 -1
  175. package/src/NavMenu/images/blocklet-store.svg +0 -1
  176. package/src/NavMenu/images/creator-studio.svg +0 -1
  177. package/src/NavMenu/images/did-wallet.svg +0 -1
  178. package/src/NavMenu/images/did.svg +0 -1
  179. package/src/NavMenu/images/nft-studio.svg +0 -1
  180. package/src/NavMenu/images/payment-kit.png +0 -0
  181. package/src/NavMenu/images/vc.svg +0 -1
  182. package/src/NavMenu/images/web3-kit.svg +0 -1
  183. package/src/NavMenu/index.ts +0 -3
  184. package/src/NavMenu/nav-menu-context.tsx +0 -30
  185. package/src/NavMenu/nav-menu.tsx +0 -441
  186. package/src/NavMenu/products.tsx +0 -830
  187. package/src/NavMenu/style.ts +0 -258
  188. package/src/NavMenu/sub-container.tsx +0 -125
  189. package/src/NavMenu/sub-item-group.tsx +0 -42
  190. package/src/OrgTransfer/index.tsx +0 -53
  191. package/src/OrgTransfer/locales.ts +0 -25
  192. package/src/OrgTransfer/selector.tsx +0 -252
  193. package/src/OrgTransfer/type.ts +0 -31
  194. package/src/PageScroller/index.tsx +0 -316
  195. package/src/PageScroller/story/FifthComponent.jsx +0 -7
  196. package/src/PageScroller/story/FirstComponent.jsx +0 -7
  197. package/src/PageScroller/story/FourthComponent.jsx +0 -7
  198. package/src/PageScroller/story/FullPage.jsx +0 -55
  199. package/src/PageScroller/story/PageContain.jsx +0 -59
  200. package/src/PageScroller/story/PageScroller.stories.jsx +0 -18
  201. package/src/PageScroller/story/SecondComponent.jsx +0 -7
  202. package/src/PageScroller/story/ThirdComponent.jsx +0 -7
  203. package/src/PageScroller/story/index.css +0 -115
  204. package/src/PageScroller/usePrevValue.ts +0 -11
  205. package/src/Passport/index.ts +0 -3
  206. package/src/Passport/passport.tsx +0 -118
  207. package/src/PhoneInput/PhoneInput.stories.jsx +0 -12
  208. package/src/PhoneInput/country-select.tsx +0 -148
  209. package/src/PhoneInput/index.tsx +0 -269
  210. package/src/PoweredByArcBlock/index.tsx +0 -27
  211. package/src/PricingTable/PricingPlan.tsx +0 -120
  212. package/src/PricingTable/PricingTable.stories.jsx +0 -38
  213. package/src/PricingTable/index.tsx +0 -59
  214. package/src/QRCode/QRCode.stories.jsx +0 -13
  215. package/src/QRCode/index.tsx +0 -66
  216. package/src/RelativeTime/RelativeTime.stories.jsx +0 -20
  217. package/src/RelativeTime/index.tsx +0 -334
  218. package/src/Result/Result.stories.jsx +0 -61
  219. package/src/Result/common.tsx +0 -119
  220. package/src/Result/index.tsx +0 -30
  221. package/src/Result/result.tsx +0 -65
  222. package/src/Result/translations.ts +0 -57
  223. package/src/Screenshot/BaseScreenshot/index.tsx +0 -73
  224. package/src/Screenshot/BaseScreenshot/shells/Macbook.tsx +0 -38
  225. package/src/Screenshot/BaseScreenshot/shells/Phone.tsx +0 -35
  226. package/src/Screenshot/Screenshot.stories.jsx +0 -44
  227. package/src/Screenshot/devices.css +0 -1366
  228. package/src/Screenshot/index.tsx +0 -300
  229. package/src/SessionBlocklet/index.tsx +0 -178
  230. package/src/SessionManager/SessionManager.stories.jsx +0 -9
  231. package/src/SessionManager/index.tsx +0 -3
  232. package/src/SessionPermission/index.tsx +0 -26
  233. package/src/SessionUser/components/did-space.tsx +0 -68
  234. package/src/SessionUser/components/logged-in.tsx +0 -338
  235. package/src/SessionUser/components/quick-login-item.tsx +0 -132
  236. package/src/SessionUser/components/session-user-item.tsx +0 -93
  237. package/src/SessionUser/components/session-user-switch.tsx +0 -240
  238. package/src/SessionUser/components/un-login.tsx +0 -257
  239. package/src/SessionUser/components/user-info.tsx +0 -201
  240. package/src/SessionUser/index.tsx +0 -68
  241. package/src/SessionUser/libs/translation.ts +0 -30
  242. package/src/SessionUser/libs/utils.ts +0 -39
  243. package/src/SharedBridge/index.tsx +0 -126
  244. package/src/SocialShare/index.tsx +0 -194
  245. package/src/Sparkline/Sparkline.stories.jsx +0 -13
  246. package/src/Sparkline/index.tsx +0 -231
  247. package/src/Spinner/Spinner.stories.jsx +0 -98
  248. package/src/Spinner/index.tsx +0 -20
  249. package/src/SplitButton/SplitButton.stories.jsx +0 -32
  250. package/src/SplitButton/index.tsx +0 -116
  251. package/src/SplitButton/useClickAway.tsx +0 -24
  252. package/src/Success/index.tsx +0 -175
  253. package/src/Switch/Switch.stories.jsx +0 -16
  254. package/src/Switch/index.jsx +0 -79
  255. package/src/Tabs/Tabs.stories.jsx +0 -18
  256. package/src/Tabs/index.tsx +0 -255
  257. package/src/Tag/Tag.stories.jsx +0 -15
  258. package/src/Tag/index.jsx +0 -106
  259. package/src/TextCollapse/TextCollapse.stories.jsx +0 -73
  260. package/src/TextCollapse/index.tsx +0 -85
  261. package/src/Theme/Theme.stories.jsx +0 -11
  262. package/src/Theme/index.ts +0 -21
  263. package/src/Theme/theme-provider.tsx +0 -374
  264. package/src/Theme/theme.ts +0 -229
  265. package/src/Toast/Toast.stories.jsx +0 -28
  266. package/src/Toast/index.tsx +0 -80
  267. package/src/Typography/index.tsx +0 -124
  268. package/src/UserCard/Cards/avatar-only.tsx +0 -27
  269. package/src/UserCard/Cards/basic-info.tsx +0 -43
  270. package/src/UserCard/Cards/index.tsx +0 -16
  271. package/src/UserCard/Cards/social-actions.tsx +0 -196
  272. package/src/UserCard/Container/card.tsx +0 -63
  273. package/src/UserCard/Container/dialog.tsx +0 -37
  274. package/src/UserCard/Content/basic.tsx +0 -330
  275. package/src/UserCard/Content/clock.tsx +0 -82
  276. package/src/UserCard/Content/minimal.tsx +0 -113
  277. package/src/UserCard/Content/shorten-label.tsx +0 -32
  278. package/src/UserCard/Content/tooltip-avatar.tsx +0 -80
  279. package/src/UserCard/UserCard.stories.jsx +0 -19
  280. package/src/UserCard/components.tsx +0 -81
  281. package/src/UserCard/index.tsx +0 -132
  282. package/src/UserCard/types.ts +0 -165
  283. package/src/UserCard/use-follow.tsx +0 -111
  284. package/src/UserCard/utils.ts +0 -155
  285. package/src/Util/WebWalletOpener.stories.jsx +0 -5
  286. package/src/Util/client.ts +0 -4
  287. package/src/Util/constant.ts +0 -70
  288. package/src/Util/deprecate.tsx +0 -29
  289. package/src/Util/federated.ts +0 -125
  290. package/src/Util/iframe.ts +0 -19
  291. package/src/Util/index.ts +0 -760
  292. package/src/Util/logger.ts +0 -44
  293. package/src/Util/passport.ts +0 -127
  294. package/src/Util/security.ts +0 -72
  295. package/src/Util/style.ts +0 -17
  296. package/src/Util/wallet.ts +0 -35
  297. package/src/VerificationCode/index.tsx +0 -83
  298. package/src/Video/Video.stories.jsx +0 -6
  299. package/src/Video/index.tsx +0 -70
  300. package/src/Wallet/Action.stories.jsx +0 -8
  301. package/src/Wallet/Action.tsx +0 -118
  302. package/src/Wallet/Download.stories.jsx +0 -9
  303. package/src/Wallet/Download.tsx +0 -157
  304. package/src/Wallet/Open.tsx +0 -47
  305. package/src/Wallet/OpenInWallet.stories.jsx +0 -5
  306. package/src/Wallet/images/abtwallet.png +0 -0
  307. package/src/Wallet/images/android_download.svg +0 -22
  308. package/src/Wallet/images/app-store.svg +0 -30
  309. package/src/Wallet/images/google-play.svg +0 -69
  310. package/src/WalletOSIcon/index.tsx +0 -47
  311. package/src/WebWalletSWKeeper/index.tsx +0 -117
  312. package/src/WechatPrompt/images/android.png +0 -0
  313. package/src/WechatPrompt/images/ios.png +0 -0
  314. package/src/WechatPrompt/index.tsx +0 -75
  315. package/src/global.d.ts +0 -28
  316. package/src/hooks/use-blocklet-logo.tsx +0 -32
  317. package/src/hooks/use-clock.tsx +0 -62
  318. package/src/hooks/use-location-state.tsx +0 -117
  319. package/src/hooks/use-mobile.tsx +0 -6
  320. package/src/index.ts +0 -79
  321. package/src/type.d.ts +0 -44
  322. package/src/withTheme/index.tsx +0 -72
  323. package/src/withTracker/README.md +0 -37
  324. package/src/withTracker/action/bind-wallet.tsx +0 -17
  325. package/src/withTracker/action/login.tsx +0 -18
  326. package/src/withTracker/action/pay.tsx +0 -14
  327. package/src/withTracker/action/switch-passport.tsx +0 -20
  328. package/src/withTracker/constant/index.tsx +0 -3
  329. package/src/withTracker/env.tsx +0 -1
  330. package/src/withTracker/error_boundary.jsx +0 -34
  331. package/src/withTracker/index.tsx +0 -50
  332. package/src/withTracker/libs/utm.ts +0 -46
  333. package/vite.config.mjs +0 -37
@@ -1,326 +0,0 @@
1
- import { memo, useRef } from 'react';
2
- import { useBrowser } from '@arcblock/react-hooks';
3
- import { Backdrop, Box, Dialog, DialogContent, Drawer, SwipeableDrawer, SxProps, useMediaQuery } from '@mui/material';
4
- import { useCreation, useDebounce } from 'ahooks';
5
- import colorConvert from 'color-convert';
6
- import { getDIDMotifInfo } from '@arcblock/did-motif';
7
- import noop from 'lodash/noop';
8
-
9
- import { useTheme } from '../Theme';
10
- import { mergeSx } from '../Util/style';
11
- import { getDIDColor, hexToRgba, isEthereumDid } from '../Util';
12
- import DIDConnectFooter from './did-connect-footer';
13
-
14
- // eslint-disable-next-line react/require-default-props
15
- const BackdropWrap = memo(({ ref, ...backdropProps }: { ref?: React.Ref<unknown> }) => {
16
- return (
17
- <Backdrop
18
- open
19
- ref={ref}
20
- style={{
21
- backgroundColor: 'rgba(0, 0, 0, 0.6)',
22
- backdropFilter: 'blur(3px)',
23
- touchAction: 'none',
24
- }}
25
- {...backdropProps}
26
- key="background"
27
- />
28
- );
29
- });
30
-
31
- export default function DIDConnectContainer({
32
- open = false,
33
- popup = false,
34
- hideCloseButton = false,
35
- children,
36
- appPid = undefined,
37
- slotProps = undefined,
38
- onClose = noop,
39
- keepMounted = false,
40
- }: {
41
- // 是否弹出显示, true 表示在 Dialog 中渲染, 并可以通过 open/onClose 控制 dialog 的显示/隐藏, false 表示直接渲染原内容
42
- popup?: boolean;
43
- open?: boolean;
44
- hideCloseButton?: boolean;
45
- children: React.ReactNode;
46
- onClose?: () => void;
47
- appPid?: string;
48
- slotProps?: {
49
- footer?: {
50
- sx?: SxProps;
51
- };
52
- containerPage?: {
53
- sx?: SxProps;
54
- };
55
- containerDrawer?: {
56
- sx?: SxProps;
57
- };
58
- containerDialog?: {
59
- sx?: SxProps;
60
- };
61
- };
62
- keepMounted?: boolean;
63
- }) {
64
- const color = useCreation(() => {
65
- const did = appPid || window.blocklet.appPid;
66
- const isEthDid = isEthereumDid(did);
67
- const didMotifInfo = isEthDid ? undefined : getDIDMotifInfo(did);
68
- if (isEthDid) {
69
- return getDIDColor(did);
70
- }
71
-
72
- return didMotifInfo.color;
73
- }, []);
74
-
75
- const drawerDragger = useRef(null);
76
- const browser = useBrowser();
77
- // 屏宽小于 sm 且在 mobile 设备中全屏显示 dialog (PC 端屏宽小于 sm 的情况正常弹窗, 不全屏显示)
78
- const matchSm = useMediaQuery('(max-width:640px)');
79
- let openVariant = 'page';
80
- if (popup) {
81
- openVariant = 'dialog';
82
- if (matchSm && browser.mobile.any) {
83
- openVariant = 'drawer';
84
- }
85
- }
86
-
87
- const theme = useTheme();
88
-
89
- const leavingScreenDelay = theme?.transitions?.duration?.leavingScreen || 500; // 默认值是 195
90
- const debouncedOpen = useDebounce(open, {
91
- wait: leavingScreenDelay,
92
- });
93
-
94
- // eslint-disable-next-line no-unused-vars
95
- const handleOnClose = (e: React.MouseEvent<HTMLElement>, reason: string) => {
96
- if (['backdropClick', 'escapeKeyDown'].includes(reason)) return;
97
- onClose();
98
- };
99
-
100
- const showModal = debouncedOpen || open || keepMounted;
101
-
102
- const DrawerComponent = hideCloseButton ? Drawer : SwipeableDrawer;
103
-
104
- const hslColor = colorConvert.hex.hsl(color);
105
-
106
- const [h, s, l] = hslColor;
107
- const percentageList = [0, 30, 60, 30, 0, 30, 60, 30];
108
- const maxPercentage = Math.max(...percentageList);
109
- const minPercentage = Math.min(...percentageList);
110
- let useAlpha = false;
111
- if ((l * (100 + maxPercentage)) / 100 > 100 || (l * (100 + minPercentage)) / 100 < 0) {
112
- // 超出范围,使用 alpha 通道变化
113
- useAlpha = true;
114
- }
115
- const colorList = percentageList.map((percentageItem) => {
116
- let finalL = (l * (100 + percentageItem)) / 100;
117
- let finalAlpha = 0.6;
118
- if (useAlpha) {
119
- finalAlpha = (0.5 * (100 + percentageItem)) / 100;
120
- } else {
121
- finalL = (l * (100 + percentageItem)) / 100;
122
- }
123
- return `hsla(${h}, ${s}%, ${finalL}%, ${finalAlpha})`;
124
- });
125
- const background = `linear-gradient(45deg, ${colorList.join(', ')})`;
126
- const colorListGlow = percentageList.map((percentageItem) => {
127
- let finalL = (l * (100 + percentageItem)) / 100;
128
- let finalAlpha = 0.2;
129
- if (useAlpha) {
130
- finalAlpha = (0.3 * (100 + percentageItem)) / 100;
131
- } else {
132
- finalL = (l * (100 + percentageItem)) / 100;
133
- }
134
- return `hsla(${h}, ${s}%, ${finalL}%, ${finalAlpha})`;
135
- });
136
-
137
- const backgroundGlow = `linear-gradient(45deg, ${colorListGlow.join(', ')})`;
138
-
139
- const glowStyle = open
140
- ? {
141
- overflow: 'visible',
142
- '&::before, &::after': {
143
- content: '""',
144
- position: 'absolute',
145
- top: '-3px',
146
- right: '-3px',
147
- bottom: '-3px',
148
- left: '-3px',
149
- background,
150
- backgroundSize: '300% 300%',
151
- backgroundRepeat: 'no-repeat',
152
- animation: 'glowRotate 10s linear infinite',
153
- borderRadius: '14px !important',
154
- zIndex: 0,
155
- },
156
- '&::after': {
157
- background: backgroundGlow,
158
- filter: 'blur(15px)',
159
- },
160
-
161
- '@keyframes glowRotate': {
162
- '0%': {
163
- backgroundPosition: '0 0',
164
- },
165
- '50%': {
166
- backgroundPosition: '100% 0',
167
- },
168
- '100%': {
169
- backgroundPosition: '0 0',
170
- },
171
- },
172
- }
173
- : {};
174
-
175
- if (openVariant === 'page') {
176
- return (
177
- <Box
178
- className="did-connect__container-page"
179
- sx={mergeSx(
180
- {
181
- borderRadius: 1,
182
- position: 'relative',
183
- zIndex: 1,
184
- backgroundColor: 'background.default',
185
- },
186
- glowStyle,
187
- slotProps?.containerPage?.sx
188
- )}>
189
- <Box
190
- sx={{
191
- border: `3px solid ${hexToRgba(color, 0.1)}`,
192
- m: '-1px',
193
- position: 'relative',
194
- borderRadius: '12px',
195
- zIndex: 2,
196
- overflow: 'hidden',
197
- backgroundColor: 'background.default',
198
- }}>
199
- {children}
200
- <DIDConnectFooter currentAppColor={color} sx={mergeSx({ mx: 0 }, slotProps?.footer?.sx)} />
201
- </Box>
202
- </Box>
203
- );
204
- }
205
-
206
- if (openVariant === 'drawer') {
207
- return (
208
- <DrawerComponent
209
- className="did-connect__container-drawer"
210
- disableSwipeToOpen
211
- open={open}
212
- anchor="bottom"
213
- drawerDragger={drawerDragger.current}
214
- // @ts-ignore
215
- onClose={handleOnClose}
216
- slots={{
217
- backdrop: BackdropWrap,
218
- }}
219
- slotProps={{
220
- paper: {
221
- sx: mergeSx(
222
- {
223
- backgroundColor: 'background.default',
224
- borderRadius: 3, // 保持跟 DID Wallet 一致
225
- borderBottomLeftRadius: 0,
226
- borderBottomRightRadius: 0,
227
- p: '2px',
228
- '.did-connect__root': {
229
- backgroundColor: 'transparent',
230
- },
231
- overflow: 'hidden',
232
- animation: open ? 'glowBreathe 7s linear infinite' : 'none',
233
- '@keyframes glowBreathe': {
234
- '0%, 100%': {
235
- boxShadow: `
236
- inset 0 0 7px ${hexToRgba(color, 0.3)},
237
- inset 0 0 12px ${hexToRgba(color, 0.3)}`,
238
- },
239
- '50%': {
240
- boxShadow: `
241
- inset 0 0 18px ${hexToRgba(color, 0.7)},
242
- inset 0 0 24px ${hexToRgba(color, 0.5)}`,
243
- },
244
- },
245
- },
246
- slotProps?.containerDrawer?.sx
247
- ),
248
- },
249
- }}>
250
- {hideCloseButton ? null : (
251
- <Box
252
- ref={drawerDragger}
253
- sx={{
254
- px: 1,
255
- pt: 2,
256
- m: 'auto',
257
- mt: -1,
258
- mb: -2,
259
- zIndex: 2,
260
- }}>
261
- <Box
262
- sx={{
263
- width: '48px',
264
- height: '4px',
265
- borderRadius: '100vw',
266
- backgroundColor: 'rgba(0, 0, 0, 0.2)',
267
- }}
268
- />
269
- </Box>
270
- )}
271
- <Box
272
- sx={{
273
- touchAction: 'none',
274
- maxWidth: '100%',
275
- width: 500,
276
- height: 'auto',
277
- backgroundColor: 'background.default',
278
- }}>
279
- {/* HACK: 由于 MUI 文档中描述 使用 keepMounted: false 可能会造成问题,所以采用下面的方案进行 HACK */}
280
- {/* https://mui.com/material-ui/react-drawer/#keep-mounted */}
281
- {showModal ? children : null}
282
- <DIDConnectFooter currentAppColor={color} sx={mergeSx({ mx: 0 }, slotProps?.footer?.sx)} />
283
- </Box>
284
- </DrawerComponent>
285
- );
286
- }
287
-
288
- return (
289
- <Dialog
290
- open={open}
291
- slots={{
292
- backdrop: BackdropWrap,
293
- }}
294
- keepMounted={keepMounted}
295
- className="did-connect__container-dialog"
296
- onClose={handleOnClose}
297
- PaperProps={{
298
- sx: mergeSx(
299
- {
300
- // 避免样式被 server 中的定义覆盖
301
- '&.MuiPaper-rounded': {
302
- borderRadius: '12px !important',
303
- },
304
- position: 'relative',
305
- backgroundColor: 'background.default',
306
- },
307
- glowStyle,
308
- slotProps?.containerDialog?.sx
309
- ),
310
- }}>
311
- <DialogContent
312
- sx={{
313
- maxWidth: 'calc(100vw - 18px)',
314
- maxHeight: 'calc(100vh - 18px)',
315
- p: '0px !important',
316
- height: 'auto',
317
- borderRadius: '12px !important',
318
- zIndex: 1,
319
- backgroundColor: 'background.default',
320
- }}>
321
- {showModal ? children : null}
322
- <DIDConnectFooter currentAppColor={color} sx={mergeSx({ mx: 0 }, slotProps?.footer?.sx)} />
323
- </DialogContent>
324
- </Dialog>
325
- );
326
- }
@@ -1,76 +0,0 @@
1
- import { Box, SxProps } from '@mui/material';
2
- import { useCreation, useSize } from 'ahooks';
3
- import { useRef } from 'react';
4
- import useBrowser from '@arcblock/react-hooks/lib/useBrowser';
5
-
6
- import PoweredBy from './powered-by';
7
- import AppInfoItem from './app-info-item';
8
- import AppIcon from './app-icon';
9
- import { getDIDColor, hexToRgba } from '../Util';
10
- import { mergeSx } from '../Util/style';
11
- import { DID_CONNECT_MEDIUM_WIDTH } from '../Util/constant';
12
-
13
- export default function DIDConnectFooter({
14
- currentAppInfo = globalThis.blocklet,
15
- currentAppColor = globalThis.blocklet?.appPid ? getDIDColor(globalThis.blocklet?.appPid) : '#fff',
16
- sx = {},
17
- }: {
18
- currentAppInfo?: any;
19
- currentAppColor?: string;
20
- sx?: SxProps;
21
- }) {
22
- // 使用当前应用的配置,不用跟随主站变化
23
- const blocklet = globalThis?.blocklet;
24
- const browser = useBrowser();
25
- const rootRef = useRef<HTMLDivElement>(null);
26
- const size = useSize(rootRef);
27
- const isSmallView = useCreation(() => {
28
- if (size) {
29
- return size.width < DID_CONNECT_MEDIUM_WIDTH - 50;
30
- }
31
- return true;
32
- }, [size, size?.width]);
33
-
34
- return (
35
- <Box
36
- ref={rootRef}
37
- sx={mergeSx(
38
- {
39
- display: 'flex',
40
- justifyContent: blocklet?.settings?.didConnect?.showAppInfo === false ? 'center' : 'space-between',
41
- alignItems: 'center',
42
- gap: 1,
43
- fontSize: 12,
44
- backgroundColor:
45
- blocklet?.settings?.didConnect?.showDidColor === false ? 'grey.50' : hexToRgba(currentAppColor, 0.08),
46
- // 需要保持跟 .did-connect__root 的规则一样
47
- mx: -3,
48
- // eslint-disable-next-line no-nested-ternary
49
- px: isSmallView && browser.arcSphere ? 1 : 3,
50
- py: 1.5,
51
- // HACK: 极限条件下,footer 会溢出,使用隐藏的滚动条来处理这种情况(屏幕宽度小于 360 时会出现)
52
- overflow: 'auto',
53
- '&::-webkit-scrollbar': {
54
- display: 'none', // 隐藏滚动条 (Webkit 浏览器)
55
- },
56
- '-ms-overflow-style': 'none', // 隐藏滚动条 (IE 浏览器)
57
- 'scrollbar-width': 'none', // 隐藏滚动条 (Firefox)
58
- },
59
- sx
60
- )}
61
- className="did-connect__footer">
62
- {blocklet?.settings?.didConnect?.showAppInfo === false ? null : (
63
- <AppInfoItem
64
- appInfo={currentAppInfo}
65
- appLogo={<AppIcon appInfo={currentAppInfo} size={24} sx={{ flexShrink: 0 }} />}
66
- sx={{
67
- flex: 1,
68
- overflow: 'hidden',
69
- }}
70
- />
71
- )}
72
-
73
- <PoweredBy sx={{ maxWidth: '100%', justifyContent: 'end' }} />
74
- </Box>
75
- );
76
- }
@@ -1,8 +0,0 @@
1
- import { useTheme } from '@mui/material';
2
- import DIDLogo from '../DIDLogo';
3
-
4
- export default function DidConnectLogo() {
5
- const theme = useTheme();
6
-
7
- return <DIDLogo size={16} fontSize={36} name="connect" dark={theme.palette.mode === 'dark'} />;
8
- }
@@ -1,18 +0,0 @@
1
- import { Box } from '@mui/material';
2
-
3
- type LogoSize = number | string;
4
-
5
- export default function DIDWalletLogo({
6
- width = '100%',
7
- height = '100%',
8
- ...rest
9
- }: {
10
- width?: LogoSize;
11
- height?: LogoSize;
12
- [key: string]: any;
13
- }) {
14
- const didWalletLogo =
15
- 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI3ByZWZpeF9fY2xpcDApIj48cmVjdCB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHJ4PSI2IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQwX2xpbmVhcikiLz48ZyBmaWx0ZXI9InVybCgjcHJlZml4X19maWx0ZXIwX2kpIj48cGF0aCBkPSJNMy41MiA3LjM2QTIuNTYgMi41NiAwIDAxNi4wOCA0LjhoMTkuODRhMi41NiAyLjU2IDAgMDEyLjU2IDIuNTZ2MTIuMTZhMi41NiAyLjU2IDAgMDEtMi41NiAyLjU2SDYuMDhhMi41NiAyLjU2IDAgMDEtMi41Ni0yLjU2VjcuMzZ6IiBmaWxsPSIjOUZDQkZGIi8+PC9nPjxnIGZpbHRlcj0idXJsKCNwcmVmaXhfX2ZpbHRlcjFfZCkiPjxwYXRoIGQ9Ik0yLjU2IDkuMjhhMi41NiAyLjU2IDAgMDEyLjU2LTIuNTZoMjEuNzZhMi41NiAyLjU2IDAgMDEyLjU2IDIuNTZ2MTMuNmEyLjU2IDIuNTYgMCAwMS0yLjU2IDIuNTZINS4xMmEyLjU2IDIuNTYgMCAwMS0yLjU2LTIuNTZWOS4yOHoiIGZpbGw9InVybCgjcHJlZml4X19wYWludDFfbGluZWFyKSIvPjwvZz48ZyBmaWx0ZXI9InVybCgjcHJlZml4X19maWx0ZXIyX2QpIj48cGF0aCBkPSJNMCAyMi4zMmwzMi02LjE2VjMySDB2LTkuNjh6IiBmaWxsPSJ1cmwoI3ByZWZpeF9fcGFpbnQyX2xpbmVhcikiLz48L2c+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik01LjUzNiA5LjI0OGg4LjI4OGMuNDA4IDAgLjc0LjMuNzQuNjcydjQuNjRjMCAuMzcxLS4zMzIuNjcyLS43NC42NzJINS41MzZjLS40MDggMC0uNzQtLjMtLjc0LS42NzJ2LS4wNGEuMTU4LjE1OCAwIDEwLS4zMTYgMHYuMDRjMCAuNTMuNDczLjk2IDEuMDU2Ljk2aDguMjg4Yy41ODMgMCAxLjA1Ni0uNDMgMS4wNTYtLjk2VjkuOTJjMC0uNTMtLjQ3My0uOTYtMS4wNTYtLjk2SDUuNTM2Yy0uNTgzIDAtMS4wNTYuNDMtMS4wNTYuOTZ2LjA0YS4xNTguMTU4IDAgMDAuMzE3IDB2LS4wNGMwLS4zNzEuMzMtLjY3Mi43MzktLjY3MnptLTEuMDIzIDQuNjM4YS4xMjcuMTI3IDAgMDAuMDg3LjAzNGgxLjI2N2MuNDcyIDAgLjgzLS4xMDcgMS4wNzYtLjMyMi4yNS0uMjE3LjM4MS0uNTQ4LjM5Ny0uOTkzYTExLjI4MSAxMS4yODEgMCAwMDAtLjczNGMtLjAxMi0uNDI2LS4xNDgtLjc1MS0uNDA2LS45NzUtLjI1OC0uMjI0LS42MjItLjMzNi0xLjA5LS4zMzZINC42YS4xMjcuMTI3IDAgMDAtLjA4Ny4wMzQuMTE3LjExNyAwIDAwLS4wMzMuMDg2djMuMTJjMCAuMDMyLjAxMS4wNi4wMzMuMDg2em0xLjc5NC0uODA2Yy0uMDk5LjEtLjI1My4xNDktLjQ2NC4xNDloLS41MDJWMTEuMjVoLjQ3OGMuMjEgMCAuMzY5LjA1MS40NzQuMTU0LjEwOC4xMDIuMTY2LjI2LjE3Mi40NzUuMDA2LjA5LjAxLjIwOC4wMS4zNTVzLS4wMDQuMjY3LS4wMS4zNmMtLjAwNi4yMjEtLjA1OS4zODMtLjE1OC40ODV6bTEuNjMuODA2YS4xMjcuMTI3IDAgMDAuMDg3LjAzNGguNjRhLjExNi4xMTYgMCAwMC4wODctLjAzNC4xMS4xMSAwIDAwLjAzOC0uMDg2di0zLjEyYS4xMS4xMSAwIDAwLS4wMzgtLjA4Ni4xMTYuMTE2IDAgMDAtLjA4Ni0uMDM0aC0uNjQxYS4xMjcuMTI3IDAgMDAtLjA4Ny4wMzQuMTE3LjExNyAwIDAwLS4wMzMuMDg2djMuMTJjMCAuMDMyLjAxMS4wNi4wMzMuMDg2em0xLjYzNy4wMzRhLjEyNy4xMjcgMCAwMS0uMDg2LS4wMzQuMTI4LjEyOCAwIDAxLS4wMzMtLjA4NnYtMy4xMmMwLS4wMzUuMDEtLjA2NC4wMzMtLjA4NmEuMTI3LjEyNyAwIDAxLjA4Ni0uMDM0aDEuMjQ0Yy40NjkgMCAuODMyLjExMiAxLjA5LjMzNi4yNTkuMjI0LjM5NC41NDkuNDA3Ljk3NGExMS4yNDQgMTEuMjQ0IDAgMDEwIC43MzVjLS4wMTYuNDQ1LS4xNDguNzc2LS4zOTcuOTkzLS4yNDUuMjE1LS42MDQuMzIyLTEuMDc2LjMyMkg5LjU3NHptMS4yNDQtLjY5MWMuMjEgMCAuMzY1LS4wNS40NjQtLjE0OS4wOTktLjEwMi4xNTItLjI2NC4xNTgtLjQ4NWE1LjUyIDUuNTIgMCAwMC4wMS0uMzZjMC0uMTQ3LS4wMDQtLjI2NS0uMDEtLjM1NS0uMDA2LS4yMTQtLjA2NC0uMzczLS4xNzItLjQ3NS0uMTA2LS4xMDMtLjI2My0uMTU0LS40NzQtLjE1NGgtLjQ3OHYxLjk3OGguNTAyem0yLjQ2OC0xLjM4MmEuMjg4LjI4OCAwIDAxLS4yODgtLjI4Ni4yODguMjg4IDAgMDEuNTc2IDBjMCAuMTU4LS4xMy4yODYtLjI4OC4yODZ6bTAgMS40OTVhLjI4OC4yODggMCAwMS0uMjg4LS4yODYuMjg4LjI4OCAwIDAxLjU3NiAwYzAgLjE1OC0uMTMuMjg3LS4yODguMjg3eiIgZmlsbD0iIzQ1OThGQSIvPjwvZz48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQwX2xpbmVhciIgeDE9IjE2IiB5MT0iMCIgeDI9IjE2IiB5Mj0iMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjNEY5REY2Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMEE3OUY4Ii8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQxX2xpbmVhciIgeDE9IjE2IiB5MT0iNi43MiIgeDI9IjE2IiB5Mj0iMjUuNDQiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjZmZmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjRUNFRkZGIi8+PC9saW5lYXJHcmFkaWVudD48bGluZWFyR3JhZGllbnQgaWQ9InByZWZpeF9fcGFpbnQyX2xpbmVhciIgeDE9IjE2IiB5MT0iMTkuMiIgeDI9IjE4LjQ4IiB5Mj0iMzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9Ii4wMDciIHN0b3AtY29sb3I9IiM3N0IyRjYiLz48c3RvcCBvZmZzZXQ9Ii4wNTUiIHN0b3AtY29sb3I9IiM0RjlERjYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0NTk4RkEiLz48L2xpbmVhckdyYWRpZW50PjxmaWx0ZXIgaWQ9InByZWZpeF9fZmlsdGVyMF9pIiB4PSIzLjUyIiB5PSIxLjgiIHdpZHRoPSIyNC45NiIgaGVpZ2h0PSIyMC4yOCIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+PGZlQmxlbmQgaW49IlNvdXJjZUdyYXBoaWMiIGluMj0iQmFja2dyb3VuZEltYWdlRml4IiByZXN1bHQ9InNoYXBlIi8+PGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPjxmZU9mZnNldCBkeT0iLTMiLz48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIi8+PGZlQ29tcG9zaXRlIGluMj0iaGFyZEFscGhhIiBvcGVyYXRvcj0iYXJpdGhtZXRpYyIgazI9Ii0xIiBrMz0iMSIvPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAxIDAgMCAwIDAgMSAwIDAgMCAwIDEgMCAwIDAgMC4yIDAiLz48ZmVCbGVuZCBpbjI9InNoYXBlIiByZXN1bHQ9ImVmZmVjdDFfaW5uZXJTaGFkb3ciLz48L2ZpbHRlcj48ZmlsdGVyIGlkPSJwcmVmaXhfX2ZpbHRlcjFfZCIgeD0iLTEuNDQiIHk9IjEuNzIiIHdpZHRoPSIzNC44OCIgaGVpZ2h0PSIyNi43MiIgZmlsdGVyVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiPjxmZUZsb29kIGZsb29kLW9wYWNpdHk9IjAiIHJlc3VsdD0iQmFja2dyb3VuZEltYWdlRml4Ii8+PGZlQ29sb3JNYXRyaXggaW49IlNvdXJjZUFscGhhIiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIiByZXN1bHQ9ImhhcmRBbHBoYSIvPjxmZU9mZnNldCBkeT0iLTEiLz48ZmVHYXVzc2lhbkJsdXIgc3RkRGV2aWF0aW9uPSIyIi8+PGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAuMjIwNzY3IDAgMCAwIDAgMC40NzA4MDMgMCAwIDAgMCAwLjcwMTYwNSAwIDAgMCAwLjE4IDAiLz48ZmVCbGVuZCBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3ciLz48ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz48L2ZpbHRlcj48ZmlsdGVyIGlkPSJwcmVmaXhfX2ZpbHRlcjJfZCIgeD0iLTUiIHk9IjExLjE2IiB3aWR0aD0iNDIiIGhlaWdodD0iMjUuODQiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzPSJzUkdCIj48ZmVGbG9vZCBmbG9vZC1vcGFjaXR5PSIwIiByZXN1bHQ9IkJhY2tncm91bmRJbWFnZUZpeCIvPjxmZUNvbG9yTWF0cml4IGluPSJTb3VyY2VBbHBoYSIgdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAxMjcgMCIgcmVzdWx0PSJoYXJkQWxwaGEiLz48ZmVPZmZzZXQvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjIuNSIvPjxmZUNvbG9yTWF0cml4IHZhbHVlcz0iMCAwIDAgMCAwLjE0MzgyIDAgMCAwIDAgMC4yMDUwNjUgMCAwIDAgMCAwLjUyMjYzNCAwIDAgMCAwLjI1IDAiLz48ZmVCbGVuZCBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3ciLz48ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJlZmZlY3QxX2Ryb3BTaGFkb3ciIHJlc3VsdD0ic2hhcGUiLz48L2ZpbHRlcj48Y2xpcFBhdGggaWQ9InByZWZpeF9fY2xpcDAiPjxyZWN0IHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgcng9IjYiIGZpbGw9IiNmZmYiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4=';
16
-
17
- return <Box component="img" width={width} height={height} alt="did-wallet-logo" {...rest} src={didWalletLogo} />;
18
- }
@@ -1,17 +0,0 @@
1
- type LogoSize = number | string;
2
-
3
- export default function GithubLogo({
4
- width = 24,
5
- height = 24,
6
- ...props
7
- }: {
8
- width?: LogoSize;
9
- height?: LogoSize;
10
- [key: string]: any;
11
- }) {
12
- return (
13
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 250" width={width} height={height} {...props}>
14
- <path d="M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46c6.397 1.185 8.746-2.777 8.746-6.158c0-3.052-.12-13.135-.174-23.83c-35.61 7.742-43.124-15.103-43.124-15.103c-5.823-14.795-14.213-18.73-14.213-18.73c-11.613-7.944.876-7.78.876-7.78c12.853.902 19.621 13.19 19.621 13.19c11.417 19.568 29.945 13.911 37.249 10.64c1.149-8.272 4.466-13.92 8.127-17.116c-28.431-3.236-58.318-14.212-58.318-63.258c0-13.975 5-25.394 13.188-34.358c-1.329-3.224-5.71-16.242 1.24-33.874c0 0 10.749-3.44 35.21 13.121c10.21-2.836 21.16-4.258 32.038-4.307c10.878.049 21.837 1.47 32.066 4.307c24.431-16.56 35.165-13.12 35.165-13.12c6.967 17.63 2.584 30.65 1.255 33.873c8.207 8.964 13.173 20.383 13.173 34.358c0 49.163-29.944 59.988-58.447 63.157c4.591 3.972 8.682 11.762 8.682 23.704c0 17.126-.148 30.91-.148 35.126c0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002C256 57.307 198.691 0 128.001 0m-80.06 182.34c-.282.636-1.283.827-2.194.39c-.929-.417-1.45-1.284-1.15-1.922c.276-.655 1.279-.838 2.205-.399c.93.418 1.46 1.293 1.139 1.931m6.296 5.618c-.61.566-1.804.303-2.614-.591c-.837-.892-.994-2.086-.375-2.66c.63-.566 1.787-.301 2.626.591c.838.903 1 2.088.363 2.66m4.32 7.188c-.785.545-2.067.034-2.86-1.104c-.784-1.138-.784-2.503.017-3.05c.795-.547 2.058-.055 2.861 1.075c.782 1.157.782 2.522-.019 3.08m7.304 8.325c-.701.774-2.196.566-3.29-.49c-1.119-1.032-1.43-2.496-.726-3.27c.71-.776 2.213-.558 3.315.49c1.11 1.03 1.45 2.505.701 3.27m9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033c-1.448-.439-2.395-1.613-2.103-2.626c.301-1.01 1.747-1.484 3.207-1.028c1.446.436 2.396 1.602 2.095 2.622m10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95c-1.53.034-2.769-.82-2.786-1.86c0-1.065 1.202-1.932 2.733-1.958c1.522-.03 2.768.818 2.768 1.868m10.555-.405c.182 1.03-.875 2.088-2.387 2.37c-1.485.271-2.861-.365-3.05-1.386c-.184-1.056.893-2.114 2.376-2.387c1.514-.263 2.868.356 3.061 1.403" />
15
- </svg>
16
- );
17
- }
@@ -1,11 +0,0 @@
1
- export { default as DIDConnectFooter } from './did-connect-footer';
2
- export { default as AppInfoItem } from './app-info-item';
3
- export { default as AppIcon } from './app-icon';
4
- export { default as PoweredBy } from './powered-by';
5
- export { default as withContainer } from './with-container';
6
- export { default as withUxTheme } from './with-ux-theme';
7
- export { default as DIDConnectLogo } from './did-connect-logo';
8
- export { default as DIDConnectContainer } from './did-connect-container';
9
- export { default as RequestStorageAccessApiDialog } from './request-storage-access-api-dialog';
10
- export { default as AuthApps } from './auth-apps';
11
- export type { RequestAppInfo, CurrentAppInfo } from './auth-apps/auth-apps-info';
@@ -1,218 +0,0 @@
1
- import { Box, Theme, Typography, useMediaQuery } from '@mui/material';
2
- import { isEthereumDid } from '@arcblock/did';
3
- import { getDIDMotifInfo } from '@arcblock/did-motif';
4
- import { useCreation } from 'ahooks';
5
- import { useTheme } from '../Theme';
6
-
7
- import PoweredByArcBlock from '../PoweredByArcBlock';
8
- import Avatar from '../Avatar';
9
- import { getDIDColor, hexToRgba } from '../Util';
10
- import useBlockletLogo from '../hooks/use-blocklet-logo';
11
-
12
- type LandingPageProps = {
13
- did: string;
14
- children: React.ReactNode;
15
- title?: any;
16
- description?: any;
17
- actions?: any;
18
- logo?: any;
19
- logoSize?: number;
20
- poweredBy?: any;
21
- termsOfUse?: any;
22
- standalone?: boolean;
23
- };
24
-
25
- export default function LandingPage({
26
- did,
27
- children,
28
- title = undefined,
29
- description = undefined,
30
- actions = undefined,
31
- logo = undefined,
32
- logoSize = 50,
33
- poweredBy = undefined,
34
- termsOfUse = undefined,
35
- standalone = false,
36
- }: LandingPageProps) {
37
- const blockletData = globalThis?.blocklet || globalThis?.env || {};
38
- const { palette } = useTheme();
39
- const isMd = useMediaQuery((theme: Theme) => theme.breakpoints.down('lg'));
40
- const appLogo = useBlockletLogo({
41
- meta: blockletData,
42
- });
43
- const currentAppColor = useCreation(() => {
44
- const _did = blockletData.appPid;
45
- const isEthDid = isEthereumDid(_did);
46
- const didMotifInfo = isEthDid ? undefined : getDIDMotifInfo(_did);
47
- if (isEthDid) {
48
- return getDIDColor(_did);
49
- }
50
-
51
- return didMotifInfo.color;
52
- }, [blockletData?.appPid]);
53
-
54
- if (!did) {
55
- return children;
56
- }
57
-
58
- if (title === undefined) {
59
- // eslint-disable-next-line no-param-reassign
60
- title = blockletData.appName;
61
- }
62
- if (description === undefined) {
63
- // eslint-disable-next-line no-param-reassign
64
- description = blockletData.appDescription;
65
- }
66
-
67
- if (logo === undefined) {
68
- // eslint-disable-next-line no-param-reassign
69
- logo = appLogo || '';
70
- }
71
-
72
- if (typeof logo === 'string') {
73
- if (logo) {
74
- // eslint-disable-next-line no-param-reassign
75
- logo = (
76
- <Box
77
- sx={{
78
- height: logoSize,
79
- maxHeight: logoSize,
80
- objectFit: 'contain',
81
- }}
82
- component="img"
83
- src={logo}
84
- alt={`${blockletData.appName}'s logo`}
85
- />
86
- );
87
- } else {
88
- // eslint-disable-next-line no-param-reassign
89
- logo = <Avatar size={logoSize} did={did} src={logo} variant="rounded" />;
90
- }
91
- }
92
-
93
- if (poweredBy === undefined) {
94
- // eslint-disable-next-line no-param-reassign
95
- poweredBy = (
96
- <PoweredByArcBlock
97
- linkProps={{
98
- color: palette.text.secondary,
99
- sx: {
100
- '&:hover': {
101
- textDecoration: 'underline',
102
- },
103
- },
104
- }}
105
- showExtra={!isMd}
106
- sx={{
107
- textAlign: 'center',
108
- fontSize: '12px',
109
- color: 'text.secondary',
110
- }}
111
- />
112
- );
113
- }
114
-
115
- let content = children;
116
- if (!children && !isMd) {
117
- content = (
118
- <Box
119
- sx={{
120
- filter: 'blur(180px)',
121
- display: 'flex',
122
- }}>
123
- {/* 这里只能使用 did-avatar,用于加强页面的层次感 */}
124
- <Avatar size={210} did={did} variant="rounded" />
125
- </Box>
126
- );
127
- }
128
-
129
- const showChildren = Boolean(children);
130
- let showInfo = !standalone;
131
- if (isMd) {
132
- showInfo = !showChildren;
133
- }
134
-
135
- return (
136
- <Box
137
- sx={{
138
- width: '100%',
139
- minHeight: '100vh',
140
- display: 'flex',
141
- justifyContent: 'center',
142
- alignItems: 'center',
143
- px: {
144
- xs: 2,
145
- sm: 4,
146
- md: 8,
147
- },
148
- pt: {
149
- xs: 2,
150
- sm: 4,
151
- md: 6,
152
- },
153
- pb: {
154
- xs: 5,
155
- md: 8,
156
- },
157
- background: `radial-gradient(circle at bottom right, ${hexToRgba(currentAppColor, 0.3)} 10%, ${palette.background.default} 50%)`,
158
- position: 'relative',
159
- }}>
160
- <Box
161
- sx={{
162
- maxWidth: 1200,
163
- display: 'flex',
164
- alignItems: 'center',
165
- justifyContent: [showInfo, content].filter(Boolean).length > 1 ? 'space-between' : 'center',
166
- width: '100%',
167
- margin: 'auto',
168
- }}>
169
- {showInfo ? (
170
- <Box
171
- sx={{
172
- display: 'flex',
173
- flexDirection: 'column',
174
- gap: 1.5,
175
- }}>
176
- <Box sx={{ display: 'flex', alignItems: 'center' }}>{logo}</Box>
177
- <Typography
178
- variant="h2"
179
- sx={{
180
- fontWeight: 'bold',
181
- fontSize: {
182
- sm: '2.25rem',
183
- md: '2.75rem',
184
- xl: '3.5rem',
185
- },
186
- }}>
187
- {title}
188
- </Typography>
189
- {description ? (
190
- <Box
191
- sx={{
192
- mb: 2,
193
- color: 'text.secondary',
194
- }}>
195
- {description}
196
- </Box>
197
- ) : null}
198
- {actions ? <Box sx={{ mt: 8 }}>{actions}</Box> : null}
199
- {termsOfUse ? <Box sx={{ mt: -1, color: 'grey' }}>{termsOfUse}</Box> : null}
200
- </Box>
201
- ) : null}
202
-
203
- {content}
204
- </Box>
205
- <Box
206
- sx={{
207
- position: 'absolute',
208
- zIndex: 10,
209
- bottom: 10,
210
- left: 10,
211
- right: 10,
212
- textAlign: 'center',
213
- }}>
214
- {poweredBy}
215
- </Box>
216
- </Box>
217
- );
218
- }