@arcblock/ux 2.9.90 → 2.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (337) hide show
  1. package/lib/ActionButton/index.js +36 -48
  2. package/lib/ActivityIndicator/index.js +122 -75
  3. package/lib/Address/compact-text.js +48 -66
  4. package/lib/Address/did-address.js +114 -87
  5. package/lib/Address/index.js +15 -27
  6. package/lib/Address/responsive-did-address.js +48 -50
  7. package/lib/Alert/index.js +58 -52
  8. package/lib/AnimationWaiter/index.js +123 -69
  9. package/lib/Async/index.js +8 -22
  10. package/lib/Avatar/did-motif.js +38 -52
  11. package/lib/Avatar/etherscan-blockies.js +4 -10
  12. package/lib/Avatar/index.js +71 -77
  13. package/lib/Badge/index.js +49 -56
  14. package/lib/Blocklet/blocklet.js +181 -97
  15. package/lib/Blocklet/index.js +4 -24
  16. package/lib/Blocklet/utils.js +50 -13
  17. package/lib/BlockletContext/index.js +21 -31
  18. package/lib/BlockletNFT/index.js +255 -115
  19. package/lib/Button/index.js +5 -11
  20. package/lib/Button/wrap.js +45 -56
  21. package/lib/ButtonGroup/index.js +3 -9
  22. package/lib/CardSelector/index.js +67 -43
  23. package/lib/Center/index.js +19 -20
  24. package/lib/ClickToCopy/copy-button.js +37 -50
  25. package/lib/ClickToCopy/hook.js +10 -18
  26. package/lib/ClickToCopy/index.js +54 -66
  27. package/lib/CodeBlock/LightBox.js +84 -11
  28. package/lib/CodeBlock/index.js +175 -101
  29. package/lib/Colors/index.js +3 -20
  30. package/lib/Colors/themes/default.js +1 -7
  31. package/lib/Colors/themes/temp.js +1 -7
  32. package/lib/ContactForm/index.js +95 -60
  33. package/lib/CookieConsent/index.js +58 -52
  34. package/lib/CountDown/index.js +90 -59
  35. package/lib/DID/index.js +80 -96
  36. package/lib/Datatable/CustomToolbar.js +188 -137
  37. package/lib/Datatable/DatatableContext.js +14 -21
  38. package/lib/Datatable/TableSearch.js +99 -58
  39. package/lib/Datatable/index.js +312 -139
  40. package/lib/Datatable/utils.js +9 -17
  41. package/lib/Dialog/confirm.js +46 -58
  42. package/lib/Dialog/dialog.js +110 -66
  43. package/lib/Dialog/index.js +4 -27
  44. package/lib/Dialog/use-confirm.js +40 -65
  45. package/lib/DidLogo/index.js +14 -22
  46. package/lib/DriftBot/index.js +34 -19
  47. package/lib/Earth/index.js +214 -110
  48. package/lib/Earth/util.js +6 -19
  49. package/lib/Empty/index.js +33 -38
  50. package/lib/ErrorBoundary/fallback.js +45 -43
  51. package/lib/ErrorBoundary/index.js +1 -16
  52. package/lib/Footer/index.js +96 -48
  53. package/lib/Header/auto-hidden.js +28 -31
  54. package/lib/Header/header.js +151 -69
  55. package/lib/Header/index.js +2 -20
  56. package/lib/Header/responsive-header.js +67 -60
  57. package/lib/Icon/image.js +41 -45
  58. package/lib/Icon/index.js +51 -53
  59. package/lib/Img/index.js +77 -88
  60. package/lib/InfoRow/index.js +66 -48
  61. package/lib/Layout/dashboard/external-link.js +38 -53
  62. package/lib/Layout/dashboard/full-page.js +27 -41
  63. package/lib/Layout/dashboard/index.js +177 -132
  64. package/lib/Layout/dashboard/sidebar.js +164 -61
  65. package/lib/Layout/dashboard-legacy/header.js +119 -66
  66. package/lib/Layout/dashboard-legacy/index.js +90 -79
  67. package/lib/Layout/dashboard-legacy/sidebar.js +95 -62
  68. package/lib/Layout/index.js +200 -106
  69. package/lib/LoadingMask/index.js +31 -38
  70. package/lib/Locale/browser-lang.js +2 -8
  71. package/lib/Locale/context.js +46 -69
  72. package/lib/Locale/languages.js +6 -15
  73. package/lib/Locale/selector.js +116 -92
  74. package/lib/Locale/util.js +7 -16
  75. package/lib/Logo/index.js +54 -57
  76. package/lib/Metric/index.js +103 -40
  77. package/lib/NFTDisplay/aspect-ratio-container.js +33 -40
  78. package/lib/NFTDisplay/broken.js +68 -52
  79. package/lib/NFTDisplay/index.js +140 -129
  80. package/lib/NFTDisplay/loading.js +14 -13
  81. package/lib/NFTDisplay/svg-embedder/img.js +18 -33
  82. package/lib/NFTDisplay/svg-embedder/inline-svg.js +28 -32
  83. package/lib/NavMenu/index.js +2 -13
  84. package/lib/NavMenu/nav-menu.js +133 -148
  85. package/lib/NavMenu/style.js +179 -12
  86. package/lib/PageScroller/index.js +82 -93
  87. package/lib/PageScroller/story/FifthComponent.js +4 -10
  88. package/lib/PageScroller/story/FirstComponent.js +4 -10
  89. package/lib/PageScroller/story/FourthComponent.js +4 -10
  90. package/lib/PageScroller/story/FullPage.js +21 -28
  91. package/lib/PageScroller/story/PageContain.js +23 -30
  92. package/lib/PageScroller/story/SecondComponent.js +4 -10
  93. package/lib/PageScroller/story/ThirdComponent.js +4 -10
  94. package/lib/PageScroller/usePrevValue.js +4 -11
  95. package/lib/Passport/index.js +2 -9
  96. package/lib/Passport/passport.js +38 -51
  97. package/lib/PoweredByArcBlock/index.js +19 -33
  98. package/lib/PricingTable/PricingPlan.js +90 -34
  99. package/lib/PricingTable/index.js +28 -26
  100. package/lib/QRCode/index.js +38 -50
  101. package/lib/RelativeTime/index.js +44 -59
  102. package/lib/Result/common.js +85 -107
  103. package/lib/Result/index.js +22 -34
  104. package/lib/Result/result.js +35 -41
  105. package/lib/Result/translations.js +1 -7
  106. package/lib/Screenshot/BaseScreenshot/index.js +65 -43
  107. package/lib/Screenshot/BaseScreenshot/shells/Macbook.js +17 -27
  108. package/lib/Screenshot/BaseScreenshot/shells/Phone.js +14 -25
  109. package/lib/Screenshot/index.js +103 -92
  110. package/lib/SessionBlocklet/index.js +125 -143
  111. package/lib/SessionManager/index.js +2 -9
  112. package/lib/SessionPermission/index.js +13 -23
  113. package/lib/SessionUser/components/logged-in.js +139 -158
  114. package/lib/SessionUser/components/session-user-item.js +44 -58
  115. package/lib/SessionUser/components/session-user-switch.js +133 -152
  116. package/lib/SessionUser/components/un-login.js +27 -35
  117. package/lib/SessionUser/components/user-info.js +62 -74
  118. package/lib/SessionUser/index.js +26 -34
  119. package/lib/SessionUser/libs/translation.js +1 -7
  120. package/lib/SessionUser/libs/utils.js +13 -34
  121. package/lib/Sparkline/index.js +4 -10
  122. package/lib/Spinner/index.js +11 -17
  123. package/lib/SplitButton/index.js +72 -68
  124. package/lib/Success/index.js +28 -34
  125. package/lib/Switch/index.js +64 -75
  126. package/lib/Tabs/index.js +84 -103
  127. package/lib/Tag/index.js +52 -56
  128. package/lib/TextCollapse/index.js +57 -50
  129. package/lib/Theme/index.js +8 -47
  130. package/lib/Theme/theme-provider.js +19 -26
  131. package/lib/Theme/theme.js +49 -62
  132. package/lib/Toast/index.js +41 -73
  133. package/lib/Typography/index.js +44 -55
  134. package/lib/Util/constant.js +16 -22
  135. package/lib/Util/deprecate.js +14 -26
  136. package/lib/Util/federated.js +16 -38
  137. package/lib/Util/index.js +63 -113
  138. package/lib/Util/passport.js +23 -33
  139. package/lib/Util/wallet.js +5 -14
  140. package/lib/Video/index.js +34 -34
  141. package/lib/Wallet/Action.js +72 -49
  142. package/lib/Wallet/Download.js +132 -115
  143. package/lib/Wallet/Open.js +26 -25
  144. package/lib/WalletOSIcon/index.js +33 -42
  145. package/lib/WebWalletSWKeeper/index.js +42 -55
  146. package/lib/WechatPrompt/index.js +53 -33
  147. package/lib/index.js +38 -265
  148. package/lib/withTheme/index.js +53 -33
  149. package/lib/withTracker/error_boundary.js +7 -18
  150. package/lib/withTracker/index.js +25 -34
  151. package/package.json +9 -316
  152. package/src/WalletOSIcon/index.jsx +1 -1
  153. package/es/ActionButton/index.js +0 -99
  154. package/es/ActivityIndicator/index.js +0 -180
  155. package/es/Address/compact-text.js +0 -105
  156. package/es/Address/did-address.js +0 -222
  157. package/es/Address/index.js +0 -23
  158. package/es/Address/responsive-did-address.js +0 -87
  159. package/es/Alert/index.js +0 -134
  160. package/es/AnimationWaiter/default-animation.json +0 -1
  161. package/es/AnimationWaiter/index.js +0 -240
  162. package/es/Async/index.js +0 -38
  163. package/es/Avatar/did-motif.js +0 -68
  164. package/es/Avatar/etherscan-blockies.js +0 -83
  165. package/es/Avatar/index.js +0 -179
  166. package/es/Badge/index.js +0 -98
  167. package/es/Blocklet/blocklet.js +0 -298
  168. package/es/Blocklet/index.js +0 -4
  169. package/es/Blocklet/utils.js +0 -52
  170. package/es/BlockletContext/index.js +0 -65
  171. package/es/BlockletNFT/index.js +0 -412
  172. package/es/Button/index.js +0 -8
  173. package/es/Button/wrap.js +0 -140
  174. package/es/ButtonGroup/index.js +0 -6
  175. package/es/CardSelector/index.js +0 -149
  176. package/es/Center/index.js +0 -41
  177. package/es/ClickToCopy/copy-button.js +0 -72
  178. package/es/ClickToCopy/hook.js +0 -39
  179. package/es/ClickToCopy/index.js +0 -92
  180. package/es/CodeBlock/LightBox.js +0 -85
  181. package/es/CodeBlock/index.js +0 -222
  182. package/es/Colors/index.js +0 -3
  183. package/es/Colors/themes/default.js +0 -77
  184. package/es/Colors/themes/temp.js +0 -41
  185. package/es/ContactForm/index.js +0 -230
  186. package/es/CookieConsent/index.js +0 -113
  187. package/es/CountDown/index.js +0 -178
  188. package/es/DID/index.js +0 -249
  189. package/es/Datatable/CustomToolbar.js +0 -396
  190. package/es/Datatable/DatatableContext.js +0 -34
  191. package/es/Datatable/TableSearch.js +0 -166
  192. package/es/Datatable/index.js +0 -629
  193. package/es/Datatable/utils.js +0 -132
  194. package/es/Dialog/confirm.js +0 -123
  195. package/es/Dialog/dialog.js +0 -201
  196. package/es/Dialog/index.js +0 -4
  197. package/es/Dialog/types.d.ts +0 -17
  198. package/es/Dialog/use-confirm.js +0 -133
  199. package/es/DidLogo/index.js +0 -31
  200. package/es/DriftBot/index.js +0 -70
  201. package/es/Earth/countries.json +0 -8057
  202. package/es/Earth/index.js +0 -521
  203. package/es/Earth/util.js +0 -51
  204. package/es/Empty/index.js +0 -65
  205. package/es/ErrorBoundary/fallback.js +0 -73
  206. package/es/ErrorBoundary/index.js +0 -1
  207. package/es/Footer/index.js +0 -172
  208. package/es/Header/auto-hidden.js +0 -35
  209. package/es/Header/header.js +0 -223
  210. package/es/Header/index.js +0 -2
  211. package/es/Header/responsive-header.js +0 -146
  212. package/es/Icon/image.js +0 -65
  213. package/es/Icon/index.js +0 -84
  214. package/es/Img/index.js +0 -218
  215. package/es/InfoRow/index.js +0 -87
  216. package/es/Layout/dashboard/external-link.js +0 -58
  217. package/es/Layout/dashboard/full-page.js +0 -53
  218. package/es/Layout/dashboard/index.js +0 -282
  219. package/es/Layout/dashboard/sidebar.js +0 -209
  220. package/es/Layout/dashboard-legacy/header.js +0 -174
  221. package/es/Layout/dashboard-legacy/index.js +0 -148
  222. package/es/Layout/dashboard-legacy/sidebar.js +0 -129
  223. package/es/Layout/index.js +0 -335
  224. package/es/LoadingMask/index.js +0 -102
  225. package/es/Locale/browser-lang.js +0 -52
  226. package/es/Locale/context.js +0 -139
  227. package/es/Locale/languages.js +0 -60
  228. package/es/Locale/selector.js +0 -186
  229. package/es/Locale/util.js +0 -21
  230. package/es/Logo/images/logo-dark-text.svg +0 -3
  231. package/es/Logo/images/logo-dark-top.svg +0 -6
  232. package/es/Logo/images/logo-light-text.svg +0 -3
  233. package/es/Logo/images/logo-light-top.svg +0 -6
  234. package/es/Logo/index.js +0 -136
  235. package/es/Metric/index.js +0 -132
  236. package/es/NFTDisplay/NFTBroken.svg +0 -34
  237. package/es/NFTDisplay/README.md +0 -59
  238. package/es/NFTDisplay/aspect-ratio-container.js +0 -39
  239. package/es/NFTDisplay/broken.js +0 -132
  240. package/es/NFTDisplay/demo/data/asset-state-display-url.json +0 -7
  241. package/es/NFTDisplay/demo/data/asset-state-gzipped-svg-1-1.json +0 -10
  242. package/es/NFTDisplay/demo/data/asset-state-gzipped-svg-374-130.json +0 -10
  243. package/es/NFTDisplay/demo/data/asset-state-gzipped-svg-with-foreign-object.json +0 -20
  244. package/es/NFTDisplay/demo/data/asset-state-svg.json +0 -29
  245. package/es/NFTDisplay/demo/data/asset-state-url.json +0 -10
  246. package/es/NFTDisplay/index.js +0 -328
  247. package/es/NFTDisplay/loading.js +0 -18
  248. package/es/NFTDisplay/svg-embedder/img.js +0 -45
  249. package/es/NFTDisplay/svg-embedder/inline-svg.js +0 -39
  250. package/es/NavMenu/index.js +0 -2
  251. package/es/NavMenu/nav-menu.js +0 -358
  252. package/es/NavMenu/style.js +0 -181
  253. package/es/PageScroller/index.js +0 -286
  254. package/es/PageScroller/story/FifthComponent.js +0 -9
  255. package/es/PageScroller/story/FirstComponent.js +0 -9
  256. package/es/PageScroller/story/FourthComponent.js +0 -12
  257. package/es/PageScroller/story/FullPage.js +0 -47
  258. package/es/PageScroller/story/PageContain.js +0 -59
  259. package/es/PageScroller/story/SecondComponent.js +0 -9
  260. package/es/PageScroller/story/ThirdComponent.js +0 -9
  261. package/es/PageScroller/story/index.css +0 -115
  262. package/es/PageScroller/usePrevValue.js +0 -9
  263. package/es/Passport/index.js +0 -2
  264. package/es/Passport/passport.js +0 -103
  265. package/es/PoweredByArcBlock/index.js +0 -31
  266. package/es/PricingTable/PricingPlan.js +0 -124
  267. package/es/PricingTable/index.js +0 -53
  268. package/es/QRCode/index.js +0 -73
  269. package/es/RelativeTime/index.js +0 -107
  270. package/es/Result/common.js +0 -140
  271. package/es/Result/demo/fixtures/result-image-404.svg +0 -1
  272. package/es/Result/index.js +0 -33
  273. package/es/Result/result.js +0 -59
  274. package/es/Result/translations.js +0 -54
  275. package/es/Screenshot/BaseScreenshot/index.js +0 -91
  276. package/es/Screenshot/BaseScreenshot/shells/Macbook.js +0 -51
  277. package/es/Screenshot/BaseScreenshot/shells/Phone.js +0 -36
  278. package/es/Screenshot/demo/images/bg-00.jpg +0 -0
  279. package/es/Screenshot/demo/images/bg-01.jpg +0 -0
  280. package/es/Screenshot/demo/images/bg-02.jpg +0 -0
  281. package/es/Screenshot/demo/images/bg-03.jpg +0 -0
  282. package/es/Screenshot/demo/images/bg-04.jpg +0 -0
  283. package/es/Screenshot/demo/images/bg-05.jpg +0 -0
  284. package/es/Screenshot/demo/images/bg-06.jpg +0 -0
  285. package/es/Screenshot/demo/images/bg-07.jpg +0 -0
  286. package/es/Screenshot/demo/images/bg-08.jpg +0 -0
  287. package/es/Screenshot/demo/images/bg-09.jpg +0 -0
  288. package/es/Screenshot/devices.css +0 -1366
  289. package/es/Screenshot/index.js +0 -299
  290. package/es/SessionBlocklet/index.js +0 -173
  291. package/es/SessionManager/index.js +0 -2
  292. package/es/SessionPermission/index.js +0 -28
  293. package/es/SessionUser/components/logged-in.js +0 -229
  294. package/es/SessionUser/components/session-user-item.js +0 -102
  295. package/es/SessionUser/components/session-user-switch.js +0 -223
  296. package/es/SessionUser/components/un-login.js +0 -64
  297. package/es/SessionUser/components/user-info.js +0 -167
  298. package/es/SessionUser/index.js +0 -49
  299. package/es/SessionUser/libs/translation.js +0 -19
  300. package/es/SessionUser/libs/utils.js +0 -29
  301. package/es/Sparkline/index.js +0 -193
  302. package/es/Spinner/index.js +0 -28
  303. package/es/SplitButton/index.js +0 -145
  304. package/es/Success/index.js +0 -175
  305. package/es/Switch/index.js +0 -96
  306. package/es/Tabs/index.js +0 -214
  307. package/es/Tag/index.js +0 -108
  308. package/es/TextCollapse/index.js +0 -92
  309. package/es/Theme/index.js +0 -16
  310. package/es/Theme/theme-provider.js +0 -39
  311. package/es/Theme/theme.js +0 -145
  312. package/es/Toast/index.js +0 -97
  313. package/es/Typography/index.js +0 -95
  314. package/es/Util/constant.js +0 -42
  315. package/es/Util/deprecate.js +0 -28
  316. package/es/Util/federated.js +0 -91
  317. package/es/Util/index.js +0 -363
  318. package/es/Util/passport.js +0 -62
  319. package/es/Util/wallet.js +0 -32
  320. package/es/Video/index.js +0 -89
  321. package/es/Wallet/Action.js +0 -119
  322. package/es/Wallet/Download.js +0 -331
  323. package/es/Wallet/Open.js +0 -45
  324. package/es/Wallet/images/abtwallet.png +0 -0
  325. package/es/Wallet/images/android_download.svg +0 -23
  326. package/es/Wallet/images/app-store.svg +0 -20
  327. package/es/Wallet/images/google-play.svg +0 -70
  328. package/es/WalletOSIcon/index.js +0 -82
  329. package/es/WebWalletSWKeeper/index.js +0 -117
  330. package/es/WechatPrompt/images/android.png +0 -0
  331. package/es/WechatPrompt/images/ios.png +0 -0
  332. package/es/WechatPrompt/index.js +0 -88
  333. package/es/index.js +0 -38
  334. package/es/withTheme/index.js +0 -69
  335. package/es/withTracker/README.md +0 -34
  336. package/es/withTracker/error_boundary.js +0 -34
  337. package/es/withTracker/index.js +0 -55
@@ -1,99 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import Button from '../Button';
3
- import { mergeProps } from '../Util';
4
- import { withDeprecated } from '../Util/deprecate';
5
-
6
- /**
7
- * Action button component
8
- * @typedef {{
9
- * href: string;
10
- * children?: import('react').ReactNode;
11
- * gradient?: string;
12
- * color?: string;
13
- * icon?: string;
14
- * border?: string;
15
- * text?: string;
16
- * theme?: string;
17
- * variant?: string;
18
- * size?: string;
19
- * width?: string;
20
- * }} ActionButtonProps
21
- */
22
-
23
- /**
24
- * Action button component
25
- * @param {ActionButtonProps} props
26
- * @returns {JSX.Element}
27
- */
28
- import { jsx as _jsx } from "react/jsx-runtime";
29
- import { jsxs as _jsxs } from "react/jsx-runtime";
30
- function ActionButton(props) {
31
- /** @type {ActionButtonProps & {}} */
32
- const newProps = mergeProps(props, ActionButton);
33
- const {
34
- href,
35
- icon,
36
- size,
37
- color,
38
- theme,
39
- variant,
40
- gradient,
41
- children,
42
- text,
43
- ...rest
44
- } = newProps;
45
-
46
- /** @type {import('react').CSSProperties} */
47
- const styles = {};
48
- if (gradient) {
49
- styles.backgroundImage = gradient;
50
- styles.borderColor = 'transparent';
51
- }
52
- const attrs = ['color', 'border', 'width'];
53
- attrs.forEach(x => {
54
- if (newProps[x]) {
55
- styles[x] = newProps[x];
56
- }
57
- });
58
- return /*#__PURE__*/_jsxs(Button, {
59
- color: theme,
60
- href: href,
61
- target: "_blank",
62
- variant: variant,
63
- style: styles,
64
- size: size,
65
- className: "action-button",
66
- ...rest,
67
- children: [!!icon && /*#__PURE__*/_jsx("i", {
68
- className: icon
69
- }), text || children]
70
- });
71
- }
72
- ActionButton.propTypes = {
73
- href: PropTypes.string.isRequired,
74
- children: PropTypes.any,
75
- gradient: PropTypes.string,
76
- color: PropTypes.string,
77
- icon: PropTypes.string,
78
- border: PropTypes.string,
79
- text: PropTypes.string,
80
- theme: PropTypes.string,
81
- variant: PropTypes.string,
82
- size: PropTypes.string,
83
- width: PropTypes.string
84
- };
85
- ActionButton.defaultProps = {
86
- gradient: '',
87
- icon: '',
88
- text: '',
89
- color: '',
90
- border: '',
91
- width: '',
92
- theme: 'inherit',
93
- variant: 'outlined',
94
- size: 'large',
95
- children: null
96
- };
97
- export default withDeprecated(ActionButton, {
98
- name: 'ActionButton'
99
- });
@@ -1,180 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { green, blue } from '@mui/material/colors';
4
- import Logo from '../Logo';
5
- import colors from '../Colors';
6
- import { styled } from '../Theme';
7
-
8
- /**
9
- * ActivityIndicator is used when we want to tell the user the request they made on the UI will take time.
10
- * @typedef {{
11
- * interval?: number;
12
- * messages: string[];
13
- * } & import('react').ComponentPropsWithoutRef<"div"> } ActivityIndicatorProps
14
- */
15
-
16
- /**
17
- * @description ActivityIndicator is used when we want to tell the user the request they made on the UI will take time.
18
- * @param {ActivityIndicatorProps} props
19
- * @returns {JSX.Element}
20
- */
21
- import { jsx as _jsx } from "react/jsx-runtime";
22
- import { jsxs as _jsxs } from "react/jsx-runtime";
23
- export default function ActivityIndicator({
24
- messages,
25
- interval,
26
- ...rest
27
- }) {
28
- const [index, setIndex] = useState(0);
29
- useEffect(() => {
30
- const timer = setInterval(() => {
31
- setIndex((index + 1) % messages.length);
32
- }, interval);
33
- return () => {
34
- clearTimeout(timer);
35
- };
36
- });
37
- return /*#__PURE__*/_jsx(Div, {
38
- ...rest,
39
- children: /*#__PURE__*/_jsxs("div", {
40
- className: "pm-loader-container",
41
- children: [/*#__PURE__*/_jsx("div", {
42
- className: "pm-loader-text",
43
- children: /*#__PURE__*/_jsx("p", {
44
- children: messages[index]
45
- })
46
- }), /*#__PURE__*/_jsxs("div", {
47
- className: "pm-loader-atoms",
48
- children: [/*#__PURE__*/_jsx(Logo, {
49
- style: {
50
- transform: 'scale(0.6)'
51
- },
52
- showText: false
53
- }), /*#__PURE__*/_jsx(Orbit, {
54
- size: 56,
55
- orbitColor: green[500],
56
- atomColor: green[500],
57
- duration: 1
58
- }), /*#__PURE__*/_jsx(Orbit, {
59
- size: 80,
60
- orbitColor: blue[800],
61
- atomColor: blue[800],
62
- duration: 1.5
63
- }), /*#__PURE__*/_jsx(Orbit, {
64
- size: 100,
65
- orbitColor: colors.grey[900],
66
- atomColor: colors.grey[900]
67
- })]
68
- })]
69
- })
70
- });
71
- }
72
- ActivityIndicator.propTypes = {
73
- interval: PropTypes.number,
74
- messages: PropTypes.arrayOf(PropTypes.string.isRequired)
75
- };
76
- ActivityIndicator.defaultProps = {
77
- interval: 3000,
78
- messages: ['Loading data...']
79
- };
80
- const Div = styled('div')`
81
- && {
82
- box-sizing: border-box;
83
- padding: 20px;
84
- width: 100%;
85
- height: 100%;
86
- min-height: 360px;
87
- z-index: 100;
88
- transition: opacity 0.5s linear;
89
- display: flex;
90
- align-items: center;
91
- flex-direction: column;
92
- justify-content: center;
93
- }
94
-
95
- .pm-loader-text {
96
- color: ${colors.grey[900]};
97
- font-size: 14px;
98
- text-align: center;
99
- position: relative;
100
- height: 70px;
101
- -webkit-user-select: none;
102
- }
103
-
104
- .pm-loader-container {
105
- width: 100%;
106
- height: 100%;
107
- display: flex;
108
- align-items: center;
109
- flex-direction: column;
110
- justify-content: center;
111
- flex: 1;
112
- }
113
-
114
- .pm-loader-atoms {
115
- width: 100px;
116
- height: 100px;
117
- display: flex;
118
- position: relative;
119
- align-items: center;
120
- justify-content: center;
121
- }
122
- `;
123
- function Orbit({
124
- size,
125
- orbitColor,
126
- atomColor,
127
- duration,
128
- ...rest
129
- }) {
130
- return /*#__PURE__*/_jsx(OrbitRoot, {
131
- $duration: duration,
132
- style: {
133
- width: size,
134
- height: size,
135
- border: `1px solid ${orbitColor}`
136
- },
137
- ...rest,
138
- children: /*#__PURE__*/_jsx("div", {
139
- style: {
140
- background: atomColor
141
- }
142
- })
143
- });
144
- }
145
- Orbit.propTypes = {
146
- size: PropTypes.number.isRequired,
147
- orbitColor: PropTypes.string.isRequired,
148
- atomColor: PropTypes.string.isRequired,
149
- duration: PropTypes.number
150
- };
151
- Orbit.defaultProps = {
152
- duration: 2
153
- };
154
- const OrbitRoot = styled('div')`
155
- @keyframes orbit {
156
- 0% {
157
- transform: rotate(0deg);
158
- }
159
- 100% {
160
- transform: rotate(360deg);
161
- }
162
- }
163
-
164
- position: absolute;
165
- border-radius: 50%;
166
- animation: orbit ${({
167
- $duration
168
- }) => $duration}s infinite;
169
- animation-timing-function: linear;
170
- transform-origin: center;
171
-
172
- > div {
173
- position: absolute;
174
- top: 50%;
175
- width: 6px;
176
- height: 6px;
177
- transform: translateX(-50%);
178
- border-radius: 50%;
179
- }
180
- `;
@@ -1,105 +0,0 @@
1
- import { Children } from 'react';
2
- import PropTypes from 'prop-types';
3
- import Tooltip, { tooltipClasses } from '@mui/material/Tooltip';
4
- import Box from '@mui/material/Box';
5
- import { styled } from '../Theme';
6
- import { CopyButton } from '../ClickToCopy';
7
- import { jsx as _jsx } from "react/jsx-runtime";
8
- import { jsxs as _jsxs } from "react/jsx-runtime";
9
- const StyledTooltip = styled(({
10
- className,
11
- ...props
12
- }) => /*#__PURE__*/_jsx(Tooltip, {
13
- ...props,
14
- classes: {
15
- popper: className
16
- }
17
- }))({
18
- [`& .${tooltipClasses.tooltip}`]: {
19
- maxWidth: 360,
20
- wordBreak: 'break-all'
21
- }
22
- });
23
-
24
- // 递归, 将 text (string) 部分替换为 CompactText (保持元素结构)
25
- // eslint-disable-next-line react/prop-types
26
- function RecursiveWrapper({
27
- children,
28
- ...rest
29
- }) {
30
- const wrappedChildren = Children.map(children, child => {
31
- if (typeof child === 'string') {
32
- return /*#__PURE__*/_jsx(CompactText, {
33
- ...rest,
34
- children: child
35
- });
36
- }
37
- if (child.props && child.props.children) {
38
- return /*#__PURE__*/_jsx(child.type, {
39
- ...child.props,
40
- children: /*#__PURE__*/_jsx(RecursiveWrapper, {
41
- ...rest,
42
- children: child.props.children
43
- })
44
- });
45
- }
46
- return child;
47
- });
48
- return wrappedChildren;
49
- }
50
-
51
- /**
52
- * 紧凑文本组件 (显示首尾, 中间截断显示省略号), 仅考虑等宽字体的情况
53
- */
54
- export default function CompactText({
55
- startChars,
56
- endChars,
57
- children,
58
- showCopyButtonInTooltip
59
- }) {
60
- if (typeof children !== 'string') {
61
- return /*#__PURE__*/_jsx(RecursiveWrapper, {
62
- startChars: startChars,
63
- endChars: endChars,
64
- showCopyButtonInTooltip: showCopyButtonInTooltip,
65
- children: children
66
- });
67
- }
68
-
69
- // stopPropagation: 当 tooltip 处于 link 中时, 避免点击复制时触发链接跳转
70
- const tooltipContent = /*#__PURE__*/_jsxs(Box, {
71
- display: "flex",
72
- alignItems: "center",
73
- lineHeight: 1,
74
- onClick: e => e.stopPropagation(),
75
- children: [/*#__PURE__*/_jsx(Box, {
76
- children: children
77
- }), showCopyButtonInTooltip && /*#__PURE__*/_jsx(CopyButton, {
78
- content: children,
79
- showTooltip: false,
80
- style: {
81
- fontSize: 16,
82
- marginLeft: 4
83
- }
84
- })]
85
- });
86
- return /*#__PURE__*/_jsx(StyledTooltip, {
87
- title: tooltipContent,
88
- placement: "top",
89
- children: /*#__PURE__*/_jsxs("span", {
90
- children: [children.slice(0, startChars), "...", children.slice(children.length - endChars)]
91
- })
92
- });
93
- }
94
- CompactText.propTypes = {
95
- startChars: PropTypes.number,
96
- endChars: PropTypes.number,
97
- children: PropTypes.node.isRequired,
98
- // 在 tooltip 中完整地址后显示复制按钮
99
- showCopyButtonInTooltip: PropTypes.bool
100
- };
101
- CompactText.defaultProps = {
102
- startChars: 6,
103
- endChars: 6,
104
- showCopyButtonInTooltip: false
105
- };
@@ -1,222 +0,0 @@
1
- import React, { useRef, useState, forwardRef } from 'react';
2
- import PropTypes from 'prop-types';
3
- import '@fontsource/ubuntu-mono/400.css';
4
- import { green } from '@mui/material/colors';
5
- import { Tooltip, Box } from '@mui/material';
6
- import copy from 'copy-to-clipboard';
7
- import { ContentCopy as CopyIcon, Check as CheckIcon } from '@mui/icons-material';
8
- import noop from 'lodash/noop';
9
- import { styled } from '../Theme';
10
- import { getFontSize } from '../Util';
11
- import CompactText from './compact-text';
12
- import { jsx as _jsx } from "react/jsx-runtime";
13
- import { jsxs as _jsxs } from "react/jsx-runtime";
14
- const translations = {
15
- en: {
16
- copy: 'Click To Copy',
17
- copied: 'Copied!'
18
- },
19
- zh: {
20
- copy: '点击复制',
21
- copied: '已复制!'
22
- }
23
- };
24
-
25
- /**
26
- * DidAddress 组件 (新版设计)
27
- *
28
- * - 样式调整
29
- * - click-to-copy 调整
30
- * - 长文本截断处理 (Ellipsis)
31
- * - 支持 inline 或 block 的显示方式
32
- * - 支持紧凑模式, 该模式下:
33
- * - 占用宽度较小, 因此不考虑水平空间不够用的情况, 且忽略末尾省略号
34
- * - 对于多层元素结构的 children, 保持元素结构, 将最内层 text 替换为 CompactText 组件
35
- * - 为保证 copy 功能正常工作, 原 children 始终渲染, 但在紧凑式下会隐藏
36
- * - 可配合 useMediaQuery 使用
37
- */
38
- const DidAddress = /*#__PURE__*/forwardRef(({
39
- component,
40
- size,
41
- copyable,
42
- content,
43
- children,
44
- prepend,
45
- append,
46
- compact,
47
- startChars,
48
- endChars,
49
- locale,
50
- showCopyButtonInTooltip,
51
- ...rest
52
- }, ref) => {
53
- if (!translations[locale]) {
54
- // eslint-disable-next-line no-param-reassign
55
- locale = 'en';
56
- }
57
- const [copied, setCopied] = useState(false);
58
- const textRef = useRef();
59
- const onCopy = e => {
60
- e.stopPropagation();
61
- e.preventDefault();
62
- copy(content || textRef.current.textContent);
63
- setCopied(true);
64
- // 恢复 copied 状态
65
- setTimeout(() => {
66
- setCopied(false);
67
- }, 1500);
68
- };
69
- let copyElement = null;
70
- if (copyable) {
71
- copyElement = /*#__PURE__*/_jsx("span", {
72
- className: "did-address-copy-wrapper",
73
- title: copied ? '' : translations[locale].copy,
74
- children: copied ? /*#__PURE__*/_jsx(Tooltip, {
75
- title: translations[locale].copied,
76
- placement: "bottom",
77
- arrow: true,
78
- open: copied,
79
- children: /*#__PURE__*/_jsx(CheckIcon, {
80
- className: "did-address-copy",
81
- style: {
82
- color: green[500]
83
- }
84
- })
85
- }) :
86
- /*#__PURE__*/
87
- /* title prop 直接加在 icon 上不生效 */
88
- _jsx(CopyIcon, {
89
- className: "did-address-copy",
90
- onClick: onCopy
91
- })
92
- });
93
- }
94
- return /*#__PURE__*/_jsxs(Root, {
95
- as: component,
96
- size: size,
97
- ...rest,
98
- ref: ref,
99
- children: [prepend, /*#__PURE__*/_jsx(Box, {
100
- sx: {
101
- display: 'none'
102
- },
103
- ref: textRef,
104
- children: children
105
- }), /*#__PURE__*/_jsx(Tooltip, {
106
- title: copyable ? '' : translations[locale].copied,
107
- placement: "bottom",
108
- arrow: true,
109
- open: copied,
110
- children: compact ? /*#__PURE__*/_jsx(Box, {
111
- component: "span",
112
- className: "did-address-text",
113
- sx: {
114
- cursor: copyable ? 'unset' : 'pointer'
115
- },
116
- onDoubleClick: copyable ? noop : onCopy,
117
- children: /*#__PURE__*/_jsx(CompactText, {
118
- startChars: startChars,
119
- endChars: endChars,
120
- showCopyButtonInTooltip: showCopyButtonInTooltip,
121
- children: children
122
- })
123
- }) : /*#__PURE__*/_jsx(Box, {
124
- component: "span",
125
- className: "did-address-text did-address-truncate",
126
- sx: {
127
- display: compact ? 'none' : 'inline',
128
- cursor: copyable ? 'unset' : 'pointer'
129
- },
130
- onDoubleClick: copyable ? noop : onCopy,
131
- children: children
132
- })
133
- }), copyElement, append]
134
- });
135
- });
136
- export default DidAddress;
137
- DidAddress.propTypes = {
138
- component: PropTypes.string,
139
- size: PropTypes.number,
140
- copyable: PropTypes.bool,
141
- // compact mode 下, hover 时会在 tooltip 中显示完整地址, showCopyButtonInTooltip = true 时会在完整地址后显示一个复制按钮
142
- showCopyButtonInTooltip: PropTypes.bool,
143
- children: PropTypes.any,
144
- content: PropTypes.string,
145
- inline: PropTypes.bool,
146
- prepend: PropTypes.any,
147
- append: PropTypes.any,
148
- // 紧凑模式
149
- compact: PropTypes.bool,
150
- startChars: PropTypes.number,
151
- endChars: PropTypes.number,
152
- locale: PropTypes.oneOf(['en', 'zh'])
153
- };
154
- DidAddress.defaultProps = {
155
- component: 'span',
156
- size: 0,
157
- copyable: true,
158
- showCopyButtonInTooltip: false,
159
- children: null,
160
- content: '',
161
- inline: false,
162
- prepend: null,
163
- append: null,
164
- compact: false,
165
- startChars: 6,
166
- endChars: 6,
167
- locale: 'en'
168
- };
169
- const Root = styled(Box, {
170
- shouldForwardProp: prop => prop !== 'inline'
171
- })`
172
- font-family: 'Ubuntu Mono', monospace;
173
- && {
174
- display: ${({
175
- inline
176
- }) => inline ? 'inline-flex' : 'flex'};
177
- align-items: center;
178
- max-width: 100%;
179
- overflow: hidden;
180
- color: #ccc;
181
- font-size: ${props => getFontSize(props.size)};
182
- font-weight: 400;
183
-
184
- svg {
185
- fill: currentColor;
186
- }
187
- }
188
-
189
- .did-address-text {
190
- color: #666;
191
- }
192
- /* truncate string with ellipsis */
193
- .did-address-truncate {
194
- white-space: nowrap;
195
- overflow: hidden;
196
- text-overflow: ellipsis;
197
- }
198
-
199
- .did-address-copy-wrapper {
200
- display: flex;
201
- justify-content: center;
202
- align-items: center;
203
- width: 1em;
204
- height: 1em;
205
- margin-left: 8px;
206
- }
207
- .did-address-copy {
208
- flex: 0 0 auto;
209
- font-size: 1em;
210
- color: #999;
211
- cursor: pointer;
212
- }
213
-
214
- /* link */
215
- a {
216
- color: #666;
217
- }
218
- &:hover a {
219
- color: #222;
220
- text-decoration: underline;
221
- }
222
- `;
@@ -1,23 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import DidAddress from './did-address';
3
- import ResponsiveDidAddress from './responsive-did-address';
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- export default function DidAddressWrapper({
6
- responsive,
7
- ...rest
8
- }) {
9
- if (responsive) {
10
- return /*#__PURE__*/_jsx(ResponsiveDidAddress, {
11
- ...rest
12
- });
13
- }
14
- return /*#__PURE__*/_jsx(DidAddress, {
15
- ...rest
16
- });
17
- }
18
- DidAddressWrapper.propTypes = {
19
- responsive: PropTypes.bool
20
- };
21
- DidAddressWrapper.defaultProps = {
22
- responsive: true
23
- };
@@ -1,87 +0,0 @@
1
- import { useState, createRef, useEffect, useRef } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { useSize } from 'ahooks';
4
- import { styled } from '../Theme';
5
- import DidAddress from './did-address';
6
-
7
- /**
8
- * 根据父容器宽度自动切换 compact 模式
9
- *
10
- * 实现逻辑:
11
- * - DidAddress 外层包裹一个容器, 其宽度自动撑满父容器宽度 (即这个容器需要是块级元素或 100% 宽的 inline-block)
12
- * - DidAddress 本身以 inline 形式渲染 (方便探测 did-address 的 full-width)
13
- * - 组件 mounted 时记录 did address 的 full-width (非 compact 模式的宽度)
14
- * - 监听容器宽度变化, 当容器宽度变化时, 对比容器宽度和 did address full-width, => 切换 compact 模式
15
- * - TODO: 初始化时, 在确定是否应该以 compact 模式渲染前, 隐藏显示, 避免闪烁问题
16
- */
17
- import { jsx as _jsx } from "react/jsx-runtime";
18
- export default function ResponsiveDidAddress({
19
- style,
20
- className,
21
- component,
22
- ...rest
23
- }) {
24
- const [compact, setCompact] = useState(false);
25
- // did address 完整显示时的宽度
26
- const [addressFullWidth, setAddressFullWidth] = useState(null);
27
- const containerRef = useRef(null);
28
- const size = useSize(containerRef);
29
- const containerWidth = size?.width || 0;
30
- const ref = /*#__PURE__*/createRef();
31
- // 存储完整显示时 address 组件的宽度
32
- useEffect(() => {
33
- if (!compact && addressFullWidth === null) {
34
- setAddressFullWidth(ref.current.offsetWidth);
35
- }
36
- // eslint-disable-next-line react-hooks/exhaustive-deps
37
- }, []);
38
- useEffect(() => {
39
- if (containerWidth && addressFullWidth) {
40
- setCompact(containerWidth < addressFullWidth);
41
- }
42
- }, [containerWidth, addressFullWidth]);
43
- return /*#__PURE__*/_jsx(Root, {
44
- as: component,
45
- ref: containerRef,
46
- style: style,
47
- className: className,
48
- children: /*#__PURE__*/_jsx(StyledDidAddress, {
49
- ...rest,
50
- component: component,
51
- inline: true,
52
- compact: compact,
53
- ref: ref
54
- })
55
- });
56
- }
57
- ResponsiveDidAddress.propTypes = {
58
- style: PropTypes.object,
59
- className: PropTypes.string,
60
- component: PropTypes.string
61
- };
62
- ResponsiveDidAddress.defaultProps = {
63
- style: {},
64
- className: '',
65
- component: 'span'
66
- };
67
- const Root = styled('div')`
68
- display: block;
69
- overflow: hidden;
70
- ${({
71
- inline
72
- }) => inline && `
73
- display: inline-block;
74
- width: 100%;
75
- `}
76
- `;
77
- const StyledDidAddress = styled(DidAddress)`
78
- && {
79
- max-width: none;
80
- }
81
- .did-address-text {
82
- /* 禁止文本 Ellipsis/截断, 以便测量真实的宽度 */
83
- white-space: nowrap;
84
- overflow: visible;
85
- text-overflow: unset;
86
- }
87
- `;