@arcblock/ux 3.4.14 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/lib/Util/constant.d.ts +6 -0
  2. package/lib/Util/constant.js +25 -16
  3. package/lib/package.json.js +1 -1
  4. package/package.json +12 -9
  5. package/src/ActionButton/ActionButton.stories.jsx +0 -61
  6. package/src/ActionButton/index.jsx +0 -106
  7. package/src/ActivityIndicator/ActivityIndicator.stories.jsx +0 -9
  8. package/src/ActivityIndicator/index.jsx +0 -140
  9. package/src/Address/Address.stories.jsx +0 -38
  10. package/src/Address/compact-text.jsx +0 -76
  11. package/src/Address/did-address.tsx +0 -223
  12. package/src/Address/index.tsx +0 -21
  13. package/src/Address/responsive-did-address.tsx +0 -154
  14. package/src/Alert/Alert.stories.jsx +0 -100
  15. package/src/Alert/index.jsx +0 -130
  16. package/src/AnimationWaiter/AnimationWaiter.stories.jsx +0 -35
  17. package/src/AnimationWaiter/dark-animation.json +0 -1
  18. package/src/AnimationWaiter/default-animation.json +0 -1
  19. package/src/AnimationWaiter/index.jsx +0 -296
  20. package/src/Async/index.tsx +0 -44
  21. package/src/Avatar/Avatar.stories.jsx +0 -11
  22. package/src/Avatar/did-motif.jsx +0 -38
  23. package/src/Avatar/etherscan-blockies.js +0 -81
  24. package/src/Avatar/index.jsx +0 -195
  25. package/src/Badge/Badge.stories.jsx +0 -41
  26. package/src/Badge/index.jsx +0 -101
  27. package/src/Blocklet/Blocklet.stories.jsx +0 -21
  28. package/src/Blocklet/blocklet.jsx +0 -276
  29. package/src/Blocklet/index.js +0 -5
  30. package/src/Blocklet/utils.jsx +0 -58
  31. package/src/BlockletContext/index.tsx +0 -72
  32. package/src/BlockletNFT/BlockletNFT.stories.jsx +0 -21
  33. package/src/BlockletNFT/index.jsx +0 -378
  34. package/src/BlockletV2/Blocklet.stories.jsx +0 -34
  35. package/src/BlockletV2/blocklet.tsx +0 -247
  36. package/src/BlockletV2/components/icon-text.tsx +0 -47
  37. package/src/BlockletV2/components/tooltip-icon.tsx +0 -52
  38. package/src/BlockletV2/index.ts +0 -6
  39. package/src/BlockletV2/utils.js +0 -75
  40. package/src/Button/Button.stories.jsx +0 -24
  41. package/src/Button/index.js +0 -9
  42. package/src/Button/wrap.jsx +0 -126
  43. package/src/ButtonGroup/index.js +0 -16
  44. package/src/CardSelector/index.tsx +0 -136
  45. package/src/Center/Center.stories.jsx +0 -20
  46. package/src/Center/index.tsx +0 -33
  47. package/src/ClickToCopy/ClickToCopy.stories.jsx +0 -24
  48. package/src/ClickToCopy/copy-button.tsx +0 -43
  49. package/src/ClickToCopy/hook.ts +0 -42
  50. package/src/ClickToCopy/index.tsx +0 -96
  51. package/src/CloseButton/index.tsx +0 -37
  52. package/src/CodeBlock/CodeBlock.stories.jsx +0 -22
  53. package/src/CodeBlock/LightBox.tsx +0 -87
  54. package/src/CodeBlock/index.tsx +0 -217
  55. package/src/Colors/Colors.stories.jsx +0 -211
  56. package/src/Colors/index.ts +0 -4
  57. package/src/Colors/themes/default.ts +0 -8
  58. package/src/Colors/themes/did-connect.ts +0 -64
  59. package/src/Colors/themes/temp.ts +0 -52
  60. package/src/Config/Config.stories.jsx +0 -16
  61. package/src/Config/config-provider.tsx +0 -62
  62. package/src/Config/index.ts +0 -2
  63. package/src/Config/theme-mode-toggle.tsx +0 -38
  64. package/src/ContactForm/ContactForm.stories.jsx +0 -32
  65. package/src/ContactForm/index.tsx +0 -264
  66. package/src/CookieConsent/CookieConsent.stories.jsx +0 -33
  67. package/src/CookieConsent/index.tsx +0 -104
  68. package/src/CountDown/CountDown.stories.jsx +0 -15
  69. package/src/CountDown/index.tsx +0 -170
  70. package/src/DID/DID.stories.jsx +0 -37
  71. package/src/DID/index.tsx +0 -393
  72. package/src/DIDConnect/app-icon.tsx +0 -37
  73. package/src/DIDConnect/app-info-item.tsx +0 -93
  74. package/src/DIDConnect/auth-apps/auth-apps-info.tsx +0 -77
  75. package/src/DIDConnect/auth-apps/index.tsx +0 -278
  76. package/src/DIDConnect/auth-apps/switch-role.tsx +0 -47
  77. package/src/DIDConnect/did-connect-container.tsx +0 -326
  78. package/src/DIDConnect/did-connect-footer.tsx +0 -76
  79. package/src/DIDConnect/did-connect-logo.tsx +0 -8
  80. package/src/DIDConnect/icons/did-wallet-logo.tsx +0 -18
  81. package/src/DIDConnect/icons/github-logo.tsx +0 -17
  82. package/src/DIDConnect/index.ts +0 -11
  83. package/src/DIDConnect/landing-page.tsx +0 -218
  84. package/src/DIDConnect/powered-by.tsx +0 -48
  85. package/src/DIDConnect/provider-icon.tsx +0 -62
  86. package/src/DIDConnect/request-storage-access-api-dialog.tsx +0 -304
  87. package/src/DIDConnect/with-container.tsx +0 -323
  88. package/src/DIDConnect/with-ux-theme.tsx +0 -22
  89. package/src/DIDLogo/Logo.stories.jsx +0 -11
  90. package/src/DIDLogo/index.tsx +0 -168
  91. package/src/Datatable/CustomToolbar.jsx +0 -415
  92. package/src/Datatable/Datatable.stories.jsx +0 -92
  93. package/src/Datatable/DatatableContext.jsx +0 -35
  94. package/src/Datatable/TableSearch.jsx +0 -166
  95. package/src/Datatable/index.jsx +0 -652
  96. package/src/Datatable/utils.js +0 -161
  97. package/src/Dialog/Dialog.stories.jsx +0 -21
  98. package/src/Dialog/confirm.jsx +0 -143
  99. package/src/Dialog/dialog.jsx +0 -199
  100. package/src/Dialog/index.js +0 -4
  101. package/src/Dialog/types.d.ts +0 -20
  102. package/src/Dialog/use-confirm.jsx +0 -188
  103. package/src/DriftBot/index.tsx +0 -81
  104. package/src/Earth/Earth.stories.jsx +0 -39
  105. package/src/Earth/countries.json +0 -8057
  106. package/src/Earth/index.tsx +0 -515
  107. package/src/Earth/util.ts +0 -72
  108. package/src/Empty/Empty.stories.jsx +0 -23
  109. package/src/Empty/index.jsx +0 -48
  110. package/src/ErrorBoundary/ErrorBoundary.stories.jsx +0 -13
  111. package/src/ErrorBoundary/fallback.tsx +0 -85
  112. package/src/ErrorBoundary/index.ts +0 -1
  113. package/src/Footer/Footer.stories.jsx +0 -13
  114. package/src/Footer/index.tsx +0 -130
  115. package/src/Header/Header.stories.jsx +0 -30
  116. package/src/Header/addon-button.tsx +0 -41
  117. package/src/Header/auto-hidden.tsx +0 -31
  118. package/src/Header/header-addons.tsx +0 -37
  119. package/src/Header/header.tsx +0 -214
  120. package/src/Header/index.ts +0 -3
  121. package/src/Header/responsive-header.tsx +0 -145
  122. package/src/Icon/Icon.stories.jsx +0 -45
  123. package/src/Icon/image.tsx +0 -53
  124. package/src/Icon/index.tsx +0 -63
  125. package/src/Img/Img.stories.jsx +0 -17
  126. package/src/Img/index.jsx +0 -258
  127. package/src/InfoRow/InfoRow.stories.jsx +0 -14
  128. package/src/InfoRow/index.tsx +0 -91
  129. package/src/Layout/Layout.stories.jsx +0 -24
  130. package/src/Layout/dashboard/external-link.tsx +0 -59
  131. package/src/Layout/dashboard/full-page.tsx +0 -58
  132. package/src/Layout/dashboard/index.tsx +0 -260
  133. package/src/Layout/dashboard/sidebar.tsx +0 -198
  134. package/src/Layout/dashboard-legacy/header.tsx +0 -156
  135. package/src/Layout/dashboard-legacy/index.tsx +0 -127
  136. package/src/Layout/dashboard-legacy/sidebar.tsx +0 -129
  137. package/src/Layout/index.tsx +0 -310
  138. package/src/LoadingMask/index.tsx +0 -108
  139. package/src/Locale/LocaleSelector.stories.jsx +0 -44
  140. package/src/Locale/browser-lang.ts +0 -65
  141. package/src/Locale/context.tsx +0 -162
  142. package/src/Locale/languages.ts +0 -58
  143. package/src/Locale/selector.tsx +0 -174
  144. package/src/Locale/util.ts +0 -38
  145. package/src/Logo/Logo.stories.jsx +0 -23
  146. package/src/Logo/images/logo-dark-text.svg +0 -3
  147. package/src/Logo/images/logo-dark-top.svg +0 -6
  148. package/src/Logo/images/logo-light-text.svg +0 -3
  149. package/src/Logo/images/logo-light-top.svg +0 -6
  150. package/src/Logo/index.tsx +0 -58
  151. package/src/Metric/Metric.stories.jsx +0 -29
  152. package/src/Metric/index.tsx +0 -130
  153. package/src/MuiWrap/index.tsx +0 -10
  154. package/src/NFTDisplay/NFTBroken.svg +0 -34
  155. package/src/NFTDisplay/NFTDisplay.stories.jsx +0 -30
  156. package/src/NFTDisplay/README.md +0 -59
  157. package/src/NFTDisplay/aspect-ratio-container.tsx +0 -36
  158. package/src/NFTDisplay/broken.tsx +0 -51
  159. package/src/NFTDisplay/displayApi.ts +0 -43
  160. package/src/NFTDisplay/index.tsx +0 -393
  161. package/src/NFTDisplay/loading.tsx +0 -16
  162. package/src/NFTDisplay/preview.tsx +0 -84
  163. package/src/NFTDisplay/render-svg.tsx +0 -21
  164. package/src/NFTDisplay/svg-embedder/img.tsx +0 -27
  165. package/src/NFTDisplay/svg-embedder/inline-svg.tsx +0 -36
  166. package/src/NavMenu/NavMenu.stories.jsx +0 -17
  167. package/src/NavMenu/images/OCAP.svg +0 -1
  168. package/src/NavMenu/images/abt-network.svg +0 -1
  169. package/src/NavMenu/images/ai-kit.svg +0 -1
  170. package/src/NavMenu/images/aigne-image-smith.svg +0 -1
  171. package/src/NavMenu/images/aigne.svg +0 -1
  172. package/src/NavMenu/images/aistro.png +0 -0
  173. package/src/NavMenu/images/arcsphere.svg +0 -1
  174. package/src/NavMenu/images/blocklet-framework.svg +0 -1
  175. package/src/NavMenu/images/blocklet-launcher.svg +0 -1
  176. package/src/NavMenu/images/blocklet-server.svg +0 -1
  177. package/src/NavMenu/images/blocklet-store.svg +0 -1
  178. package/src/NavMenu/images/creator-studio.svg +0 -1
  179. package/src/NavMenu/images/did-wallet.svg +0 -1
  180. package/src/NavMenu/images/did.svg +0 -1
  181. package/src/NavMenu/images/nft-studio.svg +0 -1
  182. package/src/NavMenu/images/payment-kit.png +0 -0
  183. package/src/NavMenu/images/vc.svg +0 -1
  184. package/src/NavMenu/images/web3-kit.svg +0 -1
  185. package/src/NavMenu/index.ts +0 -3
  186. package/src/NavMenu/nav-menu-context.tsx +0 -30
  187. package/src/NavMenu/nav-menu.tsx +0 -441
  188. package/src/NavMenu/products.tsx +0 -830
  189. package/src/NavMenu/style.ts +0 -258
  190. package/src/NavMenu/sub-container.tsx +0 -125
  191. package/src/NavMenu/sub-item-group.tsx +0 -42
  192. package/src/OrgTransfer/index.tsx +0 -53
  193. package/src/OrgTransfer/locales.ts +0 -25
  194. package/src/OrgTransfer/selector.tsx +0 -252
  195. package/src/OrgTransfer/type.ts +0 -31
  196. package/src/PageScroller/index.tsx +0 -316
  197. package/src/PageScroller/story/FifthComponent.jsx +0 -7
  198. package/src/PageScroller/story/FirstComponent.jsx +0 -7
  199. package/src/PageScroller/story/FourthComponent.jsx +0 -7
  200. package/src/PageScroller/story/FullPage.jsx +0 -55
  201. package/src/PageScroller/story/PageContain.jsx +0 -59
  202. package/src/PageScroller/story/PageScroller.stories.jsx +0 -18
  203. package/src/PageScroller/story/SecondComponent.jsx +0 -7
  204. package/src/PageScroller/story/ThirdComponent.jsx +0 -7
  205. package/src/PageScroller/story/index.css +0 -115
  206. package/src/PageScroller/usePrevValue.ts +0 -11
  207. package/src/Passport/index.ts +0 -3
  208. package/src/Passport/passport.tsx +0 -118
  209. package/src/PhoneInput/PhoneInput.stories.jsx +0 -12
  210. package/src/PhoneInput/country-select.tsx +0 -148
  211. package/src/PhoneInput/index.tsx +0 -269
  212. package/src/PoweredByArcBlock/index.tsx +0 -27
  213. package/src/PricingTable/PricingPlan.tsx +0 -120
  214. package/src/PricingTable/PricingTable.stories.jsx +0 -38
  215. package/src/PricingTable/index.tsx +0 -59
  216. package/src/QRCode/QRCode.stories.jsx +0 -13
  217. package/src/QRCode/index.tsx +0 -66
  218. package/src/RelativeTime/RelativeTime.stories.jsx +0 -20
  219. package/src/RelativeTime/index.tsx +0 -334
  220. package/src/Result/Result.stories.jsx +0 -61
  221. package/src/Result/common.tsx +0 -119
  222. package/src/Result/index.tsx +0 -30
  223. package/src/Result/result.tsx +0 -65
  224. package/src/Result/translations.ts +0 -57
  225. package/src/Screenshot/BaseScreenshot/index.tsx +0 -73
  226. package/src/Screenshot/BaseScreenshot/shells/Macbook.tsx +0 -38
  227. package/src/Screenshot/BaseScreenshot/shells/Phone.tsx +0 -35
  228. package/src/Screenshot/Screenshot.stories.jsx +0 -44
  229. package/src/Screenshot/devices.css +0 -1366
  230. package/src/Screenshot/index.tsx +0 -300
  231. package/src/SessionBlocklet/index.tsx +0 -178
  232. package/src/SessionManager/SessionManager.stories.jsx +0 -9
  233. package/src/SessionManager/index.tsx +0 -3
  234. package/src/SessionPermission/index.tsx +0 -26
  235. package/src/SessionUser/components/did-space.tsx +0 -68
  236. package/src/SessionUser/components/logged-in.tsx +0 -338
  237. package/src/SessionUser/components/quick-login-item.tsx +0 -132
  238. package/src/SessionUser/components/session-user-item.tsx +0 -93
  239. package/src/SessionUser/components/session-user-switch.tsx +0 -240
  240. package/src/SessionUser/components/un-login.tsx +0 -257
  241. package/src/SessionUser/components/user-info.tsx +0 -201
  242. package/src/SessionUser/index.tsx +0 -68
  243. package/src/SessionUser/libs/translation.ts +0 -30
  244. package/src/SessionUser/libs/utils.ts +0 -39
  245. package/src/SharedBridge/index.tsx +0 -126
  246. package/src/SocialShare/index.tsx +0 -194
  247. package/src/Sparkline/Sparkline.stories.jsx +0 -13
  248. package/src/Sparkline/index.tsx +0 -231
  249. package/src/Spinner/Spinner.stories.jsx +0 -98
  250. package/src/Spinner/index.tsx +0 -20
  251. package/src/SplitButton/SplitButton.stories.jsx +0 -32
  252. package/src/SplitButton/index.tsx +0 -116
  253. package/src/SplitButton/useClickAway.tsx +0 -24
  254. package/src/Success/index.tsx +0 -175
  255. package/src/Switch/Switch.stories.jsx +0 -16
  256. package/src/Switch/index.jsx +0 -79
  257. package/src/Tabs/Tabs.stories.jsx +0 -18
  258. package/src/Tabs/index.tsx +0 -255
  259. package/src/Tag/Tag.stories.jsx +0 -15
  260. package/src/Tag/index.jsx +0 -106
  261. package/src/TextCollapse/TextCollapse.stories.jsx +0 -73
  262. package/src/TextCollapse/index.tsx +0 -85
  263. package/src/Theme/Theme.stories.jsx +0 -11
  264. package/src/Theme/index.ts +0 -21
  265. package/src/Theme/theme-provider.tsx +0 -374
  266. package/src/Theme/theme.ts +0 -229
  267. package/src/Toast/Toast.stories.jsx +0 -28
  268. package/src/Toast/index.tsx +0 -80
  269. package/src/Typography/index.tsx +0 -124
  270. package/src/UserCard/Cards/avatar-only.tsx +0 -27
  271. package/src/UserCard/Cards/basic-info.tsx +0 -43
  272. package/src/UserCard/Cards/index.tsx +0 -16
  273. package/src/UserCard/Cards/social-actions.tsx +0 -196
  274. package/src/UserCard/Container/card.tsx +0 -63
  275. package/src/UserCard/Container/dialog.tsx +0 -37
  276. package/src/UserCard/Content/basic.tsx +0 -330
  277. package/src/UserCard/Content/clock.tsx +0 -82
  278. package/src/UserCard/Content/minimal.tsx +0 -113
  279. package/src/UserCard/Content/shorten-label.tsx +0 -32
  280. package/src/UserCard/Content/tooltip-avatar.tsx +0 -80
  281. package/src/UserCard/UserCard.stories.jsx +0 -19
  282. package/src/UserCard/components.tsx +0 -81
  283. package/src/UserCard/index.tsx +0 -132
  284. package/src/UserCard/types.ts +0 -165
  285. package/src/UserCard/use-follow.tsx +0 -111
  286. package/src/UserCard/utils.ts +0 -155
  287. package/src/Util/WebWalletOpener.stories.jsx +0 -5
  288. package/src/Util/client.ts +0 -4
  289. package/src/Util/constant.ts +0 -60
  290. package/src/Util/deprecate.tsx +0 -29
  291. package/src/Util/federated.ts +0 -125
  292. package/src/Util/iframe.ts +0 -19
  293. package/src/Util/index.ts +0 -760
  294. package/src/Util/logger.ts +0 -44
  295. package/src/Util/passport.ts +0 -127
  296. package/src/Util/security.ts +0 -72
  297. package/src/Util/style.ts +0 -17
  298. package/src/Util/wallet.ts +0 -35
  299. package/src/VerificationCode/index.tsx +0 -83
  300. package/src/Video/Video.stories.jsx +0 -6
  301. package/src/Video/index.tsx +0 -70
  302. package/src/Wallet/Action.stories.jsx +0 -8
  303. package/src/Wallet/Action.tsx +0 -118
  304. package/src/Wallet/Download.stories.jsx +0 -9
  305. package/src/Wallet/Download.tsx +0 -157
  306. package/src/Wallet/Open.tsx +0 -47
  307. package/src/Wallet/OpenInWallet.stories.jsx +0 -5
  308. package/src/Wallet/images/abtwallet.png +0 -0
  309. package/src/Wallet/images/android_download.svg +0 -22
  310. package/src/Wallet/images/app-store.svg +0 -30
  311. package/src/Wallet/images/google-play.svg +0 -69
  312. package/src/WalletOSIcon/index.tsx +0 -47
  313. package/src/WebWalletSWKeeper/index.tsx +0 -117
  314. package/src/WechatPrompt/images/android.png +0 -0
  315. package/src/WechatPrompt/images/ios.png +0 -0
  316. package/src/WechatPrompt/index.tsx +0 -75
  317. package/src/global.d.ts +0 -28
  318. package/src/hooks/use-blocklet-logo.tsx +0 -32
  319. package/src/hooks/use-clock.tsx +0 -62
  320. package/src/hooks/use-location-state.tsx +0 -117
  321. package/src/hooks/use-mobile.tsx +0 -6
  322. package/src/index.ts +0 -79
  323. package/src/type.d.ts +0 -44
  324. package/src/withTheme/index.tsx +0 -72
  325. package/src/withTracker/README.md +0 -37
  326. package/src/withTracker/action/bind-wallet.tsx +0 -17
  327. package/src/withTracker/action/login.tsx +0 -18
  328. package/src/withTracker/action/pay.tsx +0 -14
  329. package/src/withTracker/action/switch-passport.tsx +0 -20
  330. package/src/withTracker/constant/index.tsx +0 -3
  331. package/src/withTracker/env.tsx +0 -1
  332. package/src/withTracker/error_boundary.jsx +0 -34
  333. package/src/withTracker/index.tsx +0 -50
  334. package/src/withTracker/libs/utm.ts +0 -46
  335. package/vite.config.mjs +0 -37
@@ -1,98 +0,0 @@
1
- import { Box } from '@mui/material';
2
- import Spinner from '.';
3
-
4
- export default {
5
- title: 'Deprecated/Spinner',
6
- };
7
-
8
- export function Default() {
9
- return (
10
- <Box
11
- sx={{
12
- width: 300,
13
- height: 300,
14
- border: 1,
15
- display: 'flex',
16
- alignItems: 'center',
17
- justifyContent: 'center',
18
- }}>
19
- <Spinner />
20
- </Box>
21
- );
22
- }
23
-
24
- Default.storyName = 'default';
25
-
26
- export function CustomColor() {
27
- return (
28
- <Box
29
- sx={{
30
- p: 2,
31
- }}>
32
- <h5>color="primary"</h5>
33
- <Box
34
- sx={{
35
- p: 4,
36
- }}>
37
- <Spinner color="primary" />
38
- </Box>
39
- <h5>color="secondary"</h5>
40
- <Box
41
- sx={{
42
- p: 4,
43
- }}>
44
- <Spinner color="secondary" />
45
- </Box>
46
- <h5>color="inherit"</h5>
47
- <Box
48
- sx={{
49
- p: 4,
50
- color: 'blue',
51
- }}>
52
- <Spinner color="inherit" />
53
- </Box>
54
- <h5>style=&#123;&#123; color: '#128323' &#125;&#125;</h5>
55
- <Box
56
- sx={{
57
- p: 4,
58
- }}>
59
- <Spinner style={{ color: '#128323' }} />
60
- </Box>
61
- </Box>
62
- );
63
- }
64
-
65
- CustomColor.storyName = 'custom color';
66
-
67
- export function CustomSize() {
68
- return (
69
- <Box
70
- sx={{
71
- p: 2,
72
- }}>
73
- <h5>default: size=40</h5>
74
- <Box
75
- sx={{
76
- p: 4,
77
- }}>
78
- <Spinner />
79
- </Box>
80
- <h5>size=12</h5>
81
- <Box
82
- sx={{
83
- p: 4,
84
- }}>
85
- <Spinner size={12} />
86
- </Box>
87
- <h5>size: [12, 8] (Compatible with the old API)</h5>
88
- <Box
89
- sx={{
90
- p: 4,
91
- }}>
92
- <Spinner size={[12, 8]} />
93
- </Box>
94
- </Box>
95
- );
96
- }
97
-
98
- CustomSize.storyName = 'custom size';
@@ -1,20 +0,0 @@
1
- import { CircularProgress, type CircularProgressProps } from '@mui/material';
2
- import { withDeprecated } from '../Util/deprecate';
3
-
4
- export interface SpinnerProps extends Omit<CircularProgressProps, 'size'> {
5
- /** 之前 size prop 是 array 类型, 需要与 CircularProgress#size 兼容 */
6
- size?: number | [number, number];
7
- }
8
-
9
- /** 之前的 Spinner 实现由内外 2 个环构成, 现在改为基于 @mui/material/CircularProgress 的实现 */
10
- function Spinner({ ...props }: SpinnerProps) {
11
- const _props = { ...props } as CircularProgressProps;
12
-
13
- // 兼容之前的 size prop (设置外圈/内圈的尺寸)
14
- if (_props.size && Array.isArray(props.size)) {
15
- [_props.size] = props.size;
16
- }
17
- return <CircularProgress {..._props} />;
18
- }
19
-
20
- export default withDeprecated(Spinner, { name: 'Spinner', alternative: '@mui/material/CircularProgress' });
@@ -1,32 +0,0 @@
1
- import { Box } from '@mui/material';
2
-
3
- import SplitButton from './index';
4
- import Basic from './demo/basic';
5
- import ThemeProvider from '../Theme/theme-provider';
6
- import ThemeModeToggle from '../Config/theme-mode-toggle';
7
-
8
- export default {
9
- title: 'Basic/SplitButton',
10
- component: SplitButton,
11
- parameters: {
12
- design: {
13
- type: 'figma',
14
- url: 'https://www.figma.com/file/E8TSBWCOyXzETmVOjzbqvw/ArcBlock-UI-Kit?node-id=768%3A999',
15
- },
16
- },
17
- decorators: [
18
- (Story) => (
19
- <ThemeProvider prefer="system">
20
- <Box sx={{ py: 1 }}>
21
- <ThemeModeToggle />
22
- </Box>
23
- <Story />
24
- </ThemeProvider>
25
- ),
26
- ],
27
- };
28
-
29
- // single story hoisting
30
- Basic.storyName = 'SplitButton';
31
-
32
- export { Basic };
@@ -1,116 +0,0 @@
1
- import React, { useState, useRef, isValidElement } from 'react';
2
- import { ExpandMore } from '@mui/icons-material';
3
- import {
4
- Popper,
5
- Paper,
6
- ClickAwayListener,
7
- MenuList,
8
- MenuItem,
9
- MenuItemProps,
10
- ButtonGroup,
11
- ButtonGroupProps,
12
- Button,
13
- ButtonProps,
14
- } from '@mui/material';
15
- import noop from 'lodash/noop';
16
-
17
- import { styled } from '../Theme';
18
- import useClickAway from './useClickAway';
19
-
20
- export interface SplitButtonProps extends Omit<ButtonGroupProps, 'children'> {
21
- menu?:
22
- | React.ReactElement<MenuItemProps, typeof MenuItem>
23
- | React.ReactElement<MenuItemProps, typeof MenuItem>[]
24
- | MenuItemProps[];
25
- children?: React.ReactNode | (() => React.ReactNode);
26
- onClick?: () => void;
27
- menuButtonProps?: ButtonProps;
28
- }
29
-
30
- export default function SplitButton({ ...props }: SplitButtonProps) {
31
- const {
32
- size = 'medium',
33
- color = 'primary',
34
- menu = [],
35
- children = null,
36
- variant = 'contained',
37
- onClick = noop,
38
- menuButtonProps = {},
39
- ...rest
40
- } = props;
41
-
42
- const [open, setOpen] = useState(false);
43
- const anchorRef = useRef<HTMLDivElement | null>(null);
44
- // ClickAwayListener 只会监听事件的冒泡阶段,这会导致如果其他事件禁用了冒泡,那么下拉菜单将无法隐藏
45
- // 所以定义一个 ref 来监听事件的捕获阶段
46
- const paperRef = useRef<HTMLDivElement | null>(null);
47
- const menuItems = Array.isArray(menu)
48
- ? // eslint-disable-next-line react/no-array-index-key
49
- menu.map((item, index) => (isValidElement(item) ? item : <MenuItem {...item} key={index} />))
50
- : menu;
51
-
52
- const onToggle = () => {
53
- setOpen((prevOpen) => !prevOpen);
54
- };
55
-
56
- const handleClose = (e: MouseEvent | TouchEvent) => {
57
- if (anchorRef.current && anchorRef.current.contains(e.target as HTMLElement)) {
58
- return;
59
- }
60
- setOpen(false);
61
- };
62
-
63
- useClickAway(paperRef as React.RefObject<HTMLElement>, handleClose);
64
-
65
- // 点击 item 后收起下拉菜单, 如果想要点击 action 后不收起下拉菜单, 可以在 item#onClick 时调用 e.stopPropagation()
66
- const handleItemClick: React.MouseEventHandler<HTMLUListElement> = (e) => {
67
- if ((e.target as HTMLElement).closest('.MuiMenuItem-root')) {
68
- setOpen(false);
69
- }
70
- };
71
-
72
- return (
73
- <>
74
- <StyledButtonGroup variant={variant} size={size} color={color} ref={anchorRef} {...rest}>
75
- {typeof children === 'function' ? (
76
- children()
77
- ) : (
78
- <Button onClick={onClick} color={color}>
79
- {children}
80
- </Button>
81
- )}
82
- <Button onClick={onToggle} color={color} {...menuButtonProps} aria-label="more functions">
83
- <ExpandMore />
84
- </Button>
85
- </StyledButtonGroup>
86
- <StyledPopper open={open} anchorEl={anchorRef.current} placement="bottom-end" disablePortal={false}>
87
- <Paper ref={paperRef}>
88
- <ClickAwayListener onClickAway={handleClose}>
89
- <MenuList onClick={handleItemClick}>{menuItems}</MenuList>
90
- </ClickAwayListener>
91
- </Paper>
92
- </StyledPopper>
93
- </>
94
- );
95
- }
96
-
97
- SplitButton.Item = MenuItem;
98
-
99
- const StyledButtonGroup = styled(ButtonGroup)`
100
- > .MuiButtonBase-root:last-of-type {
101
- min-width: 2em;
102
- padding-left: 0;
103
- padding-right: 0;
104
- }
105
- `;
106
-
107
- const StyledPopper = styled(Popper)`
108
- z-index: ${(props) => props.theme.zIndex.tooltip};
109
- .MuiList-root {
110
- padding: 4px 0;
111
- }
112
- .MuiListItem-root {
113
- padding-top: 4px;
114
- padding-bottom: 4px;
115
- }
116
- `;
@@ -1,24 +0,0 @@
1
- import React, { useEffect } from 'react';
2
-
3
- // 监听事件的捕获阶段,用于 ClickAwayListener 无法监听的事件
4
- function useClickAway(ref: React.RefObject<HTMLElement> | null, onClickAway: (event: MouseEvent) => void) {
5
- useEffect(() => {
6
- function handleClick(event: MouseEvent) {
7
- if (!ref || !ref.current) return;
8
-
9
- // 如果点击事件目标在 menu 元素内,阻止菜单关闭
10
- if (ref.current.contains(event.target as Node)) {
11
- return;
12
- }
13
-
14
- onClickAway(event);
15
- }
16
-
17
- document.addEventListener('click', handleClick, true);
18
- return () => {
19
- document.removeEventListener('click', handleClick, true);
20
- };
21
- }, [ref, onClickAway]);
22
- }
23
-
24
- export default useClickAway;
@@ -1,175 +0,0 @@
1
- import { Box, useTheme } from '@mui/material';
2
-
3
- export interface SuccessProps {
4
- size?: number;
5
- backgroundColor?: string;
6
- borderWidth?: number;
7
- }
8
-
9
- // FIXME: @zhanghan 目前无法适配各种 size,后续优化
10
- export default function Success({ size = 64, backgroundColor = undefined, borderWidth = 4 }: SuccessProps) {
11
- const { palette } = useTheme();
12
- const contentSize = size - borderWidth * 2;
13
- const _backgroundColor = backgroundColor || palette.background.default;
14
-
15
- return (
16
- <Box
17
- className="check-icon"
18
- sx={{
19
- width: contentSize,
20
- height: contentSize,
21
- position: 'relative',
22
- borderRadius: '100%',
23
- '&, *, *::before, *::after': {
24
- boxSizing: 'content-box !important',
25
- },
26
- // 转圈边框的颜色
27
- border: (theme) => `${borderWidth}px solid ${theme.palette.success.light}`,
28
- '&::before, &::after': {
29
- content: '""',
30
- height: '125%',
31
- position: 'absolute',
32
- background: _backgroundColor,
33
- transform: 'rotate(-45deg)',
34
- },
35
- '&::before': {
36
- top: `${borderWidth / 2 + 1}px`,
37
- left: `-${borderWidth / 2}px`,
38
- width: `calc(32.5% + ${borderWidth}px)`,
39
- transformOrigin: '100% 50%',
40
- borderRadius: '100% 0 0 100%',
41
- },
42
- '&::after': {
43
- top: 0,
44
- left: '37.5%',
45
- width: `calc(70% + ${borderWidth}px)`,
46
- transformOrigin: '0 50%',
47
- borderRadius: '0 100% 100% 0',
48
- animation: 'rotate-circle 4.25s ease-in',
49
- },
50
- '.icon-line': {
51
- height: `${borderWidth + 1}px`,
52
- // 对勾的颜色
53
- backgroundColor: (theme) => theme.palette.success.light,
54
- display: 'block',
55
- borderRadius: '100vw',
56
- position: 'absolute',
57
- zIndex: 10,
58
- },
59
- '@keyframes rotate-circle': {
60
- '0%': {
61
- transform: 'rotate(-45deg)',
62
- },
63
- '5%': {
64
- transform: 'rotate(-45deg)',
65
- },
66
- '12%': {
67
- transform: 'rotate(-405deg)',
68
- },
69
- '100%': {
70
- transform: 'rotate(-405deg)',
71
- },
72
- },
73
- }}>
74
- <Box
75
- component="span"
76
- className="icon-line line-tip"
77
- sx={{
78
- top: '57.5%',
79
- left: '17.5%',
80
- width: '31.25%',
81
- transform: 'rotate(45deg)',
82
- animation: 'icon-line-tip 0.75s',
83
- '@keyframes icon-line-tip': {
84
- '0%': {
85
- width: '0',
86
- left: '1px',
87
- top: '23.75%',
88
- },
89
- '54%': {
90
- width: '0',
91
- left: '1px',
92
- top: '23.75%',
93
- },
94
- '70%': {
95
- width: '62.5%',
96
- left: '-10%',
97
- top: '46.25%',
98
- },
99
- '84%': {
100
- width: '21.25%',
101
- left: '26.25%',
102
- top: '60%',
103
- },
104
- '100%': {
105
- width: '31.25',
106
- left: '17.5%',
107
- top: '56.25%',
108
- },
109
- },
110
- }}
111
- />
112
- <Box
113
- component="span"
114
- className="icon-line line-long"
115
- sx={{
116
- top: '47.5%',
117
- right: '10%',
118
- width: '58.75%',
119
- transform: 'rotate(-45deg)',
120
- animation: 'icon-line-long 0.75s',
121
- '@keyframes icon-line-long': {
122
- '0%': {
123
- width: '0',
124
- right: '57.5%',
125
- top: '67.5%',
126
- },
127
- '65%': {
128
- width: '0',
129
- right: '57.5%',
130
- top: '67.5%',
131
- },
132
- '84%': {
133
- width: '68.75%',
134
- right: '0px',
135
- top: '43.75%',
136
- },
137
- '100%': {
138
- width: '58.75%',
139
- right: '10%',
140
- top: '47.5%',
141
- },
142
- },
143
- }}
144
- />
145
- <Box
146
- className="icon-circle"
147
- sx={{
148
- top: `-${borderWidth}px`,
149
- left: `-${borderWidth}px`,
150
- zIndex: 10,
151
- width: contentSize,
152
- height: contentSize,
153
- borderRadius: '100%',
154
- position: 'absolute',
155
- boxSizing: 'contentBox',
156
- // 圆环的颜色
157
- border: `${borderWidth}px solid rgba(76, 175, 80, 0.63)`,
158
- }}
159
- />
160
- <Box
161
- className="icon-fix"
162
- sx={{
163
- top: `calc(8% - ${Math.sqrt(borderWidth)}px)`,
164
- width: borderWidth + 1,
165
- left: `calc(32% - ${Math.sqrt(borderWidth)}px)`,
166
- zIndex: 1,
167
- height: contentSize + borderWidth * 2,
168
- position: 'absolute',
169
- transform: 'rotate(-45deg)',
170
- backgroundColor: _backgroundColor,
171
- }}
172
- />
173
- </Box>
174
- );
175
- }
@@ -1,16 +0,0 @@
1
- import Basic from './demo/basic';
2
-
3
- export default {
4
- title: 'Basic/Switch',
5
- parameters: {
6
- docs: {
7
- description: {
8
- component: 'A iOS-styled Swtich component.',
9
- },
10
- },
11
- },
12
- };
13
-
14
- Basic.storyName = 'Switch';
15
-
16
- export { Basic };
@@ -1,79 +0,0 @@
1
- import PropTypes from 'prop-types';
2
- import { FormControlLabel, Switch as MuiSwitch } from '@mui/material';
3
- import { styled } from '../Theme';
4
-
5
- // 参考: https://mui.com/material-ui/react-switch/#customization
6
- const IOSSwitch = styled((props) => <MuiSwitch focusVisibleClassName=".Mui-focusVisible" disableRipple {...props} />)(
7
- ({ theme }) => ({
8
- width: 42,
9
- height: 26,
10
- padding: 0,
11
- '& .MuiSwitch-switchBase': {
12
- padding: 0,
13
- margin: 2,
14
- transitionDuration: '300ms',
15
- '&.Mui-checked': {
16
- transform: 'translateX(16px)',
17
- color: '#fff',
18
- '& + .MuiSwitch-track': {
19
- backgroundColor: theme.palette.primary.main,
20
- opacity: 1,
21
- border: 0,
22
- },
23
- '&.Mui-disabled + .MuiSwitch-track': {
24
- opacity: 0.5,
25
- },
26
- },
27
- '&.Mui-focusVisible .MuiSwitch-thumb': {
28
- color: theme.palette.primary.main,
29
- border: '6px solid #fff',
30
- },
31
- '&.Mui-disabled .MuiSwitch-thumb': {
32
- color: theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[600],
33
- },
34
- '&.Mui-disabled + .MuiSwitch-track': {
35
- opacity: theme.palette.mode === 'light' ? 0.7 : 0.3,
36
- },
37
- },
38
- '& .MuiSwitch-thumb': {
39
- boxSizing: 'border-box',
40
- width: 22,
41
- height: 22,
42
- },
43
- '& .MuiSwitch-track': {
44
- borderRadius: 26 / 2,
45
- backgroundColor: theme.palette.grey[200],
46
- opacity: 1,
47
- transition: theme.transitions.create(['background-color'], {
48
- duration: 500,
49
- }),
50
- },
51
- })
52
- );
53
-
54
- /**
55
- * Switch 组件 Props
56
- * @typedef {{
57
- * labelProps?: import('@mui/material').FormControlLabelProps;
58
- * } & import('@mui/material').SwitchProps } SwitchProps
59
- */
60
-
61
- /**
62
- * 抽取 blocklet server 中使用的 iOS 风格的 Switch,
63
- * 该组件把 FormControlLabel 和 MuiSwitch 组合在一起,
64
- * 兼容 mui Switch props, 使用 labelProps 控制 FormControlLabel
65
- * @param {SwitchProps} props
66
- * @returns {JSX.Element}
67
- */
68
- function Switch({ labelProps = null, ...rest }) {
69
- if (labelProps) {
70
- return <FormControlLabel control={<IOSSwitch {...rest} />} {...labelProps} />;
71
- }
72
- return <IOSSwitch {...rest} />;
73
- }
74
-
75
- Switch.propTypes = {
76
- labelProps: PropTypes.object,
77
- };
78
-
79
- export default Switch;
@@ -1,18 +0,0 @@
1
- import Basic from './demo/basic';
2
- import IconPosition from './demo/iconPosition';
3
-
4
- export default {
5
- title: 'Navigation/Tabs',
6
- parameters: {
7
- docs: {
8
- description: {
9
- component:
10
- 'The Tabs component allows content authors to organize their content into various views. Users can navigate to different views by switching between tabs.',
11
- },
12
- },
13
- },
14
- };
15
-
16
- Basic.storyName = 'Tabs';
17
-
18
- export { Basic, IconPosition };