@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,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 };