@arcblock/ux 2.13.70 → 3.0.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.
- package/lib/ActionButton/ActionButton.stories.d.ts +18 -0
- package/lib/ActionButton/index.d.ts +2 -2
- package/lib/ActionButton/index.js +43 -94
- package/lib/ActivityIndicator/ActivityIndicator.stories.d.ts +8 -0
- package/lib/ActivityIndicator/index.d.ts +2 -8
- package/lib/ActivityIndicator/index.js +41 -114
- package/lib/Address/Address.stories.d.ts +16 -0
- package/lib/Address/compact-text.d.ts +4 -14
- package/lib/Address/compact-text.js +40 -98
- package/lib/Address/did-address.d.ts +5 -4
- package/lib/Address/did-address.js +94 -151
- package/lib/Address/index.d.ts +4 -2
- package/lib/Address/index.js +13 -20
- package/lib/Address/responsive-did-address.d.ts +5 -4
- package/lib/Address/responsive-did-address.js +80 -114
- package/lib/Alert/Alert.stories.d.ts +28 -0
- package/lib/Alert/index.d.ts +2 -2
- package/lib/Alert/index.js +56 -102
- package/lib/AnimationWaiter/AnimationWaiter.stories.d.ts +21 -0
- package/lib/AnimationWaiter/{dark-animation.json → dark-animation.json.js} +27 -1
- package/lib/AnimationWaiter/{default-animation.json → default-animation.json.js} +29 -1
- package/lib/AnimationWaiter/index.d.ts +3 -25
- package/lib/AnimationWaiter/index.js +107 -198
- package/lib/Async/index.d.ts +2 -4
- package/lib/Async/index.js +15 -29
- package/lib/Avatar/Avatar.stories.d.ts +11 -0
- package/lib/Avatar/did-motif.d.ts +5 -15
- package/lib/Avatar/did-motif.js +30 -65
- package/lib/Avatar/etherscan-blockies.js +42 -75
- package/lib/Avatar/index.d.ts +3 -19
- package/lib/Avatar/index.js +114 -180
- package/lib/Badge/Badge.stories.d.ts +13 -0
- package/lib/Badge/index.d.ts +3 -3
- package/lib/Badge/index.js +43 -83
- package/lib/Blocklet/Blocklet.stories.d.ts +17 -0
- package/lib/Blocklet/blocklet.d.ts +2 -28
- package/lib/Blocklet/blocklet.js +108 -191
- package/lib/Blocklet/index.d.ts +2 -3
- package/lib/Blocklet/index.js +7 -4
- package/lib/Blocklet/utils.d.ts +1 -1
- package/lib/Blocklet/utils.js +10 -10
- package/lib/BlockletContext/index.d.ts +3 -3
- package/lib/BlockletContext/index.js +32 -57
- package/lib/BlockletNFT/BlockletNFT.stories.d.ts +17 -0
- package/lib/BlockletNFT/index.d.ts +3 -38
- package/lib/BlockletNFT/index.js +123 -245
- package/lib/BlockletV2/Blocklet.stories.d.ts +18 -0
- package/lib/BlockletV2/blocklet.d.ts +2 -2
- package/lib/BlockletV2/blocklet.js +188 -213
- package/lib/BlockletV2/components/icon-text.d.ts +2 -2
- package/lib/BlockletV2/components/icon-text.js +43 -33
- package/lib/BlockletV2/components/tooltip-icon.js +46 -36
- package/lib/BlockletV2/index.d.ts +3 -3
- package/lib/BlockletV2/index.js +9 -5
- package/lib/BlockletV2/utils.d.ts +1 -1
- package/lib/BlockletV2/utils.js +13 -25
- package/lib/Button/Button.stories.d.ts +19 -0
- package/lib/Button/index.d.ts +1 -1
- package/lib/Button/index.js +6 -8
- package/lib/Button/wrap.d.ts +3 -3
- package/lib/Button/wrap.js +48 -131
- package/lib/ButtonGroup/index.d.ts +2 -2
- package/lib/ButtonGroup/index.js +6 -16
- package/lib/CardSelector/index.js +51 -94
- package/lib/Center/Center.stories.d.ts +18 -0
- package/lib/Center/index.js +15 -18
- package/lib/ClickToCopy/ClickToCopy.stories.d.ts +16 -0
- package/lib/ClickToCopy/copy-button.d.ts +3 -2
- package/lib/ClickToCopy/copy-button.js +19 -58
- package/lib/ClickToCopy/hook.d.ts +2 -2
- package/lib/ClickToCopy/hook.js +23 -32
- package/lib/ClickToCopy/index.d.ts +3 -14
- package/lib/ClickToCopy/index.js +23 -75
- package/lib/CloseButton/index.d.ts +1 -1
- package/lib/CloseButton/index.js +34 -28
- package/lib/CodeBlock/CodeBlock.stories.d.ts +20 -0
- package/lib/CodeBlock/LightBox.d.ts +4 -4
- package/lib/CodeBlock/LightBox.js +5 -4
- package/lib/CodeBlock/index.d.ts +1 -2
- package/lib/CodeBlock/index.js +96 -127
- package/lib/Colors/Colors.stories.d.ts +34 -0
- package/lib/Colors/index.js +8 -4
- package/lib/Colors/themes/default.d.ts +1 -1
- package/lib/Colors/themes/default.js +5 -7
- package/lib/Colors/themes/did-connect.js +43 -44
- package/lib/Colors/themes/temp.js +38 -39
- package/lib/Config/Config.stories.d.ts +14 -0
- package/lib/Config/config-provider.d.ts +8 -8
- package/lib/Config/config-provider.js +50 -44
- package/lib/Config/index.js +7 -2
- package/lib/Config/theme-mode-toggle.js +12 -27
- package/lib/ContactForm/ContactForm.stories.d.ts +23 -0
- package/lib/ContactForm/index.d.ts +2 -1
- package/lib/ContactForm/index.js +137 -164
- package/lib/CookieConsent/CookieConsent.stories.d.ts +18 -0
- package/lib/CookieConsent/index.d.ts +2 -2
- package/lib/CookieConsent/index.js +44 -73
- package/lib/CountDown/CountDown.stories.d.ts +14 -0
- package/lib/CountDown/index.d.ts +2 -2
- package/lib/CountDown/index.js +52 -124
- package/lib/DID/DID.stories.d.ts +15 -0
- package/lib/DID/index.d.ts +3 -1
- package/lib/DID/index.js +262 -327
- package/lib/DIDConnect/app-icon.js +26 -31
- package/lib/DIDConnect/app-info-item.js +76 -82
- package/lib/DIDConnect/auth-apps/auth-apps-info.js +71 -63
- package/lib/DIDConnect/auth-apps/index.d.ts +2 -2
- package/lib/DIDConnect/auth-apps/index.js +184 -183
- package/lib/DIDConnect/did-connect-container.js +231 -247
- package/lib/DIDConnect/did-connect-footer.js +66 -68
- package/lib/DIDConnect/did-connect-logo.js +10 -11
- package/lib/DIDConnect/index.js +22 -10
- package/lib/DIDConnect/landing-page.d.ts +1 -1
- package/lib/DIDConnect/landing-page.js +165 -189
- package/lib/DIDConnect/powered-by.js +55 -46
- package/lib/DIDConnect/request-storage-access-api-dialog.d.ts +5 -2
- package/lib/DIDConnect/request-storage-access-api-dialog.js +230 -292
- package/lib/DIDConnect/with-container.js +200 -236
- package/lib/DIDConnect/with-ux-theme.js +15 -22
- package/lib/Datatable/CustomToolbar.d.ts +1 -15
- package/lib/Datatable/CustomToolbar.js +232 -313
- package/lib/Datatable/Datatable.stories.d.ts +32 -0
- package/lib/Datatable/DatatableContext.js +23 -35
- package/lib/Datatable/TableSearch.d.ts +5 -13
- package/lib/Datatable/TableSearch.js +81 -113
- package/lib/Datatable/index.d.ts +12 -13
- package/lib/Datatable/index.js +226 -479
- package/lib/Datatable/utils.js +55 -120
- package/lib/Dialog/Dialog.stories.d.ts +20 -0
- package/lib/Dialog/confirm.d.ts +4 -25
- package/lib/Dialog/confirm.js +99 -125
- package/lib/Dialog/dialog.d.ts +30 -23
- package/lib/Dialog/dialog.js +62 -148
- package/lib/Dialog/index.d.ts +3 -3
- package/lib/Dialog/index.js +8 -4
- package/lib/Dialog/use-confirm.d.ts +3 -3
- package/lib/Dialog/use-confirm.js +91 -171
- package/lib/DidLogo/Logo.stories.d.ts +8 -0
- package/lib/DidLogo/index.js +19 -19
- package/lib/DriftBot/index.js +23 -33
- package/lib/Earth/Earth.stories.d.ts +18 -0
- package/lib/Earth/countries.json.js +13 -0
- package/lib/Earth/index.js +234 -334
- package/lib/Earth/util.js +36 -45
- package/lib/Empty/Empty.stories.d.ts +17 -0
- package/lib/Empty/index.d.ts +3 -11
- package/lib/Empty/index.js +17 -50
- package/lib/ErrorBoundary/ErrorBoundary.stories.d.ts +12 -0
- package/lib/ErrorBoundary/fallback.js +54 -71
- package/lib/ErrorBoundary/index.js +6 -1
- package/lib/Footer/Footer.stories.d.ts +12 -0
- package/lib/Footer/index.d.ts +1 -12
- package/lib/Footer/index.js +53 -100
- package/lib/Header/Header.stories.d.ts +21 -0
- package/lib/Header/addon-button.js +24 -31
- package/lib/Header/auto-hidden.d.ts +1 -1
- package/lib/Header/auto-hidden.js +9 -16
- package/lib/Header/header-addons.d.ts +1 -1
- package/lib/Header/header-addons.js +40 -37
- package/lib/Header/header.d.ts +2 -1
- package/lib/Header/header.js +64 -109
- package/lib/Header/index.js +8 -3
- package/lib/Header/responsive-header.d.ts +1 -1
- package/lib/Header/responsive-header.js +74 -112
- package/lib/Icon/Icon.stories.d.ts +23 -0
- package/lib/Icon/image.d.ts +1 -1
- package/lib/Icon/image.js +32 -33
- package/lib/Icon/index.d.ts +4 -4
- package/lib/Icon/index.js +30 -53
- package/lib/Img/Img.stories.d.ts +13 -0
- package/lib/Img/index.d.ts +6 -32
- package/lib/Img/index.js +126 -204
- package/lib/InfoRow/InfoRow.stories.d.ts +14 -0
- package/lib/InfoRow/index.js +27 -41
- package/lib/Layout/Layout.stories.d.ts +23 -0
- package/lib/Layout/dashboard/external-link.d.ts +1 -1
- package/lib/Layout/dashboard/external-link.js +23 -44
- package/lib/Layout/dashboard/full-page.d.ts +1 -1
- package/lib/Layout/dashboard/full-page.js +31 -48
- package/lib/Layout/dashboard/index.d.ts +4 -4
- package/lib/Layout/dashboard/index.js +134 -211
- package/lib/Layout/dashboard/sidebar.js +44 -78
- package/lib/Layout/dashboard-legacy/header.d.ts +1 -1
- package/lib/Layout/dashboard-legacy/header.js +70 -87
- package/lib/Layout/dashboard-legacy/index.d.ts +2 -2
- package/lib/Layout/dashboard-legacy/index.js +82 -90
- package/lib/Layout/dashboard-legacy/sidebar.d.ts +1 -1
- package/lib/Layout/dashboard-legacy/sidebar.js +44 -76
- package/lib/Layout/index.d.ts +2 -2
- package/lib/Layout/index.js +129 -189
- package/lib/LoadingMask/index.js +91 -82
- package/lib/Locale/LocaleSelector.stories.d.ts +22 -0
- package/lib/Locale/browser-lang.js +23 -52
- package/lib/Locale/context.d.ts +3 -3
- package/lib/Locale/context.js +71 -123
- package/lib/Locale/languages.js +32 -34
- package/lib/Locale/selector.d.ts +2 -2
- package/lib/Locale/selector.js +104 -139
- package/lib/Locale/util.d.ts +1 -1
- package/lib/Locale/util.js +9 -24
- package/lib/Logo/Logo.stories.d.ts +22 -0
- package/lib/Logo/images/logo-dark-text.svg.js +5 -0
- package/lib/Logo/images/logo-dark-top.svg.js +5 -0
- package/lib/Logo/images/logo-light-text.svg.js +5 -0
- package/lib/Logo/images/logo-light-top.svg.js +5 -0
- package/lib/Logo/index.d.ts +1 -1
- package/lib/Logo/index.js +27 -107
- package/lib/Metric/Metric.stories.d.ts +14 -0
- package/lib/Metric/index.js +50 -53
- package/lib/MuiWrap/index.js +11 -19
- package/lib/NFTDisplay/NFTBroken.svg.js +108 -0
- package/lib/NFTDisplay/NFTDisplay.stories.d.ts +15 -0
- package/lib/NFTDisplay/aspect-ratio-container.js +9 -20
- package/lib/NFTDisplay/broken.js +14 -286
- package/lib/NFTDisplay/displayApi.d.ts +1 -1
- package/lib/NFTDisplay/displayApi.js +17 -44
- package/lib/NFTDisplay/index.d.ts +2 -2
- package/lib/NFTDisplay/index.js +160 -343
- package/lib/NFTDisplay/loading.js +9 -9
- package/lib/NFTDisplay/render-svg.js +15 -22
- package/lib/NFTDisplay/svg-embedder/img.js +13 -29
- package/lib/NFTDisplay/svg-embedder/inline-svg.d.ts +1 -1
- package/lib/NFTDisplay/svg-embedder/inline-svg.js +10 -20
- package/lib/NavMenu/NavMenu.stories.d.ts +17 -0
- package/lib/NavMenu/images/OCAP.svg.js +5 -0
- package/lib/NavMenu/images/abt-network.svg.js +7 -0
- package/lib/NavMenu/images/ai-kit.svg.js +7 -0
- package/lib/NavMenu/images/aigne.svg.js +7 -0
- package/lib/NavMenu/images/aistro.svg.js +5 -0
- package/lib/NavMenu/images/arcsphere.svg.js +10 -0
- package/lib/NavMenu/images/blocklet-framework.svg.js +7 -0
- package/lib/NavMenu/images/blocklet-launcher.svg.js +5 -0
- package/lib/NavMenu/images/blocklet-server.svg.js +7 -0
- package/lib/NavMenu/images/blocklet-store.svg.js +5 -0
- package/lib/NavMenu/images/creator-studio.svg.js +7 -0
- package/lib/NavMenu/images/did-connect.svg.js +5 -0
- package/lib/NavMenu/images/did-name-service.svg.js +5 -0
- package/lib/NavMenu/images/did-wallet.svg.js +7 -0
- package/lib/NavMenu/images/did.svg.js +5 -0
- package/lib/NavMenu/images/nft-studio.svg.js +5 -0
- package/lib/NavMenu/images/vc.svg.js +5 -0
- package/lib/NavMenu/images/web3-kit.svg.js +7 -0
- package/lib/NavMenu/index.js +6 -3
- package/lib/NavMenu/nav-menu-context.js +15 -18
- package/lib/NavMenu/nav-menu.d.ts +17 -7
- package/lib/NavMenu/nav-menu.js +219 -355
- package/lib/NavMenu/products.js +264 -1652
- package/lib/NavMenu/style.d.ts +5 -5
- package/lib/NavMenu/style.js +156 -172
- package/lib/NavMenu/sub-container.d.ts +1 -1
- package/lib/NavMenu/sub-container.js +63 -104
- package/lib/NavMenu/sub-item-group.js +15 -33
- package/lib/PageScroller/index.d.ts +1 -1
- package/lib/PageScroller/index.js +116 -252
- package/lib/PageScroller/story/FifthComponent.js +7 -9
- package/lib/PageScroller/story/FirstComponent.js +7 -9
- package/lib/PageScroller/story/FourthComponent.js +7 -12
- package/lib/PageScroller/story/FullPage.js +52 -45
- package/lib/PageScroller/story/PageContain.js +55 -57
- package/lib/PageScroller/story/PageScroller.stories.d.ts +13 -0
- package/lib/PageScroller/story/SecondComponent.js +7 -9
- package/lib/PageScroller/story/ThirdComponent.js +7 -9
- package/lib/PageScroller/usePrevValue.js +10 -8
- package/lib/Passport/index.d.ts +1 -1
- package/lib/Passport/index.js +4 -2
- package/lib/Passport/passport.d.ts +1 -1
- package/lib/Passport/passport.js +123 -100
- package/lib/PhoneInput/PhoneInput.stories.d.ts +12 -0
- package/lib/PhoneInput/country-select.d.ts +2 -2
- package/lib/PhoneInput/country-select.js +111 -159
- package/lib/PhoneInput/index.js +166 -218
- package/lib/PoweredByArcBlock/index.d.ts +1 -1
- package/lib/PoweredByArcBlock/index.js +16 -22
- package/lib/PricingTable/PricingPlan.js +20 -55
- package/lib/PricingTable/PricingTable.stories.d.ts +8 -0
- package/lib/PricingTable/index.d.ts +1 -1
- package/lib/PricingTable/index.js +34 -37
- package/lib/QRCode/QRCode.stories.d.ts +13 -0
- package/lib/QRCode/index.d.ts +1 -1
- package/lib/QRCode/index.js +31 -49
- package/lib/RelativeTime/RelativeTime.stories.d.ts +20 -0
- package/lib/RelativeTime/index.d.ts +3 -3
- package/lib/RelativeTime/index.js +163 -261
- package/lib/Result/Result.stories.d.ts +21 -0
- package/lib/Result/common.d.ts +2 -2
- package/lib/Result/common.js +97 -129
- package/lib/Result/index.d.ts +1 -1
- package/lib/Result/index.js +21 -22
- package/lib/Result/result.js +45 -32
- package/lib/Result/translations.d.ts +1 -1
- package/lib/Result/translations.js +28 -25
- package/lib/Screenshot/BaseScreenshot/index.d.ts +1 -1
- package/lib/Screenshot/BaseScreenshot/index.js +23 -44
- package/lib/Screenshot/BaseScreenshot/shells/Macbook.js +23 -41
- package/lib/Screenshot/BaseScreenshot/shells/Phone.js +24 -26
- package/lib/Screenshot/Screenshot.stories.d.ts +13 -0
- package/lib/Screenshot/demo/images/bg-01.jpg +0 -0
- package/lib/Screenshot/demo/images/bg-02.jpg +0 -0
- package/lib/Screenshot/demo/images/bg-03.jpg +0 -0
- package/lib/Screenshot/index.d.ts +1 -2
- package/lib/Screenshot/index.js +83 -188
- package/lib/SessionBlocklet/index.d.ts +2 -2
- package/lib/SessionBlocklet/index.js +147 -162
- package/lib/SessionManager/SessionManager.stories.d.ts +9 -0
- package/lib/SessionManager/index.d.ts +1 -1
- package/lib/SessionManager/index.js +4 -2
- package/lib/SessionPermission/index.d.ts +1 -0
- package/lib/SessionPermission/index.js +12 -20
- package/lib/SessionUser/components/did-space.js +65 -117
- package/lib/SessionUser/components/logged-in.d.ts +3 -4
- package/lib/SessionUser/components/logged-in.js +215 -292
- package/lib/SessionUser/components/quick-login-item.js +125 -120
- package/lib/SessionUser/components/session-user-item.d.ts +4 -2
- package/lib/SessionUser/components/session-user-item.js +85 -89
- package/lib/SessionUser/components/session-user-switch.d.ts +1 -1
- package/lib/SessionUser/components/session-user-switch.js +187 -187
- package/lib/SessionUser/components/un-login.js +196 -222
- package/lib/SessionUser/components/user-info.d.ts +1 -1
- package/lib/SessionUser/components/user-info.js +163 -150
- package/lib/SessionUser/images/did-spaces.svg.js +5 -0
- package/lib/SessionUser/index.d.ts +1 -1
- package/lib/SessionUser/index.js +27 -30
- package/lib/SessionUser/libs/translation.d.ts +1 -1
- package/lib/SessionUser/libs/translation.js +25 -24
- package/lib/SessionUser/libs/utils.js +33 -23
- package/lib/SharedBridge/index.d.ts +6 -5
- package/lib/SharedBridge/index.js +76 -93
- package/lib/Sparkline/Sparkline.stories.d.ts +12 -0
- package/lib/Sparkline/index.js +67 -183
- package/lib/Spinner/Spinner.stories.d.ts +18 -0
- package/lib/Spinner/index.d.ts +1 -1
- package/lib/Spinner/index.js +10 -20
- package/lib/SplitButton/SplitButton.stories.d.ts +15 -0
- package/lib/SplitButton/index.d.ts +3 -5
- package/lib/SplitButton/index.js +39 -83
- package/lib/Success/index.js +174 -160
- package/lib/Switch/Switch.stories.d.ts +13 -0
- package/lib/Switch/index.d.ts +3 -7
- package/lib/Switch/index.js +51 -87
- package/lib/Tabs/Tabs.stories.d.ts +14 -0
- package/lib/Tabs/index.d.ts +2 -2
- package/lib/Tabs/index.js +169 -186
- package/lib/Tag/Tag.stories.d.ts +13 -0
- package/lib/Tag/index.d.ts +7 -4
- package/lib/Tag/index.js +40 -88
- package/lib/TextCollapse/TextCollapse.stories.d.ts +28 -0
- package/lib/TextCollapse/index.js +34 -51
- package/lib/Theme/Theme.stories.d.ts +10 -0
- package/lib/Theme/index.d.ts +1 -2
- package/lib/Theme/index.js +25 -17
- package/lib/Theme/theme-provider.d.ts +4 -15
- package/lib/Theme/theme-provider.js +111 -232
- package/lib/Theme/theme.d.ts +1 -8
- package/lib/Theme/theme.js +118 -166
- package/lib/Toast/Toast.stories.d.ts +15 -0
- package/lib/Toast/index.d.ts +1 -1
- package/lib/Toast/index.js +46 -67
- package/lib/Typography/index.d.ts +1 -1
- package/lib/Typography/index.js +73 -109
- package/lib/UserCard/Cards/avatar-only.d.ts +1 -1
- package/lib/UserCard/Cards/avatar-only.js +28 -36
- package/lib/UserCard/Cards/basic-info.d.ts +1 -2
- package/lib/UserCard/Cards/basic-info.js +34 -42
- package/lib/UserCard/Cards/index.d.ts +1 -1
- package/lib/UserCard/Cards/index.js +13 -21
- package/lib/UserCard/Cards/name-only.js +12 -18
- package/lib/UserCard/Container/card.d.ts +2 -2
- package/lib/UserCard/Container/card.js +34 -41
- package/lib/UserCard/Container/dialog.d.ts +1 -1
- package/lib/UserCard/Container/dialog.js +27 -27
- package/lib/UserCard/Content/basic.d.ts +1 -2
- package/lib/UserCard/Content/basic.js +227 -307
- package/lib/UserCard/Content/clock.d.ts +2 -0
- package/lib/UserCard/Content/clock.js +85 -71
- package/lib/UserCard/Content/minimal.d.ts +1 -1
- package/lib/UserCard/Content/minimal.js +81 -71
- package/lib/UserCard/Content/shorten-label.js +11 -35
- package/lib/UserCard/Content/tooltip-avatar.d.ts +1 -1
- package/lib/UserCard/Content/tooltip-avatar.js +43 -51
- package/lib/UserCard/UserCard.stories.d.ts +18 -0
- package/lib/UserCard/components.d.ts +1 -1
- package/lib/UserCard/components.js +53 -66
- package/lib/UserCard/index.d.ts +1 -2
- package/lib/UserCard/index.js +59 -111
- package/lib/UserCard/types.d.ts +1 -1
- package/lib/UserCard/types.js +10 -37
- package/lib/UserCard/utils.js +70 -125
- package/lib/Util/WebWalletOpener.stories.d.ts +5 -0
- package/lib/Util/constant.js +47 -46
- package/lib/Util/deprecate.js +11 -26
- package/lib/Util/federated.d.ts +6 -6
- package/lib/Util/federated.js +77 -92
- package/lib/Util/iframe.js +14 -21
- package/lib/Util/index.d.ts +5 -5
- package/lib/Util/index.js +278 -479
- package/lib/Util/logger.d.ts +1 -1
- package/lib/Util/logger.js +17 -25
- package/lib/Util/passport.js +72 -87
- package/lib/Util/security.js +28 -40
- package/lib/Util/style.d.ts +1 -1
- package/lib/Util/style.js +4 -14
- package/lib/Util/wallet.js +16 -30
- package/lib/VerificationCode/index.d.ts +1 -1
- package/lib/VerificationCode/index.js +69 -64
- package/lib/Video/Video.stories.d.ts +6 -0
- package/lib/Video/index.d.ts +1 -9
- package/lib/Video/index.js +26 -60
- package/lib/Wallet/Action.d.ts +1 -10
- package/lib/Wallet/Action.js +37 -65
- package/lib/Wallet/Action.stories.d.ts +8 -0
- package/lib/Wallet/Download.d.ts +3 -16
- package/lib/Wallet/Download.js +41 -440
- package/lib/Wallet/Download.stories.d.ts +9 -0
- package/lib/Wallet/Open.d.ts +1 -1
- package/lib/Wallet/Open.js +27 -27
- package/lib/Wallet/OpenInWallet.stories.d.ts +5 -0
- package/lib/Wallet/images/android_download.svg.js +5 -0
- package/lib/Wallet/images/app-store.svg.js +5 -0
- package/lib/Wallet/images/google-play.svg.js +5 -0
- package/lib/WalletOSIcon/index.js +15 -73
- package/lib/WebWalletSWKeeper/index.js +39 -106
- package/lib/WechatPrompt/images/android.png +0 -0
- package/lib/WechatPrompt/images/ios.png +0 -0
- package/lib/WechatPrompt/index.js +26 -61
- package/lib/hooks/use-blocklet-logo.d.ts +2 -2
- package/lib/hooks/use-blocklet-logo.js +22 -30
- package/lib/hooks/use-clock.d.ts +1 -3
- package/lib/hooks/use-clock.js +34 -67
- package/lib/hooks/use-location-state.js +55 -79
- package/lib/hooks/use-mobile.js +8 -7
- package/lib/index.d.ts +35 -35
- package/lib/index.js +81 -38
- package/lib/ux.css +1 -0
- package/lib/withTheme/index.d.ts +1 -3
- package/lib/withTheme/index.js +28 -37
- package/lib/withTracker/error_boundary.d.ts +1 -1
- package/lib/withTracker/error_boundary.js +15 -29
- package/lib/withTracker/index.js +21 -48
- package/package.json +48 -57
- package/src/ActionButton/ActionButton.stories.jsx +61 -0
- package/src/ActionButton/index.jsx +30 -14
- package/src/ActivityIndicator/ActivityIndicator.stories.jsx +9 -0
- package/src/ActivityIndicator/index.jsx +2 -11
- package/src/Address/Address.stories.jsx +38 -0
- package/src/Address/compact-text.jsx +9 -11
- package/src/Address/did-address.tsx +8 -4
- package/src/Address/index.tsx +12 -9
- package/src/Address/responsive-did-address.tsx +94 -89
- package/src/Alert/Alert.stories.jsx +100 -0
- package/src/Alert/index.jsx +24 -12
- package/src/AnimationWaiter/AnimationWaiter.stories.jsx +35 -0
- package/src/AnimationWaiter/index.jsx +10 -23
- package/src/Async/index.tsx +2 -2
- package/src/Avatar/Avatar.stories.jsx +11 -0
- package/src/Avatar/did-motif.jsx +1 -8
- package/src/Avatar/index.jsx +36 -13
- package/src/Badge/Badge.stories.jsx +41 -0
- package/src/Badge/index.jsx +22 -18
- package/src/Blocklet/Blocklet.stories.jsx +21 -0
- package/src/Blocklet/blocklet.jsx +13 -30
- package/src/BlockletContext/index.tsx +2 -2
- package/src/BlockletNFT/BlockletNFT.stories.jsx +21 -0
- package/src/BlockletNFT/index.jsx +14 -38
- package/src/BlockletV2/Blocklet.stories.jsx +34 -0
- package/src/BlockletV2/blocklet.tsx +69 -29
- package/src/BlockletV2/components/icon-text.tsx +15 -5
- package/src/Button/Button.stories.jsx +24 -0
- package/src/Button/index.js +1 -1
- package/src/Button/wrap.jsx +20 -13
- package/src/ButtonGroup/index.js +1 -1
- package/src/Center/Center.stories.jsx +20 -0
- package/src/ClickToCopy/ClickToCopy.stories.jsx +24 -0
- package/src/ClickToCopy/copy-button.tsx +4 -4
- package/src/ClickToCopy/index.tsx +28 -12
- package/src/CodeBlock/CodeBlock.stories.jsx +22 -0
- package/src/CodeBlock/index.tsx +1 -2
- package/src/Colors/Colors.stories.jsx +211 -0
- package/src/Colors/themes/did-connect.ts +0 -2
- package/src/Config/Config.stories.jsx +16 -0
- package/src/Config/theme-mode-toggle.tsx +4 -2
- package/src/ContactForm/ContactForm.stories.jsx +32 -0
- package/src/ContactForm/index.tsx +2 -2
- package/src/CookieConsent/CookieConsent.stories.jsx +33 -0
- package/src/CookieConsent/index.tsx +1 -1
- package/src/CountDown/CountDown.stories.jsx +15 -0
- package/src/CountDown/index.tsx +11 -6
- package/src/DID/DID.stories.jsx +37 -0
- package/src/DID/index.tsx +8 -3
- package/src/DIDConnect/app-info-item.tsx +2 -2
- package/src/DIDConnect/did-connect-container.tsx +17 -18
- package/src/DIDConnect/request-storage-access-api-dialog.tsx +210 -183
- package/src/DIDConnect/with-container.tsx +17 -18
- package/src/Datatable/CustomToolbar.jsx +32 -34
- package/src/Datatable/Datatable.stories.jsx +92 -0
- package/src/Datatable/DatatableContext.jsx +2 -2
- package/src/Datatable/TableSearch.jsx +10 -12
- package/src/Datatable/index.jsx +36 -58
- package/src/Datatable/utils.js +7 -7
- package/src/Dialog/Dialog.stories.jsx +21 -0
- package/src/Dialog/confirm.jsx +11 -21
- package/src/Dialog/dialog.jsx +9 -20
- package/src/Dialog/use-confirm.jsx +4 -3
- package/src/DidLogo/Logo.stories.jsx +8 -0
- package/src/DriftBot/index.tsx +4 -6
- package/src/Earth/Earth.stories.jsx +39 -0
- package/src/Earth/index.tsx +1 -1
- package/src/Empty/Empty.stories.jsx +23 -0
- package/src/Empty/index.jsx +1 -6
- package/src/ErrorBoundary/ErrorBoundary.stories.jsx +13 -0
- package/src/ErrorBoundary/fallback.tsx +5 -1
- package/src/Footer/Footer.stories.jsx +13 -0
- package/src/Footer/index.tsx +10 -18
- package/src/Header/Header.stories.jsx +30 -0
- package/src/Header/auto-hidden.tsx +1 -1
- package/src/Header/header.tsx +21 -4
- package/src/Header/responsive-header.tsx +11 -13
- package/src/Icon/Icon.stories.jsx +45 -0
- package/src/Icon/index.tsx +12 -24
- package/src/Img/Img.stories.jsx +17 -0
- package/src/Img/index.jsx +14 -30
- package/src/InfoRow/InfoRow.stories.jsx +14 -0
- package/src/InfoRow/index.tsx +5 -5
- package/src/Layout/Layout.stories.jsx +24 -0
- package/src/Layout/dashboard/full-page.tsx +4 -4
- package/src/Layout/dashboard/index.tsx +24 -21
- package/src/Layout/dashboard/sidebar.tsx +1 -1
- package/src/Layout/dashboard-legacy/header.tsx +25 -14
- package/src/Layout/dashboard-legacy/index.tsx +7 -7
- package/src/Layout/dashboard-legacy/sidebar.tsx +1 -3
- package/src/Layout/index.tsx +8 -6
- package/src/Locale/LocaleSelector.stories.jsx +44 -0
- package/src/Locale/context.tsx +2 -2
- package/src/Locale/selector.tsx +10 -17
- package/src/Logo/Logo.stories.jsx +23 -0
- package/src/Metric/Metric.stories.jsx +29 -0
- package/src/NFTDisplay/NFTDisplay.stories.jsx +30 -0
- package/src/NFTDisplay/broken.tsx +1 -1
- package/src/NFTDisplay/displayApi.ts +1 -0
- package/src/NFTDisplay/index.tsx +0 -1
- package/src/NavMenu/NavMenu.stories.jsx +17 -0
- package/src/NavMenu/nav-menu-context.tsx +3 -3
- package/src/NavMenu/nav-menu.tsx +138 -125
- package/src/NavMenu/products.tsx +7 -1
- package/src/NavMenu/style.ts +1 -1
- package/src/PageScroller/index.tsx +2 -2
- package/src/PageScroller/story/PageScroller.stories.jsx +18 -0
- package/src/PageScroller/usePrevValue.ts +1 -1
- package/src/PhoneInput/PhoneInput.stories.jsx +12 -0
- package/src/PhoneInput/country-select.tsx +107 -103
- package/src/PhoneInput/index.tsx +12 -4
- package/src/PricingTable/PricingPlan.tsx +1 -4
- package/src/PricingTable/PricingTable.stories.jsx +38 -0
- package/src/PricingTable/index.tsx +16 -4
- package/src/QRCode/QRCode.stories.jsx +13 -0
- package/src/RelativeTime/RelativeTime.stories.jsx +20 -0
- package/src/RelativeTime/index.tsx +20 -5
- package/src/Result/Result.stories.jsx +61 -0
- package/src/Result/common.tsx +1 -2
- package/src/Result/result.tsx +22 -6
- package/src/Screenshot/Screenshot.stories.jsx +44 -0
- package/src/Screenshot/index.tsx +33 -15
- package/src/SessionManager/SessionManager.stories.jsx +9 -0
- package/src/SessionPermission/index.tsx +1 -0
- package/src/SessionUser/components/logged-in.tsx +0 -2
- package/src/SessionUser/components/quick-login-item.tsx +3 -3
- package/src/SessionUser/components/session-user-item.tsx +68 -70
- package/src/SessionUser/components/session-user-switch.tsx +9 -1
- package/src/SessionUser/components/un-login.tsx +8 -1
- package/src/SharedBridge/index.tsx +106 -111
- package/src/Sparkline/Sparkline.stories.jsx +13 -0
- package/src/Spinner/Spinner.stories.jsx +98 -0
- package/src/Spinner/index.tsx +1 -1
- package/src/SplitButton/SplitButton.stories.jsx +32 -0
- package/src/SplitButton/index.tsx +15 -9
- package/src/Switch/Switch.stories.jsx +16 -0
- package/src/Switch/index.jsx +2 -6
- package/src/Tabs/Tabs.stories.jsx +18 -0
- package/src/Tabs/index.tsx +3 -3
- package/src/Tag/Tag.stories.jsx +15 -0
- package/src/Tag/index.jsx +20 -11
- package/src/TextCollapse/TextCollapse.stories.jsx +73 -0
- package/src/TextCollapse/index.tsx +1 -1
- package/src/Theme/Theme.stories.jsx +10 -0
- package/src/Theme/theme-provider.tsx +10 -18
- package/src/Theme/theme.ts +7 -2
- package/src/Toast/Toast.stories.jsx +28 -0
- package/src/Toast/index.tsx +2 -2
- package/src/Typography/index.tsx +6 -2
- package/src/UserCard/Cards/basic-info.tsx +9 -5
- package/src/UserCard/Container/card.tsx +2 -2
- package/src/UserCard/Content/basic.tsx +43 -14
- package/src/UserCard/Content/clock.tsx +13 -6
- package/src/UserCard/Content/minimal.tsx +23 -7
- package/src/UserCard/Content/tooltip-avatar.tsx +14 -11
- package/src/UserCard/UserCard.stories.jsx +18 -0
- package/src/UserCard/components.tsx +6 -3
- package/src/UserCard/index.tsx +0 -1
- package/src/Util/WebWalletOpener.stories.jsx +5 -0
- package/src/Util/index.ts +37 -3
- package/src/VerificationCode/index.tsx +16 -14
- package/src/Video/Video.stories.jsx +6 -0
- package/src/Video/index.tsx +16 -8
- package/src/Wallet/Action.stories.jsx +8 -0
- package/src/Wallet/Action.tsx +20 -9
- package/src/Wallet/Download.stories.jsx +9 -0
- package/src/Wallet/Download.tsx +36 -14
- package/src/Wallet/Open.tsx +1 -1
- package/src/Wallet/OpenInWallet.stories.jsx +5 -0
- package/src/WechatPrompt/index.tsx +1 -2
- package/src/hooks/use-clock.tsx +2 -1
- package/src/withTheme/index.tsx +1 -4
- package/vite.config.mjs +34 -0
- package/babel.config.es.js +0 -28
- package/lib/Dialog/types.d.ts +0 -20
- package/lib/Earth/countries.json +0 -8057
- package/lib/Header/demo/images/boards.svg +0 -3
- package/lib/Header/demo/images/chatbot.svg +0 -3
- package/lib/Header/demo/images/gallery.svg +0 -3
- package/lib/Logo/images/logo-dark-text.svg +0 -3
- package/lib/Logo/images/logo-dark-top.svg +0 -6
- package/lib/Logo/images/logo-light-text.svg +0 -3
- package/lib/Logo/images/logo-light-top.svg +0 -6
- package/lib/NFTDisplay/NFTBroken.svg +0 -34
- package/lib/NFTDisplay/README.md +0 -59
- package/lib/NFTDisplay/demo/data/asset-state-bad-url.json +0 -7
- package/lib/NFTDisplay/demo/data/asset-state-did-space-svg.json +0 -7
- package/lib/NFTDisplay/demo/data/asset-state-did-space.json +0 -7
- package/lib/NFTDisplay/demo/data/asset-state-display-url.json +0 -7
- package/lib/NFTDisplay/demo/data/asset-state-gzipped-svg-1-1.json +0 -10
- package/lib/NFTDisplay/demo/data/asset-state-gzipped-svg-374-130.json +0 -10
- package/lib/NFTDisplay/demo/data/asset-state-gzipped-svg-with-foreign-object.json +0 -20
- package/lib/NFTDisplay/demo/data/asset-state-svg.json +0 -29
- package/lib/NFTDisplay/demo/data/asset-state-url.json +0 -10
- package/lib/NavMenu/images/OCAP.svg +0 -16
- package/lib/NavMenu/images/abt-network.svg +0 -18
- package/lib/NavMenu/images/ai-kit.svg +0 -46
- package/lib/NavMenu/images/aigne.svg +0 -8
- package/lib/NavMenu/images/aistro.svg +0 -14
- package/lib/NavMenu/images/arcsphere.svg +0 -13
- package/lib/NavMenu/images/blocklet-framework.svg +0 -25
- package/lib/NavMenu/images/blocklet-launcher.svg +0 -9
- package/lib/NavMenu/images/blocklet-server.svg +0 -19
- package/lib/NavMenu/images/blocklet-store.svg +0 -11
- package/lib/NavMenu/images/creator-studio.svg +0 -42
- package/lib/NavMenu/images/did-connect.svg +0 -26
- package/lib/NavMenu/images/did-name-service.svg +0 -3
- package/lib/NavMenu/images/did-wallet.svg +0 -33
- package/lib/NavMenu/images/did.svg +0 -3
- package/lib/NavMenu/images/nft-studio.svg +0 -19
- package/lib/NavMenu/images/vc.svg +0 -7
- package/lib/NavMenu/images/web3-kit.svg +0 -56
- package/lib/PageScroller/story/index.css +0 -115
- package/lib/Result/demo/fixtures/result-image-404.svg +0 -1
- package/lib/Screenshot/devices.css +0 -1366
- package/lib/SessionUser/images/did-spaces.svg +0 -17
- package/lib/Wallet/images/android_download.svg +0 -22
- package/lib/Wallet/images/app-store.svg +0 -30
- package/lib/Wallet/images/google-play.svg +0 -69
- package/lib/global.d.ts +0 -28
- package/lib/type.d.ts +0 -44
- package/lib/withTracker/README.md +0 -37
- /package/src/PageScroller/story/{FifthComponent.js → FifthComponent.jsx} +0 -0
- /package/src/PageScroller/story/{FirstComponent.js → FirstComponent.jsx} +0 -0
- /package/src/PageScroller/story/{FourthComponent.js → FourthComponent.jsx} +0 -0
- /package/src/PageScroller/story/{FullPage.js → FullPage.jsx} +0 -0
- /package/src/PageScroller/story/{PageContain.js → PageContain.jsx} +0 -0
- /package/src/PageScroller/story/{SecondComponent.js → SecondComponent.jsx} +0 -0
- /package/src/PageScroller/story/{ThirdComponent.js → ThirdComponent.jsx} +0 -0
package/src/Locale/context.tsx
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/* eslint-disable no-prototype-builtins */
|
2
|
-
import { createContext, useState, useEffect,
|
2
|
+
import { createContext, useState, useEffect, use, useRef, useCallback, ReactNode } from 'react';
|
3
3
|
import get from 'lodash/get';
|
4
4
|
import Cookie from 'js-cookie';
|
5
5
|
|
@@ -149,7 +149,7 @@ function LocaleProvider({
|
|
149
149
|
}
|
150
150
|
|
151
151
|
function useLocaleContext() {
|
152
|
-
const context =
|
152
|
+
const context = use(LocaleContext);
|
153
153
|
return context;
|
154
154
|
}
|
155
155
|
|
package/src/Locale/selector.tsx
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/* eslint-disable react/jsx-no-bind */
|
2
|
-
import React, { useState,
|
2
|
+
import React, { useState, use, useRef, useMemo } from 'react';
|
3
3
|
import {
|
4
4
|
Button,
|
5
5
|
Typography,
|
@@ -14,10 +14,9 @@ import {
|
|
14
14
|
import { Icon as IconifyIcon } from '@iconify/react';
|
15
15
|
import CheckIcon from '@iconify-icons/material-symbols/check';
|
16
16
|
import LanguageIcon from 'iconify-icons-material-symbols-400/language';
|
17
|
-
import noop from 'lodash/noop';
|
18
17
|
|
19
18
|
import { LocaleContext } from './context';
|
20
|
-
import { styled
|
19
|
+
import { styled } from '../Theme';
|
21
20
|
import type { Locale } from '../type';
|
22
21
|
import { mergeSx } from '../Util/style';
|
23
22
|
|
@@ -31,20 +30,10 @@ export interface LocaleSelectorProps extends Omit<React.HTMLAttributes<HTMLDivEl
|
|
31
30
|
}
|
32
31
|
|
33
32
|
export default function LocaleSelector(props: LocaleSelectorProps) {
|
34
|
-
const {
|
35
|
-
|
36
|
-
popperProps = {},
|
37
|
-
popperType = 'click',
|
38
|
-
icon: Icon,
|
39
|
-
size = 24,
|
40
|
-
onChange = noop,
|
41
|
-
...rest
|
42
|
-
} = props;
|
43
|
-
const { locale, changeLocale, languages } = useContext(LocaleContext);
|
33
|
+
const { showText = true, popperProps = {}, popperType = 'click', icon: Icon, size = 24, ...rest } = props;
|
34
|
+
const { locale, changeLocale, languages } = use(LocaleContext);
|
44
35
|
const anchorEl = useRef<HTMLButtonElement>(null);
|
45
36
|
const [open, setOpen] = useState(false);
|
46
|
-
const theme = useTheme();
|
47
|
-
const dark = theme?.palette?.mode === 'dark';
|
48
37
|
|
49
38
|
const onSelect = (newLocale: Locale) => {
|
50
39
|
changeLocale(newLocale);
|
@@ -88,9 +77,14 @@ export default function LocaleSelector(props: LocaleSelectorProps) {
|
|
88
77
|
}, [Icon, size]);
|
89
78
|
|
90
79
|
return (
|
80
|
+
// @ts-ignore
|
91
81
|
<Wrapper {...rest} {...handleEventProps}>
|
92
82
|
<ButtonComponent ref={anchorEl} className="trigger" role="button" aria-label="Locale selector button">
|
93
|
-
<Box
|
83
|
+
<Box
|
84
|
+
sx={{
|
85
|
+
display: 'flex',
|
86
|
+
alignItems: 'center',
|
87
|
+
}}>
|
94
88
|
{renderIcon}
|
95
89
|
|
96
90
|
{showText ? (
|
@@ -102,7 +96,6 @@ export default function LocaleSelector(props: LocaleSelectorProps) {
|
|
102
96
|
)}
|
103
97
|
</Box>
|
104
98
|
</ButtonComponent>
|
105
|
-
|
106
99
|
<Popper
|
107
100
|
open={open}
|
108
101
|
anchorEl={anchorEl.current}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
export { default as DarkMode } from './demo/dark-mode';
|
2
|
+
export { default as DarkModeLogoOnly } from './demo/dark-mode-logo-only';
|
3
|
+
export { default as DarkModeHorizontal } from './demo/dark-mode-horizontal';
|
4
|
+
export { default as WithStyling } from './demo/with-styling';
|
5
|
+
export { default as LightMode } from './demo/light-mode';
|
6
|
+
export { default as LightModeLogoOnly } from './demo/light-mode-logo-only';
|
7
|
+
export { default as LightModeHorizontal } from './demo/light-mode-horizontal';
|
8
|
+
|
9
|
+
export default {
|
10
|
+
title: 'ArcBlock/Logo',
|
11
|
+
|
12
|
+
parameters: {
|
13
|
+
docs: {
|
14
|
+
description: {
|
15
|
+
component: 'Arcblock Logo',
|
16
|
+
},
|
17
|
+
},
|
18
|
+
design: {
|
19
|
+
type: 'figma',
|
20
|
+
url: 'https://www.figma.com/file/E8TSBWCOyXzETmVOjzbqvw/ArcBlock-UI-Kit?node-id=2412%3A11100',
|
21
|
+
},
|
22
|
+
},
|
23
|
+
};
|
@@ -0,0 +1,29 @@
|
|
1
|
+
import { Box, Container } from '@mui/material';
|
2
|
+
import { ThemeProvider } from '../Theme';
|
3
|
+
import { ThemeModeToggle } from '../Config';
|
4
|
+
|
5
|
+
export { default as Basic } from './demo/basic';
|
6
|
+
export { default as HtmlValueAndName } from './demo/html-value-and-name';
|
7
|
+
|
8
|
+
export default {
|
9
|
+
title: 'Data Display/Metric',
|
10
|
+
parameters: {
|
11
|
+
docs: {
|
12
|
+
description: {
|
13
|
+
component: 'The Metric component is usually used to display statistics on dashboard pages.',
|
14
|
+
},
|
15
|
+
},
|
16
|
+
},
|
17
|
+
decorators: [
|
18
|
+
(StoryFn) => (
|
19
|
+
<ThemeProvider prefer="system">
|
20
|
+
<Container>
|
21
|
+
<Box sx={{ mb: 2 }}>
|
22
|
+
<ThemeModeToggle />
|
23
|
+
</Box>
|
24
|
+
<StoryFn />
|
25
|
+
</Container>
|
26
|
+
</ThemeProvider>
|
27
|
+
),
|
28
|
+
],
|
29
|
+
};
|
@@ -0,0 +1,30 @@
|
|
1
|
+
export { default as Basic } from './demo/basic';
|
2
|
+
export { default as FixedSize } from './demo/fixed-size';
|
3
|
+
export { default as Inset } from './demo/inset';
|
4
|
+
export { default as AspectRatio } from './demo/aspect-ratio';
|
5
|
+
export { default as NftTypeUrl } from './demo/nft-type-url';
|
6
|
+
export { default as MinimumLoadingTime } from './demo/minimum-loading-time';
|
7
|
+
export { default as WithForeignObject } from './demo/with-foreign-object';
|
8
|
+
export { default as NftTypeSvg } from './demo/nft-type-svg';
|
9
|
+
export { default as CustomLoading } from './demo/custom-loading';
|
10
|
+
export { default as SvgValidation } from './demo/svg-validation';
|
11
|
+
export { default as BrokenImage } from './demo/broken-image';
|
12
|
+
export { default as PreferredSvgEmbedderProp } from './demo/preferred-svg-embedder-prop';
|
13
|
+
export { default as ImageFilter } from './demo/image-filter';
|
14
|
+
|
15
|
+
/**
|
16
|
+
* @type { import('@storybook/react-vite').Story}
|
17
|
+
*/
|
18
|
+
export default {
|
19
|
+
title: 'Data Display/NFTDisplay',
|
20
|
+
argTypes: {
|
21
|
+
imageFilter: {
|
22
|
+
control: 'object',
|
23
|
+
defaultValue: {
|
24
|
+
imageFilter: 'resize',
|
25
|
+
w: '500',
|
26
|
+
f: 'webp',
|
27
|
+
},
|
28
|
+
},
|
29
|
+
},
|
30
|
+
};
|
package/src/NFTDisplay/index.tsx
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
export { default as BasicRouterLink } from './demo/basic-router-link';
|
2
|
+
export { default as NestedNavigation } from './demo/nested-navigation';
|
3
|
+
export { default as ActiveState } from './demo/active-state';
|
4
|
+
export { default as UseItemsProp } from './demo/use-items-prop';
|
5
|
+
export { default as LabelIconOnly } from './demo/label-icon-only';
|
6
|
+
export { default as InlineMode } from './demo/inline-mode';
|
7
|
+
|
8
|
+
export default {
|
9
|
+
title: 'Navigation/NavMenu',
|
10
|
+
parameters: {
|
11
|
+
docs: {
|
12
|
+
description: {
|
13
|
+
component: 'The NavMenu component is used to provide a means to navigate through an app or website.',
|
14
|
+
},
|
15
|
+
},
|
16
|
+
},
|
17
|
+
};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { createContext,
|
1
|
+
import { createContext, use } from 'react';
|
2
2
|
|
3
3
|
export type NavMenuContextValue = {
|
4
4
|
activeId: string | null;
|
@@ -16,11 +16,11 @@ export type NavMenuContextValue = {
|
|
16
16
|
const NavMenuContext = createContext<NavMenuContextValue | null>(null);
|
17
17
|
|
18
18
|
export function NavMenuProvider({ value, children }: { value: NavMenuContextValue; children: React.ReactNode }) {
|
19
|
-
return <NavMenuContext
|
19
|
+
return <NavMenuContext value={value}>{children}</NavMenuContext>;
|
20
20
|
}
|
21
21
|
|
22
22
|
export function useNavMenuContext() {
|
23
|
-
const context =
|
23
|
+
const context = use(NavMenuContext);
|
24
24
|
|
25
25
|
if (!context) {
|
26
26
|
throw new Error('NavMenuContext is not found');
|
package/src/NavMenu/nav-menu.tsx
CHANGED
@@ -1,9 +1,14 @@
|
|
1
|
-
import { Children, cloneElement, useEffect, useRef,
|
1
|
+
import { Children, cloneElement, useEffect, useRef, useLayoutEffect, isValidElement } from 'react';
|
2
2
|
import { ClickAwayListener, type SxProps } from '@mui/material';
|
3
3
|
import clsx from 'clsx';
|
4
|
-
import {
|
5
|
-
|
4
|
+
import {
|
5
|
+
MoreHoriz as MoreHorizIcon,
|
6
|
+
ExpandMore as ExpandMoreIcon,
|
7
|
+
Menu as MenuIcon,
|
8
|
+
ArrowForward as ArrowForwardIcon,
|
9
|
+
} from '@mui/icons-material';
|
6
10
|
import { useCreation, useMemoizedFn, useReactive, useSize, useThrottleFn } from 'ahooks';
|
11
|
+
import noop from 'lodash/noop';
|
7
12
|
import { NavMenuProvider, useNavMenuContext } from './nav-menu-context';
|
8
13
|
import { NavMenuRoot, NavMenuItem, NavMenuSub, NavMenuSubList, NavMenuStyled } from './style';
|
9
14
|
import { SubContainer } from './sub-container';
|
@@ -18,7 +23,7 @@ function filterItems(children: React.ReactNode) {
|
|
18
23
|
return false;
|
19
24
|
}
|
20
25
|
return child.type === Item || child.type === Sub;
|
21
|
-
}) as React.ReactElement[];
|
26
|
+
}) as React.ReactElement<any>[];
|
22
27
|
}
|
23
28
|
return null;
|
24
29
|
}
|
@@ -125,7 +130,7 @@ function NavMenu({
|
|
125
130
|
return isAllItemsHidden ? <MenuIcon /> : <MoreHorizIcon />;
|
126
131
|
}, [isAllItemsHidden]);
|
127
132
|
|
128
|
-
const renderChildrenWithRef = (childrenElement: React.ReactElement[]) => {
|
133
|
+
const renderChildrenWithRef = (childrenElement: React.ReactElement<any>[]) => {
|
129
134
|
return Children.map(childrenElement, (child, index) => {
|
130
135
|
return cloneElement(child, {
|
131
136
|
ref: (el: HTMLElement) => {
|
@@ -220,7 +225,7 @@ function NavMenu({
|
|
220
225
|
variant={isTopLevel ? 'default' : 'panel'}
|
221
226
|
ref={
|
222
227
|
isTopLevel
|
223
|
-
? (el) => {
|
228
|
+
? (el: HTMLElement) => {
|
224
229
|
itemRefs.current[index] = el!;
|
225
230
|
}
|
226
231
|
: undefined
|
@@ -246,7 +251,7 @@ function NavMenu({
|
|
246
251
|
variant={item.variant}
|
247
252
|
ref={
|
248
253
|
isTopLevel
|
249
|
-
? (el) => {
|
254
|
+
? (el: HTMLElement) => {
|
250
255
|
itemRefs.current[index] = el!;
|
251
256
|
}
|
252
257
|
: undefined
|
@@ -260,7 +265,7 @@ function NavMenu({
|
|
260
265
|
: children?.slice(-currentState.hiddenItemCount);
|
261
266
|
|
262
267
|
// 当前展开的子菜单
|
263
|
-
const openedId = currentState.openedIds[0];
|
268
|
+
// const openedId = currentState.openedIds[0];
|
264
269
|
|
265
270
|
return (
|
266
271
|
<NavMenuProvider value={contextValue}>
|
@@ -288,135 +293,143 @@ export interface ItemProps extends React.HTMLAttributes<HTMLLIElement> {
|
|
288
293
|
onClick?: () => void;
|
289
294
|
}
|
290
295
|
|
291
|
-
export
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
if (active) {
|
316
|
-
activate?.(id);
|
317
|
-
}
|
318
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
319
|
-
}, [active]);
|
320
|
-
|
321
|
-
const handleClick = () => {
|
322
|
-
onClick?.();
|
296
|
+
export function Item({
|
297
|
+
ref,
|
298
|
+
id: _id = '',
|
299
|
+
icon = null,
|
300
|
+
label = '',
|
301
|
+
description,
|
302
|
+
active = false,
|
303
|
+
variant = 'default',
|
304
|
+
onClick = noop,
|
305
|
+
...rest
|
306
|
+
}: ItemProps & {
|
307
|
+
ref?: React.Ref<unknown>;
|
308
|
+
}) {
|
309
|
+
const id = useUniqueId(_id);
|
310
|
+
const { mode, activeId, activate, activeTextColor } = useNavMenuContext();
|
311
|
+
const classes = clsx(
|
312
|
+
'navmenu-item',
|
313
|
+
{ 'navmenu-item--active': activeId === id },
|
314
|
+
`navmenu-item--${mode}`,
|
315
|
+
`navmenu-item--${variant}`,
|
316
|
+
rest.className
|
317
|
+
);
|
318
|
+
useEffect(() => {
|
319
|
+
if (active) {
|
323
320
|
activate?.(id);
|
324
|
-
}
|
321
|
+
}
|
322
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
323
|
+
}, [active]);
|
325
324
|
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
325
|
+
const handleClick = () => {
|
326
|
+
onClick?.();
|
327
|
+
activate?.(id);
|
328
|
+
};
|
329
|
+
|
330
|
+
return (
|
331
|
+
// eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
|
332
|
+
<NavMenuItem
|
333
|
+
{...rest}
|
334
|
+
className={classes}
|
335
|
+
ref={ref as React.Ref<HTMLLIElement>}
|
336
|
+
$activeTextColor={activeTextColor}
|
337
|
+
onClick={handleClick}>
|
338
|
+
{icon && <span className="navmenu-item__icon">{icon}</span>}
|
339
|
+
<div className="navmenu-item__content">
|
340
|
+
<span className="navmenu-item__label">
|
341
|
+
{label} <ArrowForwardIcon className="navmenu-item__label-arrow" />
|
342
|
+
</span>
|
343
|
+
{description && <span className="navmenu-item__desc">{description}</span>}
|
344
|
+
</div>
|
345
|
+
</NavMenuItem>
|
346
|
+
);
|
347
|
+
}
|
340
348
|
Item.displayName = 'NavMenu.Item';
|
341
349
|
|
342
350
|
export interface SubProps extends Omit<ItemProps, 'children' | 'active'> {
|
343
|
-
children?: Array<React.ReactElement | null> | ((props: { isOpen: boolean }) => React.ReactElement | null);
|
351
|
+
children?: Array<React.ReactElement<any> | null> | ((props: { isOpen: boolean }) => React.ReactElement<any> | null);
|
344
352
|
expandIcon?: React.ReactNode | ((props: { isOpen: boolean }) => React.ReactNode);
|
345
353
|
}
|
346
354
|
|
347
|
-
export
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
...rest
|
364
|
-
},
|
365
|
-
ref
|
366
|
-
) => {
|
367
|
-
const id = useUniqueId(_id);
|
368
|
-
const { openedIds, open, close, mode, activeTextColor } = useNavMenuContext();
|
369
|
-
const isOpen = openedIds?.includes(id) ?? false;
|
370
|
-
const isInlineMode = mode === 'inline';
|
371
|
-
const classes = clsx(
|
372
|
-
'navmenu-sub',
|
373
|
-
'navmenu-item',
|
374
|
-
{ 'navmenu-item--panel': variant === 'panel' },
|
375
|
-
{ 'navmenu-sub--opened': isOpen, 'navmenu-item--inline': isInlineMode },
|
376
|
-
rest.className
|
377
|
-
);
|
355
|
+
export function Sub({
|
356
|
+
ref,
|
357
|
+
id: _id = '',
|
358
|
+
icon = null,
|
359
|
+
label = null,
|
360
|
+
description,
|
361
|
+
variant = 'default',
|
362
|
+
children,
|
363
|
+
|
364
|
+
expandIcon = ({ isOpen }) => (
|
365
|
+
<ExpandMoreIcon
|
366
|
+
style={{
|
367
|
+
transform: `rotate(${isOpen ? 180 : 0}deg)`,
|
368
|
+
}}
|
369
|
+
/>
|
370
|
+
),
|
378
371
|
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
<div className="navmenu-item__content">
|
395
|
-
<span className="navmenu-item__label">{label}</span>
|
396
|
-
{description && <span className="navmenu-item__desc">{description}</span>}
|
397
|
-
</div>
|
398
|
-
{expandIcon && (
|
399
|
-
<span className="navmenu-sub__expand-icon">
|
400
|
-
{typeof expandIcon === 'function' ? expandIcon({ isOpen }) : expandIcon}
|
401
|
-
</span>
|
402
|
-
)}
|
403
|
-
<SubContainer inline={isInlineMode} {...containerProps}>
|
404
|
-
{typeof children === 'function' ? (
|
405
|
-
children({ isOpen }) // 自定义渲染
|
406
|
-
) : (
|
407
|
-
<NavMenuSubList className="navmenu-sub__list">{filterItems(children)}</NavMenuSubList>
|
408
|
-
)}
|
409
|
-
</SubContainer>
|
410
|
-
</NavMenuSub>
|
411
|
-
);
|
372
|
+
...rest
|
373
|
+
}: SubProps & {
|
374
|
+
ref?: React.Ref<unknown>;
|
375
|
+
}) {
|
376
|
+
const id = useUniqueId(_id);
|
377
|
+
const { openedIds, open, close, mode, activeTextColor } = useNavMenuContext();
|
378
|
+
const isOpen = openedIds?.includes(id) ?? false;
|
379
|
+
const isInlineMode = mode === 'inline';
|
380
|
+
const classes = clsx(
|
381
|
+
'navmenu-sub',
|
382
|
+
'navmenu-item',
|
383
|
+
{ 'navmenu-item--panel': variant === 'panel' },
|
384
|
+
{ 'navmenu-sub--opened': isOpen, 'navmenu-item--inline': isInlineMode },
|
385
|
+
rest.className
|
386
|
+
);
|
412
387
|
|
413
|
-
|
414
|
-
|
415
|
-
|
388
|
+
// 统一使用 click 事件控制收缩/伸展子菜单
|
389
|
+
const props = {
|
390
|
+
onClick: () => {
|
391
|
+
if (openedIds?.includes(id)) {
|
392
|
+
close?.(id);
|
393
|
+
} else {
|
394
|
+
open?.(id);
|
395
|
+
}
|
396
|
+
},
|
397
|
+
};
|
398
|
+
// inline mode, 避免点击子菜单项时触发父菜单的 open/close
|
399
|
+
const containerProps = isInlineMode ? { onClick: (e: React.MouseEvent) => e.stopPropagation() } : {};
|
400
|
+
const menu = (
|
401
|
+
<NavMenuSub
|
402
|
+
{...rest}
|
403
|
+
className={classes}
|
404
|
+
{...props}
|
405
|
+
ref={ref as React.Ref<HTMLLIElement>}
|
406
|
+
$activeTextColor={activeTextColor}>
|
407
|
+
{icon && <span className="navmenu-item__icon">{icon}</span>}
|
408
|
+
<div className="navmenu-item__content">
|
409
|
+
<span className="navmenu-item__label">{label}</span>
|
410
|
+
{description && <span className="navmenu-item__desc">{description}</span>}
|
411
|
+
</div>
|
412
|
+
{expandIcon && (
|
413
|
+
<span className="navmenu-sub__expand-icon">
|
414
|
+
{typeof expandIcon === 'function' ? expandIcon({ isOpen }) : expandIcon}
|
415
|
+
</span>
|
416
|
+
)}
|
417
|
+
<SubContainer inline={isInlineMode} {...containerProps}>
|
418
|
+
{typeof children === 'function' ? (
|
419
|
+
children({ isOpen }) // 自定义渲染
|
420
|
+
) : (
|
421
|
+
<NavMenuSubList className="navmenu-sub__list">{filterItems(children)}</NavMenuSubList>
|
422
|
+
)}
|
423
|
+
</SubContainer>
|
424
|
+
</NavMenuSub>
|
425
|
+
);
|
416
426
|
|
417
|
-
|
427
|
+
if (isInlineMode) {
|
428
|
+
return menu;
|
418
429
|
}
|
419
|
-
|
430
|
+
|
431
|
+
return <ClickAwayListener onClickAway={() => close?.(id)}>{menu}</ClickAwayListener>;
|
432
|
+
}
|
420
433
|
Sub.displayName = 'NavMenu.Sub';
|
421
434
|
|
422
435
|
NavMenu.Item = Item;
|
package/src/NavMenu/products.tsx
CHANGED
@@ -437,7 +437,13 @@ export default function Products({ className, isOpen, ...rest }: ProductsProps)
|
|
437
437
|
<SubItemGroup key={group.label} label={group.label}>
|
438
438
|
<Grid container columnSpacing={1} rowSpacing={1}>
|
439
439
|
{group.children.map((item) => (
|
440
|
-
<Grid
|
440
|
+
<Grid
|
441
|
+
key={item.description}
|
442
|
+
size={{
|
443
|
+
xs: 12,
|
444
|
+
md: 6,
|
445
|
+
lg: 4,
|
446
|
+
}}>
|
441
447
|
<Item variant="panel" style={{ padding: '8px' }} {...item} />
|
442
448
|
</Grid>
|
443
449
|
))}
|
package/src/NavMenu/style.ts
CHANGED
@@ -8,7 +8,7 @@ type NavMenuProps = {
|
|
8
8
|
// .navmenu
|
9
9
|
export const NavMenuStyled = styled('nav', {
|
10
10
|
shouldForwardProp: (prop) => prop !== '$bgColor' && prop !== '$textColor',
|
11
|
-
})<NavMenuProps>(({ $
|
11
|
+
})<NavMenuProps>(({ $textColor, theme }) => ({
|
12
12
|
position: 'relative',
|
13
13
|
padding: '0 16px',
|
14
14
|
minWidth: '50px',
|
@@ -35,7 +35,7 @@ export interface PageScrollerProps {
|
|
35
35
|
animationTimer?: number;
|
36
36
|
blockScrollDown?: false | true;
|
37
37
|
blockScrollUp?: false | true;
|
38
|
-
children?: React.ReactElement | React.ReactElement[];
|
38
|
+
children?: React.ReactElement<any> | React.ReactElement<any>[];
|
39
39
|
height?: number | string;
|
40
40
|
width?: number | string;
|
41
41
|
customPageNumber?: number;
|
@@ -62,7 +62,7 @@ function PageScroller({
|
|
62
62
|
const [componentsToRenderLength, setComponentsToRenderLength] = useState(DEFAULT_COMPONENTS_TO_RENDER_LENGTH);
|
63
63
|
const prevComponentIndex = usePrevious(componentIndex);
|
64
64
|
const pageContainer = useRef<HTMLDivElement>(null);
|
65
|
-
const children = Children.toArray(_children) as React.ReactElement[];
|
65
|
+
const children = Children.toArray(_children) as React.ReactElement<any>[];
|
66
66
|
|
67
67
|
const addNextComponent = useCallback(
|
68
68
|
(componentsToRenderOnMountLength?: number) => {
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import FullPage from './FullPage';
|
2
|
+
import PageContain from './PageContain';
|
3
|
+
|
4
|
+
export default {
|
5
|
+
title: 'Deprecated/PageScroller',
|
6
|
+
};
|
7
|
+
|
8
|
+
export function _FullPage() {
|
9
|
+
return <FullPage />;
|
10
|
+
}
|
11
|
+
|
12
|
+
_FullPage.storyName = 'full page';
|
13
|
+
|
14
|
+
export function _PageContain() {
|
15
|
+
return <PageContain />;
|
16
|
+
}
|
17
|
+
|
18
|
+
_PageContain.storyName = 'page contain';
|