@stokr/components-library 0.5.4 → 0.5.6
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/build/asset-manifest.json +9 -0
- package/build/favicon.ico +0 -0
- package/build/index.html +1 -0
- package/build/logo192.png +0 -0
- package/build/logo512.png +0 -0
- package/build/manifest.json +25 -0
- package/build/robots.txt +3 -0
- package/build/static/js/main.31d6cfe0.js +0 -0
- package/dist/AccountBalance/AccountBalance.js +43 -0
- package/dist/AccountBalance/AccountBalance.stories.js +75 -0
- package/dist/AccountBalance/AccountBalance.styles.js +38 -0
- package/dist/AdminDashboard/Table/Table.js +120 -0
- package/dist/AdminDashboard/Table/Table.styles.js +111 -0
- package/dist/AgreementItem/AgreementItem.js +38 -0
- package/dist/AgreementItem/AgreementItem.stories.js +98 -0
- package/dist/AgreementItem/AgreementItem.styles.js +31 -0
- package/dist/AnalyticGraphs/Analytic.js +528 -0
- package/dist/AnalyticGraphs/Analytic.styles.js +49 -0
- package/dist/BackButton/BackButton.js +22 -0
- package/dist/BackButton/BackButton.stories.js +24 -0
- package/dist/BackButton/BackButton.styles.js +110 -0
- package/dist/Background/Background.js +34 -0
- package/dist/Background/Background.stories.js +50 -0
- package/dist/Background/Background.styles.js +113 -0
- package/dist/BarChart/BarChart.js +258 -0
- package/dist/BarChart/BarChart.stories.js +46 -0
- package/dist/BarChart/BarChart.styles.js +93 -0
- package/dist/BarChartLegend/BarChartLegend.js +74 -0
- package/dist/BarChartLegend/BarChartLegend.styles.js +26 -0
- package/dist/BasicTable/BasicTable.js +20 -0
- package/dist/BasicTable/BasicTable.stories.js +51 -0
- package/dist/BasicTable/BasicTable.styles.js +64 -0
- package/dist/Button/Button.stories.js +63 -0
- package/dist/Button/Button.styles.js +180 -0
- package/dist/ButtonContainer/ButtonContainer.styles.js +25 -0
- package/dist/CapitalRaisedSummary/CapitalRaisedSummery.stories.js +35 -0
- package/dist/CapitalRaisedSummary/CaptialRaisedSummary.js +23 -0
- package/dist/CapitalRaisedSummary/CaptialRaisedSummary.styles.js +36 -0
- package/dist/ChartBox/ChartBox.js +34 -0
- package/dist/ChartBox/ChartBox.stories.js +9 -0
- package/dist/ChartBox/ChartBox.styles.js +50 -0
- package/dist/ChartBox/ChartBoxDistribution.js +20 -0
- package/dist/ChartBox/ChartBoxDistribution.stories.js +10 -0
- package/dist/ChartLegend/ChartLegend.js +37 -0
- package/dist/ChartLegend/ChartLegend.stories.js +74 -0
- package/dist/ChartLegend/ChartLegend.styles.js +67 -0
- package/dist/Checkbox/Checkbox.js +108 -0
- package/dist/Checkbox/Checkbox.stories.js +82 -0
- package/dist/Checkbox/Checkbox.styles.js +123 -0
- package/dist/Checklist/UserChecklist.js +247 -0
- package/dist/Checklist/UserChecklist.stories.js +115 -0
- package/dist/ComponentScroll/ComponentScroll.js +99 -0
- package/dist/ComponentScroll/ComponentScroll.stories.js +92 -0
- package/dist/ComponentScroll/ComponentScroll.styles.js +104 -0
- package/dist/ComponentWrapper/ComponentWrapper.styles.js +128 -0
- package/dist/CryptoAddress/ComponentWrap.js +24 -0
- package/dist/CryptoAddress/CryptoAddress.js +124 -0
- package/dist/CryptoAddress/CryptoAddress.stories.js +163 -0
- package/dist/CryptoAddress/CryptoAddress.styles.js +399 -0
- package/dist/CryptoAddress/RadioWrap.js +36 -0
- package/dist/CryptoAddressDetails/CryptoAddressDetails.js +42 -0
- package/dist/CryptoAddressDetails/CryptoAddressDetails.stories.js +65 -0
- package/dist/CryptoAddressDetails/CryptoAddressDetails.styles.js +114 -0
- package/dist/CryptoAddressWrapper/CryptoAddressWrapper.js +30 -0
- package/dist/CryptoAddressWrapper/CryptoAddressWrapper.styles.js +98 -0
- package/dist/DonutChart/DonutChart.js +137 -0
- package/dist/DonutChart/DonutChart.stories.js +39 -0
- package/dist/DonutChart/DonutChart.styles.js +101 -0
- package/dist/DoubleButton/DoubleButton.styles.js +25 -0
- package/dist/ErrorMessage/ErrorMessage.styles.js +9 -0
- package/dist/FAQ/FAQ.js +40 -0
- package/dist/FAQ/FAQ.stories.js +63 -0
- package/dist/FAQ/FAQ.styles.js +69 -0
- package/dist/Footer/Footer.js +54 -0
- package/dist/Footer/Footer.stories.js +41 -0
- package/dist/Footer/Footer.styles.js +230 -0
- package/dist/Footer/FooterLayout.js +114 -0
- package/dist/Footer/FooterLayout.stories.js +20 -0
- package/dist/Footer/FooterMenu.js +83 -0
- package/dist/Footer/FooterMenu.stories.js +110 -0
- package/dist/Footer/FooterMenu.styles.js +274 -0
- package/dist/Footer/index.js +4 -0
- package/dist/{03f9f978feb2b015b6812ba10f689967.png → Footer/lemonway.png} +0 -0
- package/dist/Footer/sicos-logo.svg +1 -0
- package/dist/ForgotPasswordModal/ForgotPasswordModal.js +89 -0
- package/dist/ForgotPasswordModal/ForgotPasswordModal.stories.js +31 -0
- package/dist/Form/Form.js +38 -0
- package/dist/Form/Form.stories.js +23 -0
- package/dist/Form/Form.styles.js +66 -0
- package/dist/FullscreenCard/FullscreenCard.styles.js +36 -0
- package/dist/Grid/Grid.styles.js +109 -0
- package/dist/Header/Header.js +369 -0
- package/dist/Header/Header.stories.js +172 -0
- package/dist/Header/Header.styles.js +493 -0
- package/dist/Icon/Icon.style.js +75 -0
- package/dist/InfoIcon/InfoIcon.js +40 -0
- package/dist/InfoIcon/InfoIcon.stories.js +40 -0
- package/dist/InfoIcon/InfoIcon.styles.js +42 -0
- package/dist/InfoPanel/InfoPanel.js +115 -0
- package/dist/Input/DatePickerInput.js +64 -0
- package/dist/Input/DatePickerInput.stories.js +80 -0
- package/dist/Input/DatePickerInput.styles.js +67 -0
- package/dist/Input/Input.js +86 -0
- package/dist/Input/Input.stories.js +134 -0
- package/dist/Input/Input.styles.js +126 -0
- package/dist/Input/InputPassword.js +122 -0
- package/dist/Input/InputPassword.stories.js +72 -0
- package/dist/Input/InputPassword.styles.js +139 -0
- package/dist/Input/RangeInput.js +46 -0
- package/dist/Input/RangeInput.stories.js +48 -0
- package/dist/Input/RangeInput.styles.js +125 -0
- package/dist/Input/Select.js +130 -0
- package/dist/Input/Select.stories.js +129 -0
- package/dist/Input/Select.styles.js +143 -0
- package/dist/InvestCalculator/InvestCalculator.js +353 -0
- package/dist/InvestCalculator/InvestCalculator.stories.js +129 -0
- package/dist/InvestCalculator/InvestCalculator.styles.js +78 -0
- package/dist/InvestmentStat/InvestmentStat.js +33 -0
- package/dist/InvestmentStat/InvestmentStat.stories.js +44 -0
- package/dist/InvestmentStat/InvestmentStat.styles.js +53 -0
- package/dist/KYCFlow/BasicInfo.js +396 -0
- package/dist/KYCFlow/Confirmation.js +37 -0
- package/dist/KYCFlow/DocumentFileUpload.js +240 -0
- package/dist/KYCFlow/DocumentScan.js +66 -0
- package/dist/KYCFlow/DocumentScanUpload.js +228 -0
- package/dist/KYCFlow/DocumentSelect.js +101 -0
- package/dist/KYCFlow/DocumentSuccess.js +54 -0
- package/dist/KYCFlow/DocumentUpload.js +44 -0
- package/dist/KYCFlow/DocumentVerificationType.js +114 -0
- package/dist/KYCFlow/FaceScan.js +45 -0
- package/dist/KYCFlow/FaceScanRecognition.js +52 -0
- package/dist/KYCFlow/FaceScanSuccess.js +47 -0
- package/dist/KYCFlow/Terms.js +99 -0
- package/dist/KYCFlow/_styles.js +284 -0
- package/dist/KYCFlow/index.js +14 -0
- package/dist/KYCSelectBox/KYCSelectBox.styles.js +62 -0
- package/dist/LatestUpdate/LatestUpdate.js +35 -0
- package/dist/LatestUpdate/LatestUpdate.stories.js +51 -0
- package/dist/LatestUpdate/LatestUpdate.styles.js +77 -0
- package/dist/Layout/Layout-func-no-work.js +67 -0
- package/dist/Layout/Layout.js +68 -0
- package/dist/Layout/Layout.stories.js +55 -0
- package/dist/LearnMoreCarousel/LearnMoreCarousel.js +39 -0
- package/dist/LearnMoreCarousel/LearnMoreCarousel.stories.js +58 -0
- package/dist/LearnMoreCarousel/LearnMoreCarousel.styles.js +205 -0
- package/dist/LearnMorePage/LearnMore.js +199 -0
- package/dist/LearnMorePage/LearnMore.shared.styles.js +49 -0
- package/dist/LearnMorePage/LearnMore.stories.js +41 -0
- package/dist/LearnMorePage/LearnMore.styles.js +250 -0
- package/dist/LearnMorePage/LearnMoreExampleObject.js +102 -0
- package/dist/LearnMorePage/LearnMoreItem.js +73 -0
- package/dist/LearnMorePage/LearnMoreItem.stories.js +54 -0
- package/dist/LearnMorePage/LearnMoreItem.styles.js +218 -0
- package/dist/LearnMoreSection/LearnMore.js +158 -0
- package/dist/LearnMoreSection/LearnMore.stories.js +23 -0
- package/dist/LearnMoreSection/LearnMore.styles.js +134 -0
- package/dist/LearnMoreSection/LearnMoreItem.js +39 -0
- package/dist/LearnMoreSection/LearnMoreItem.stories.js +52 -0
- package/dist/LearnMoreSection/LearnMoreItem.styles.js +54 -0
- package/dist/LoginModal/LoginModal.js +125 -0
- package/dist/MainMenu/DynamicMainMenu.js +41 -0
- package/dist/MainMenu/MainMenu.js +207 -0
- package/dist/MainMenu/MainMenu.styles.js +361 -0
- package/dist/MatomoConnect/Matomo.js +221 -0
- package/dist/MatomoConnect/Matomo_fuckup.js +185 -0
- package/dist/MenuNav/MenuNav.styles.js +88 -0
- package/dist/Modal/Modal.js +71 -0
- package/dist/Modal/Modal.stories.js +67 -0
- package/dist/Modal/Modal.styles.js +407 -0
- package/dist/MultiProgressBar/MultiProgressBar.js +33 -0
- package/dist/MultiProgressBar/MultiProgressBar.stories.js +61 -0
- package/dist/MultiProgressBar/MultiProgressBar.styles.js +92 -0
- package/dist/Newsletter/Newsletter.js +106 -0
- package/dist/Newsletter/Newsletter.stories.js +8 -0
- package/dist/Newsletter/Newsletter.styles.js +173 -0
- package/dist/NotificationContext/NotificationContext.js +126 -0
- package/dist/NotificationContext/NotificationContext.stories.js +32 -0
- package/dist/NotificationCounter/NotificationCounter.styles.js +23 -0
- package/dist/Number/Number.js +25 -0
- package/dist/Number/Number.stories.js +18 -0
- package/dist/Number/Number.styles.js +21 -0
- package/dist/PageTransition/PageTransition.js +42 -0
- package/dist/Process/Process.stories.js +34 -0
- package/dist/Process/Process.styles.js +87 -0
- package/dist/ProfileBadge/ProfileBadge.js +46 -0
- package/dist/ProfileBadge/ProfileBadge.stories.js +37 -0
- package/dist/ProfileBadge/ProfileBadge.styles.js +47 -0
- package/dist/ProfileBox/ProfileBox.js +29 -0
- package/dist/ProfileBox/ProfileBox.stories.js +27 -0
- package/dist/ProfileBox/ProfileBox.styles.js +60 -0
- package/dist/ProfileHeader/ProfileHeader-CLb4.js +401 -0
- package/dist/ProfileHeader/ProfileHeader.js +268 -0
- package/dist/ProfileHeader/ProfileHeader.styles.js +114 -0
- package/dist/ProfileStat/ProfileStat.js +32 -0
- package/dist/ProfileStat/ProfileStat.stories.js +58 -0
- package/dist/ProfileStat/ProfileStat.styles.js +80 -0
- package/dist/ProofOfAddress/ProofOfAddress.styles.js +76 -0
- package/dist/ROI/ROI.js +261 -0
- package/dist/ROI/ROI.styles.js +71 -0
- package/dist/ROI/ROIChart.js +348 -0
- package/dist/ROI/ROIChart.styles.js +98 -0
- package/dist/ROI/ROIModal.js +74 -0
- package/dist/ROI/ROIScenarioBox.js +46 -0
- package/dist/ROI/ROIScenarioBox.styles.js +131 -0
- package/dist/Radio/Radio.js +58 -0
- package/dist/Radio/Radio.stories.js +65 -0
- package/dist/Radio/Radio.styles.js +93 -0
- package/dist/RefreshButton/RefreshButton.js +14 -0
- package/dist/RefreshButton/RefreshButton.stories.js +29 -0
- package/dist/RefreshButton/RefreshButton.styles.js +57 -0
- package/dist/RegisterAlgorand/AlgoAddressName.js +103 -0
- package/dist/RegisterAlgorand/AlgoAdressSelect.js +274 -0
- package/dist/RegisterAlgorand/AlgoConnectWallet.js +37 -0
- package/dist/RegisterAlgorand/AlgoSuccess.js +28 -0
- package/dist/RegisterAlgorand/Algorand.stories.js +61 -0
- package/dist/RegisterAlgorand/ChooseWallet.js +77 -0
- package/dist/RegisterAlgorand/SelectProject.js +77 -0
- package/dist/RegisterAlgorand/_styles.js +30 -0
- package/dist/RegisterAlgorand/flow.js +243 -0
- package/dist/RegisterAlgorand/flowWithMemo.js +244 -0
- package/dist/RegisterAlgorand/index.js +7 -0
- package/dist/RegisterConfirmModal/RegisterConfirmModal.js +30 -0
- package/dist/RegisterConfirmModal/RegisterConfirmModal.stories.js +22 -0
- package/dist/RegisterConfirmModal/RegisterConfirmModal.styles.js +19 -0
- package/dist/RegisterEthereum/EthAddressLedger.js +151 -0
- package/dist/RegisterEthereum/EthAddressMetamask.js +165 -0
- package/dist/RegisterEthereum/EthAddressName.js +101 -0
- package/dist/RegisterEthereum/EthConnectLedger.js +117 -0
- package/dist/RegisterEthereum/EthConnectMetamask.js +25 -0
- package/dist/RegisterEthereum/EthFinish.js +32 -0
- package/dist/RegisterEthereum/EthIntro.js +77 -0
- package/dist/RegisterEthereum/_styles.js +30 -0
- package/dist/RegisterEthereum/index.js +9 -0
- package/dist/RegisterLiquidSteps/RegisterLiquidSteps.js +75 -0
- package/dist/RegisterLiquidSteps/RegisterLiquidSteps.stories.js +65 -0
- package/dist/RegisterLiquidSteps/RegisterLiquidSteps.styles.js +69 -0
- package/dist/RegisterLiquidSteps/assets/nav_green.svg +31 -0
- package/dist/RegisterLiquidSteps/assets/video.mp4 +0 -0
- package/dist/RegisterLiquidSteps/assets/videothumbnail.jpg +0 -0
- package/dist/RegisterLiquidSteps/complete.js +29 -0
- package/dist/RegisterLiquidSteps/flow.js +141 -0
- package/dist/RegisterLiquidSteps/index.js +29 -0
- package/dist/RegisterLiquidSteps/register-liquid.js +197 -0
- package/dist/RegisterModal/RegisterModal.js +143 -0
- package/dist/RegisterModal/RegisterModal.stories.js +35 -0
- package/dist/RequestDataBox/RequestDataBox.js +21 -0
- package/dist/RequestDataBox/RequestDataBox.stories.js +29 -0
- package/dist/RequestDataBox/RequestDataBox.styles.js +40 -0
- package/dist/RiskQuestionnaire/RiskQuestionnaireContext.js +111 -0
- package/dist/RiskQuestionnaire/_styles.js +6 -0
- package/dist/SEO/SEO.js +63 -0
- package/dist/SEO/SEO.stories.js +53 -0
- package/dist/SectionTitle/SectionTitle.styles.js +23 -0
- package/dist/SideLine/SideLine.js +4 -0
- package/dist/SideLine/SideLine.stories.js +20 -0
- package/dist/SideLine/SideLine.styles.js +29 -0
- package/dist/SigningSubflow/SignSubAddressMetamask.js +105 -0
- package/dist/SigningSubflow/SignSubConnectLedger.js +114 -0
- package/dist/SigningSubflow/SignSubConnectMetamask.js +101 -0
- package/dist/SigningSubflow/SignSubIntro.js +45 -0
- package/dist/SigningSubflow/SignSubSendLedger.js +114 -0
- package/dist/SigningSubflow/SignSubSendMetamask.js +53 -0
- package/dist/SigningSubflow/SignSubTransactionLedger.js +125 -0
- package/dist/SigningSubflow/SignSubTransactionMetamask.js +130 -0
- package/dist/SigningSubflow/_styles.js +59 -0
- package/dist/SigningSubflow/index.js +9 -0
- package/dist/Slider/Slider.js +43 -0
- package/dist/Slider/Slider.stories.js +63 -0
- package/dist/Slider/Slider.styles.js +115 -0
- package/dist/SpanButton/SpanButton.styles.js +14 -0
- package/dist/StatusBadge/StatusBadge.styles.js +16 -0
- package/dist/StepController/StepController.js +73 -0
- package/dist/StepController/StepController.stories.js +52 -0
- package/dist/StepController/StepController.styles.js +27 -0
- package/dist/StepController/StepControllerContext.js +61 -0
- package/dist/StepController/StepControllerProgress.js +28 -0
- package/dist/StepController/StepControllerProgress.stories.js +41 -0
- package/dist/StepsProgress/StepsProgress.js +95 -0
- package/dist/StepsProgress/StepsProgress.stories.js +23 -0
- package/dist/StepsProgress/StepsProgress.styles.js +97 -0
- package/dist/StokrLoader/StokrLoader.js +60 -0
- package/dist/StokrLoader/media.js +22 -0
- package/dist/StokrLoader/stokr_loader_white_400x400.gif +0 -0
- package/dist/SvgIcons/AdminBadgeSvg.js +16 -0
- package/dist/SvgIcons/CameraSvg.js +26 -0
- package/dist/SvgIcons/CapsLockSvg.js +21 -0
- package/dist/SvgIcons/DocumentBackSvg.js +25 -0
- package/dist/SvgIcons/DocumentSmallSvg.js +51 -0
- package/dist/SvgIcons/DocumentSvg.js +28 -0
- package/dist/SvgIcons/Early.js +14 -0
- package/dist/SvgIcons/EthSvg.js +30 -0
- package/dist/SvgIcons/EurSvg.js +16 -0
- package/dist/SvgIcons/FaceScanIconSvg.js +21 -0
- package/dist/SvgIcons/FourSvg.js +11 -0
- package/dist/SvgIcons/Glassess.js +19 -0
- package/dist/SvgIcons/Icons_Badge.png +0 -0
- package/dist/SvgIcons/LogoSvg.js +14 -0
- package/dist/SvgIcons/OneSvg.js +13 -0
- package/dist/SvgIcons/PassportSvg.js +46 -0
- package/dist/SvgIcons/RefreshSvg.js +17 -0
- package/dist/SvgIcons/SocialFacebook.js +15 -0
- package/dist/SvgIcons/SocialInstagram.js +15 -0
- package/dist/SvgIcons/SocialLinkedIn.js +15 -0
- package/dist/SvgIcons/SocialMedium.js +15 -0
- package/dist/SvgIcons/SocialReddit.js +15 -0
- package/dist/SvgIcons/SocialTelegram.js +15 -0
- package/dist/SvgIcons/SocialTwitter.js +15 -0
- package/dist/SvgIcons/SocialYoutube.js +15 -0
- package/dist/SvgIcons/ThreeSvg.js +10 -0
- package/dist/SvgIcons/TwoSidedDocumentSvg.js +72 -0
- package/dist/SvgIcons/TwoSvg.js +13 -0
- package/dist/SvgIcons/UpdateDefaultSvg.js +19 -0
- package/dist/SvgIcons/UpdateHardSvg.js +15 -0
- package/dist/SvgIcons/UpdateSoftSvg.js +17 -0
- package/dist/SvgIcons/UploadSvg.js +24 -0
- package/dist/SvgIcons/VerifiedBadge.js +13 -0
- package/dist/SvgIcons/index.js +32 -0
- package/dist/Switch/Switch.js +45 -0
- package/dist/Switch/Switch.stories.js +73 -0
- package/dist/Switch/Switch.styles.js +105 -0
- package/dist/Tabs/Tabs.js +48 -0
- package/dist/Tabs/Tabs.stories.js +28 -0
- package/dist/Tabs/Tabs.styles.js +11 -0
- package/dist/TabsNav/TabNav.js +21 -0
- package/dist/TabsNav/TabNav.stories.js +32 -0
- package/dist/TabsNav/TabsNav.js +23 -0
- package/dist/TabsNav/TabsNav.stories.js +25 -0
- package/dist/TabsNav/TabsNav.styles.js +80 -0
- package/dist/TeamOverview/TeamOverview.js +69 -0
- package/dist/TeamOverview/TeamOverview.stories.js +68 -0
- package/dist/TeamOverview/TeamOverview.styles.js +152 -0
- package/dist/Text/Headline.js +34 -0
- package/dist/Text/Headline.stories.js +40 -0
- package/dist/Text/StyledText.js +30 -0
- package/dist/Text/Text.stories.js +59 -0
- package/dist/Text/Text.styles.js +166 -0
- package/dist/TextLink/TextLink.styles.js +50 -0
- package/dist/ToDoList/ToDoList.js +172 -0
- package/dist/ToDoList/ToDoList.stories.js +123 -0
- package/dist/ToDoList/ToDoList.styles.js +115 -0
- package/dist/ToDoList/ToDoListTask.js +96 -0
- package/dist/ToDoList/ToDoListTask.stories.js +60 -0
- package/dist/ToDoList/ToDoListTask.styles.js +104 -0
- package/dist/TransactionDetails/TransactionDetails.js +27 -0
- package/dist/TransactionDetails/TransactionDetails.stories.js +47 -0
- package/dist/TransactionDetails/TransactionDetails.styles.js +31 -0
- package/dist/TransactionInfo/TransactionInfo.js +48 -0
- package/dist/TransactionInfo/TransactionInfo.stories.js +53 -0
- package/dist/TransactionInfo/TransactionInfo.styles.js +64 -0
- package/dist/TwoFactorModal/TwoFactorModal.js +84 -0
- package/dist/breakdown/Breakdown.js +124 -0
- package/dist/breakdown/index.js +2 -0
- package/dist/context/Auth.js +133 -0
- package/dist/context/AuthContext.js +154 -0
- package/dist/icons/Arrow.js +62 -0
- package/dist/icons/Arrow.stories.js +37 -0
- package/dist/icons/ArrowSimple.js +51 -0
- package/dist/icons/ArrowSimple.stories.js +41 -0
- package/dist/icons/Check.js +29 -0
- package/dist/icons/Check.stories.js +14 -0
- package/dist/icons/Facebook.js +15 -0
- package/dist/icons/Facebook.stories.js +15 -0
- package/dist/icons/Info.js +41 -0
- package/dist/icons/Info.stories.js +8 -0
- package/dist/icons/Instagram.js +15 -0
- package/dist/icons/Instagram.stories.js +15 -0
- package/dist/icons/LinkIcon.js +23 -0
- package/dist/icons/LinkIcon.stories.js +15 -0
- package/dist/icons/LinkedIn.js +29 -0
- package/dist/icons/LinkedIn.stories.js +8 -0
- package/dist/icons/Medium.js +28 -0
- package/dist/icons/Medium.stories.js +8 -0
- package/dist/icons/Reddit.js +18 -0
- package/dist/icons/Reddit.stories.js +15 -0
- package/dist/icons/Share.js +48 -0
- package/dist/icons/Share.stories.js +8 -0
- package/dist/icons/Telegram.js +28 -0
- package/dist/icons/Telegram.stories.js +8 -0
- package/dist/icons/Twitter.js +15 -0
- package/dist/icons/Twitter.stories.js +15 -0
- package/dist/icons/X.js +15 -0
- package/dist/icons/X.stories.js +8 -0
- package/dist/icons/Youtube.js +15 -0
- package/dist/icons/Youtube.stories.js +15 -0
- package/dist/icons/index.js +15 -0
- package/dist/index.js +177 -1
- package/dist/renderToBody/index.js +2 -0
- package/dist/renderToBody/renderToBody.js +26 -0
- package/dist/taxId/TaxId.stories.js +29 -0
- package/dist/taxId/complete.js +21 -0
- package/dist/taxId/flow.js +31 -0
- package/dist/taxId/index.js +4 -0
- package/dist/taxId/register-taxid.js +156 -0
- package/dist/video/Video.js +274 -0
- package/dist/video/Video.stories.js +45 -0
- package/dist/video/img/play-btn.svg +1 -0
- package/dist/video/index.js +2 -0
- package/package.json +128 -133
- package/public/favicon.ico +0 -0
- package/public/index.html +43 -0
- package/public/logo192.png +0 -0
- package/public/logo512.png +0 -0
- package/public/manifest.json +25 -0
- package/public/robots.txt +3 -0
- package/react-scripts +0 -0
- package/dist/07233f511246c9825a0d58e5ab2641f3.svg +0 -47
- package/dist/08418fc6c324f51f7e56.svg +0 -1
- package/dist/14aa35d4e84aebef77cf00b421fc393a.gif +0 -0
- package/dist/179ef2df02cb0b68c9fd.woff2 +0 -0
- package/dist/21e493d43617de76dbc7.woff2 +0 -0
- package/dist/2640959b1f9381cde047.eot +0 -0
- package/dist/2ba2db4ff86a2663686a100e75b50ba9.png +0 -0
- package/dist/311956ded96d3fd2813d.woff2 +0 -0
- package/dist/39f5961b2d3eb4aa5bf5.woff +0 -0
- package/dist/3caa0d4f9b7d58668066.woff2 +0 -0
- package/dist/4a510354f2f82b59fced805a8e3fe2bf.svg +0 -1
- package/dist/4c3c428d0ce82f840710.woff +0 -0
- package/dist/4e528d6445ca1974c313.woff +0 -0
- package/dist/55053cc0a8e6482eca64.ttf +0 -0
- package/dist/643c37f102b41f7f90c3.woff2 +0 -0
- package/dist/76dd0ed9c3f137513fd4.svg +0 -1
- package/dist/81f3ef07b7952e249da1.woff +0 -0
- package/dist/98b7d3182f652f021bc3.ttf +0 -0
- package/dist/9bea22b57dc165ed4382.ttf +0 -0
- package/dist/9ec738fbb66068dc1ca7.woff +0 -0
- package/dist/a1d7666a48f976227722.ttf +0 -0
- package/dist/a750292d6a0b5a760679.woff +0 -0
- package/dist/b85a961d44cc55c58050cbf7c53dd505.png +0 -0
- package/dist/bcb6531cf820152b7538.ttf +0 -0
- package/dist/c6a4bc1bd034d6303053.woff +0 -0
- package/dist/cbfc24090ef8bacab132.woff2 +0 -0
- package/dist/d2b1865643b98c0e8b54.ttf +0 -0
- package/dist/d97d7385fe8771611848.ttf +0 -0
- package/dist/index.js.LICENSE.txt +0 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import React, { PureComponent } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Formik } from 'formik';
|
|
4
|
+
import * as Yup from 'yup';
|
|
5
|
+
import Text from 'components/Text/Text.styles';
|
|
6
|
+
import Button from 'components/Button/Button.styles';
|
|
7
|
+
import Form, { FormField, FormError } from 'components/Form/Form';
|
|
8
|
+
import Input from 'components/Input/Input';
|
|
9
|
+
import FAQ from 'components/FAQ/FAQ';
|
|
10
|
+
import SectionTitle from 'components/SectionTitle/SectionTitle.styles';
|
|
11
|
+
import ComponentWrapper from 'components/ComponentWrapper/ComponentWrapper.styles';
|
|
12
|
+
import ComponentScroll from 'components/ComponentScroll/ComponentScroll';
|
|
13
|
+
import { ModalWrapper } from 'components/Modal/Modal.styles';
|
|
14
|
+
class AlgoAdressName extends PureComponent {
|
|
15
|
+
initialValues = {
|
|
16
|
+
name: ''
|
|
17
|
+
};
|
|
18
|
+
componentDidMount() {
|
|
19
|
+
const {
|
|
20
|
+
registeredAddress,
|
|
21
|
+
changeStep
|
|
22
|
+
} = this.props;
|
|
23
|
+
if (registeredAddress) {
|
|
24
|
+
changeStep();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
validationSchema = Yup.object().shape({
|
|
28
|
+
name: Yup.string().required('Address name is required')
|
|
29
|
+
});
|
|
30
|
+
onSubmit = () => {
|
|
31
|
+
const {
|
|
32
|
+
changeStep
|
|
33
|
+
} = this.props;
|
|
34
|
+
changeStep();
|
|
35
|
+
};
|
|
36
|
+
render() {
|
|
37
|
+
const {
|
|
38
|
+
error,
|
|
39
|
+
isUpdatingUser
|
|
40
|
+
} = this.props;
|
|
41
|
+
return /*#__PURE__*/React.createElement(ModalWrapper, null, /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "Register Algorand address")), /*#__PURE__*/React.createElement(ComponentScroll, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
42
|
+
noPaddingVertical: true
|
|
43
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement("h3", null, "Name your Algorand address"), /*#__PURE__*/React.createElement("p", null, "Give your address a name that reflects what it will store. Remember Satoshi's recommendation to spread your crypto investments over different addresses. "))), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(Formik, {
|
|
44
|
+
initialValues: this.initialValues,
|
|
45
|
+
validationSchema: this.validationSchema,
|
|
46
|
+
onSubmit: this.onSubmit
|
|
47
|
+
}, ({
|
|
48
|
+
values,
|
|
49
|
+
errors,
|
|
50
|
+
touched,
|
|
51
|
+
handleBlur,
|
|
52
|
+
setFieldValue,
|
|
53
|
+
setFieldTouched
|
|
54
|
+
}) => {
|
|
55
|
+
const onChangeWithTouch = e => {
|
|
56
|
+
const {
|
|
57
|
+
setNameToRegister
|
|
58
|
+
} = this.props;
|
|
59
|
+
const field = e.target;
|
|
60
|
+
setFieldValue(field.name, field.value, false);
|
|
61
|
+
setFieldTouched(field.name);
|
|
62
|
+
setNameToRegister(field.value);
|
|
63
|
+
};
|
|
64
|
+
const submitDisabled = !touched.name || !!errors.name || isUpdatingUser;
|
|
65
|
+
return /*#__PURE__*/React.createElement(Form, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
66
|
+
noPadding: true
|
|
67
|
+
}, /*#__PURE__*/React.createElement(FormField, null, /*#__PURE__*/React.createElement(Input, {
|
|
68
|
+
id: "register-algo-name",
|
|
69
|
+
name: "name",
|
|
70
|
+
label: "Address name",
|
|
71
|
+
value: values.name,
|
|
72
|
+
onChange: onChangeWithTouch,
|
|
73
|
+
onBlur: handleBlur,
|
|
74
|
+
error: !!errors.name,
|
|
75
|
+
touched: !!touched.name
|
|
76
|
+
}), /*#__PURE__*/React.createElement(FormError, {
|
|
77
|
+
show: errors.name && touched.name
|
|
78
|
+
}, errors.name))), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
79
|
+
noPaddingHorizontal: true,
|
|
80
|
+
noPaddingBottom: true,
|
|
81
|
+
center: true
|
|
82
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
83
|
+
type: "submit",
|
|
84
|
+
minWidth: "240px",
|
|
85
|
+
disabled: submitDisabled
|
|
86
|
+
}, "Use this name"), /*#__PURE__*/React.createElement(FormError, {
|
|
87
|
+
withTopSpacing: true,
|
|
88
|
+
show: error
|
|
89
|
+
}, error)));
|
|
90
|
+
})), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
91
|
+
noPaddingBottom: true
|
|
92
|
+
}, /*#__PURE__*/React.createElement(SectionTitle, null, "Frequently Asked Questions")), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(FAQ, {
|
|
93
|
+
items: [{
|
|
94
|
+
title: 'Why should I name my Algorand address?',
|
|
95
|
+
content: "If you're following best practice and spreading your crypto investments over different addresses, a name makes it easier to manage your portfolio."
|
|
96
|
+
}]
|
|
97
|
+
}))));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
AlgoAdressName.propTypes = {
|
|
101
|
+
changeStep: PropTypes.func.isRequired
|
|
102
|
+
};
|
|
103
|
+
export default AlgoAdressName;
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
import React, { useEffect, useState } from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import { EthInfo } from 'components/RegisterEthereum';
|
|
5
|
+
import Text from 'components/Text/Text.styles';
|
|
6
|
+
import Button from 'components/Button/Button.styles';
|
|
7
|
+
import RefreshButton from 'components/RefreshButton/RefreshButton';
|
|
8
|
+
import CryptoAddress, { MemoCryptoAddress } from 'components/CryptoAddress/CryptoAddress';
|
|
9
|
+
import CryptoAddressWrapper from 'components/CryptoAddressWrapper/CryptoAddressWrapper';
|
|
10
|
+
import FAQ from 'components/FAQ/FAQ';
|
|
11
|
+
import SectionTitle from 'components/SectionTitle/SectionTitle.styles';
|
|
12
|
+
import ComponentWrapper from 'components/ComponentWrapper/ComponentWrapper.styles';
|
|
13
|
+
import ComponentScroll from 'components/ComponentScroll/ComponentScroll';
|
|
14
|
+
import { ModalWrapper } from 'components/Modal/Modal.styles';
|
|
15
|
+
import { isAlgoSignerInstalled, getAlgoSignerAddress, getMyAlgoWalletAddress } from 'api/StokrWeb3';
|
|
16
|
+
import fetchData from 'api/fetchData';
|
|
17
|
+
import StyledText from 'components/Text/StyledText';
|
|
18
|
+
import { FailedIcon } from 'components/CryptoAddressWrapper/CryptoAddressWrapper.styles';
|
|
19
|
+
import { AllDoneIcon } from 'components/ToDoList/ToDoList.styles';
|
|
20
|
+
import fetchDataPublic from 'api/fetchDataPublic';
|
|
21
|
+
export const Dots = props => /*#__PURE__*/React.createElement(StyledText, _extends({
|
|
22
|
+
style: {
|
|
23
|
+
fontSize: 40
|
|
24
|
+
}
|
|
25
|
+
}, props), /*#__PURE__*/React.createElement("span", {
|
|
26
|
+
"data-order": "0"
|
|
27
|
+
}, "."), /*#__PURE__*/React.createElement("span", {
|
|
28
|
+
"data-order": "1"
|
|
29
|
+
}, "."), /*#__PURE__*/React.createElement("span", {
|
|
30
|
+
"data-order": "2"
|
|
31
|
+
}, "."));
|
|
32
|
+
const AlgoAdressSelect = props => {
|
|
33
|
+
const [correct, setcorrect] = useState(false);
|
|
34
|
+
const [refresh, setrefresh] = useState(false);
|
|
35
|
+
const [failed, setfailed] = useState(false);
|
|
36
|
+
const [selectedAdress, setselectedAdress] = useState({});
|
|
37
|
+
const [address, setaddress] = useState([{
|
|
38
|
+
address: '0x0000000000000000000000000000000000000000',
|
|
39
|
+
balance: 0
|
|
40
|
+
}]);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
async function initWallet() {
|
|
43
|
+
if (props.wallet === 'algosigner') {
|
|
44
|
+
await initAlgoSigner();
|
|
45
|
+
}
|
|
46
|
+
if (props.wallet === 'myalgo') {
|
|
47
|
+
await initMyAlgoWallet();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
initWallet();
|
|
51
|
+
}, []);
|
|
52
|
+
useEffect(() => {
|
|
53
|
+
if (refresh) {
|
|
54
|
+
setStateDelayed(false, 2000);
|
|
55
|
+
}
|
|
56
|
+
}, [refresh]);
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (props.verifiedAddress) {
|
|
59
|
+
props.changeStep();
|
|
60
|
+
}
|
|
61
|
+
}, [props.verifiedAddress]);
|
|
62
|
+
|
|
63
|
+
//get balance for each user address
|
|
64
|
+
const getBalanceData = async addresses => {
|
|
65
|
+
let addressArr = [];
|
|
66
|
+
addresses.forEach(address => {
|
|
67
|
+
addressArr.push(address.address);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
//if algo balances fail
|
|
71
|
+
let data = null;
|
|
72
|
+
try {
|
|
73
|
+
data = await fetchData('user/algoBalances', {
|
|
74
|
+
accounts: addressArr
|
|
75
|
+
});
|
|
76
|
+
} catch (error) {
|
|
77
|
+
console.log('🚀 ~ error in algoBalances', error);
|
|
78
|
+
}
|
|
79
|
+
const optInStatus = await fetchData('user/algoOptinStatus', {
|
|
80
|
+
accounts: addressArr,
|
|
81
|
+
assetId: props.projectAssetId
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
//if algoprice fails
|
|
85
|
+
let algoPrice;
|
|
86
|
+
try {
|
|
87
|
+
algoPrice = await fetchData('investment/algoprice');
|
|
88
|
+
} catch (error) {
|
|
89
|
+
console.log('🚀 ~ error in algoPrice', error);
|
|
90
|
+
}
|
|
91
|
+
if (data && algoPrice) {
|
|
92
|
+
data.forEach((account, index) => {
|
|
93
|
+
addresses[index].balance = account.balance;
|
|
94
|
+
addresses[index].currentAlgoPrice = algoPrice.EUR; //-- in euros
|
|
95
|
+
addresses[index].eqUnit = '€';
|
|
96
|
+
addresses[index].optedIn = optInStatus[account.account];
|
|
97
|
+
});
|
|
98
|
+
} else {
|
|
99
|
+
addressArr && addressArr.forEach((account, index) => {
|
|
100
|
+
addresses[index].optedIn = optInStatus[account];
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
checkforExistingAddress(addresses);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
//check if user has already registered some address
|
|
107
|
+
//add the address title if exist
|
|
108
|
+
const checkforExistingAddress = addresses => {
|
|
109
|
+
addresses.forEach(address => {
|
|
110
|
+
props.userAddresses && props.userAddresses.forEach(userAdd => {
|
|
111
|
+
if (address.address === userAdd.address) {
|
|
112
|
+
address.title = userAdd.name;
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
const onAddressChange = account => {
|
|
118
|
+
setselectedAdress(account);
|
|
119
|
+
props.setRegisteredAddress(account.title ? true : false);
|
|
120
|
+
};
|
|
121
|
+
const initAlgoSigner = async () => {
|
|
122
|
+
if (isAlgoSignerInstalled()) {
|
|
123
|
+
try {
|
|
124
|
+
const address = await getAlgoSignerAddress(props.network);
|
|
125
|
+
console.log('address: ', address);
|
|
126
|
+
if (address) {
|
|
127
|
+
await getBalanceData(address);
|
|
128
|
+
setfailed(false);
|
|
129
|
+
setcorrect(true);
|
|
130
|
+
setaddress(address);
|
|
131
|
+
}
|
|
132
|
+
} catch (error) {
|
|
133
|
+
console.log('eroor: ', error);
|
|
134
|
+
setfailed(true);
|
|
135
|
+
setcorrect(false);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
const getAdressArr = addressArr => {
|
|
140
|
+
let newArr = [];
|
|
141
|
+
addressArr && addressArr.forEach(element => {
|
|
142
|
+
newArr.push({
|
|
143
|
+
address: element
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
return newArr;
|
|
147
|
+
};
|
|
148
|
+
const initMyAlgoWallet = async () => {
|
|
149
|
+
try {
|
|
150
|
+
const address = await getMyAlgoWalletAddress();
|
|
151
|
+
if (address && !address.includes('Error')) {
|
|
152
|
+
let addressArr = getAdressArr(address);
|
|
153
|
+
await getBalanceData(addressArr);
|
|
154
|
+
setaddress(addressArr);
|
|
155
|
+
setfailed(false);
|
|
156
|
+
setcorrect(true);
|
|
157
|
+
}
|
|
158
|
+
} catch (error) {
|
|
159
|
+
console.log('eroor: ', error);
|
|
160
|
+
setfailed(true);
|
|
161
|
+
setcorrect(false);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
const setStateDelayed = (newState, time) => {
|
|
165
|
+
setTimeout(() => {
|
|
166
|
+
setrefresh(newState);
|
|
167
|
+
}, time);
|
|
168
|
+
};
|
|
169
|
+
const onRefreshClick = async () => {
|
|
170
|
+
setrefresh(true);
|
|
171
|
+
props.wallet === 'algosigner' ? await initAlgoSigner() : await initMyAlgoWallet();
|
|
172
|
+
};
|
|
173
|
+
return /*#__PURE__*/React.createElement(ModalWrapper, null, /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "Register Algorand address")), /*#__PURE__*/React.createElement(ComponentScroll, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
174
|
+
noPaddingVertical: true
|
|
175
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement("h3", null, "Select an Algorand address"), /*#__PURE__*/React.createElement("p", null, `In order for the tokens to go to the right address, you need to choose the opted-in address for the tokens to be properly assigned to you.`))), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "YOUR CURRENT ADDRESS")), /*#__PURE__*/React.createElement(ComponentWrapper, null, correct ? /*#__PURE__*/React.createElement(CryptoAddressWrapper, {
|
|
176
|
+
refresh: refresh ? 'Refreshing' : '',
|
|
177
|
+
failed: failed ? `NO DICE. PLEASE CHECK ${props.wallet === 'algosigner' ? 'Algosigner' : 'My Algo Wallet'} IS CONNECTED, THEN HIT REFRESH.` : ''
|
|
178
|
+
}, address.map((account, i) => /*#__PURE__*/React.createElement(MemoCryptoAddress, {
|
|
179
|
+
key: account + i,
|
|
180
|
+
title: account.title || 'Not yet registered',
|
|
181
|
+
address: account.address,
|
|
182
|
+
data: {
|
|
183
|
+
value: account.balance?.toFixed(4),
|
|
184
|
+
unit: 'ALGO',
|
|
185
|
+
eqValue: account.balance ? (account.balance * account.currentAlgoPrice).toFixed(2) : null,
|
|
186
|
+
eqUnit: '€'
|
|
187
|
+
},
|
|
188
|
+
wrapped: true,
|
|
189
|
+
borderTop: true,
|
|
190
|
+
borderBottom: true,
|
|
191
|
+
sideOptions: props.isUpdatingUser && !props.error && selectedAdress.address === account.address ? /*#__PURE__*/React.createElement(Dots, null) : props.error && selectedAdress.address === account.address ? /*#__PURE__*/React.createElement(FailedIcon, {
|
|
192
|
+
red: true,
|
|
193
|
+
flex: true
|
|
194
|
+
}) : account.title && (props.verifiedAddress && !props.error && selectedAdress.address === account.address || account.optedIn) ? /*#__PURE__*/React.createElement(AllDoneIcon, {
|
|
195
|
+
green: true
|
|
196
|
+
}) : /*#__PURE__*/React.createElement(Button, {
|
|
197
|
+
secondary: selectedAdress.address === account.address ? false : true,
|
|
198
|
+
disabled: account.optedIn && account.title,
|
|
199
|
+
style: {
|
|
200
|
+
minWidth: 'max-content'
|
|
201
|
+
},
|
|
202
|
+
onClick: () => {
|
|
203
|
+
//continue to naming step if already opted in address
|
|
204
|
+
props.setAddressToRegister(account.address);
|
|
205
|
+
if (!account.optedIn) {
|
|
206
|
+
props.handleOptIn(account.address, account.title);
|
|
207
|
+
}
|
|
208
|
+
onAddressChange(account);
|
|
209
|
+
if (account.optedIn && !account.title) {
|
|
210
|
+
props.setverifiedAddress(true);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}, "Select")
|
|
214
|
+
}))) : /*#__PURE__*/React.createElement(CryptoAddressWrapper, {
|
|
215
|
+
refresh: !correct && !failed ? `We're fetching your registered address from your ${props.wallet === 'algosigner' ? 'Algosigner' : 'My Algo Wallet'}.` : '',
|
|
216
|
+
failed: failed ? `Our interface couldn't connect to ${props.wallet === 'algosigner' ? 'Algosigner' : 'My Algo Wallet'} because you need to give permission to do so. Try again?` : ''
|
|
217
|
+
}, address.map((account, i) => /*#__PURE__*/React.createElement(MemoCryptoAddress, {
|
|
218
|
+
key: account + i,
|
|
219
|
+
title: account.title || 'Not yet registered',
|
|
220
|
+
address: account.address,
|
|
221
|
+
data: {
|
|
222
|
+
value: account.balance?.toFixed(4),
|
|
223
|
+
unit: 'ALGO',
|
|
224
|
+
eqValue: account.balance ? (account.balance * account.currentAlgoPrice).toFixed(2) : null,
|
|
225
|
+
eqUnit: '€'
|
|
226
|
+
},
|
|
227
|
+
wrapped: true,
|
|
228
|
+
borderTop: true,
|
|
229
|
+
borderBottom: true,
|
|
230
|
+
sideOptions: props.isUpdatingUser && !props.error && selectedAdress.address === account.address ? /*#__PURE__*/React.createElement(Dots, null) : props.error && selectedAdress.address === account.address ? /*#__PURE__*/React.createElement(FailedIcon, {
|
|
231
|
+
red: true,
|
|
232
|
+
flex: true
|
|
233
|
+
}) : account.title && (props.verifiedAddress && !props.error && selectedAdress.address === account.address || account.optedIn) ? /*#__PURE__*/React.createElement(AllDoneIcon, {
|
|
234
|
+
green: true
|
|
235
|
+
}) : /*#__PURE__*/React.createElement(Button, {
|
|
236
|
+
secondary: selectedAdress.address === account.address ? false : true,
|
|
237
|
+
disabled: account.optedIn && account.title,
|
|
238
|
+
style: {
|
|
239
|
+
minWidth: 'max-content'
|
|
240
|
+
},
|
|
241
|
+
onClick: () => {
|
|
242
|
+
//continue to naming step if already opted in address
|
|
243
|
+
props.setAddressToRegister(account.address);
|
|
244
|
+
if (!account.optedIn) {
|
|
245
|
+
props.handleOptIn(account.address, account.title);
|
|
246
|
+
}
|
|
247
|
+
onAddressChange(account);
|
|
248
|
+
if (account.optedIn && !account.title) {
|
|
249
|
+
props.setverifiedAddress(true);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}, "Select")
|
|
253
|
+
})))), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
254
|
+
noPaddingBottom: true
|
|
255
|
+
}, /*#__PURE__*/React.createElement(EthInfo, {
|
|
256
|
+
center: true
|
|
257
|
+
}, `To use a different ${props.wallet === 'algosigner' ? 'Algosigner' : 'My Algo Wallet'} address, select one from the ${props.wallet === 'algosigner' ? 'Algosigner' : 'My Algo Wallet'} extension on your browser and press the "TRY AGAIN" button below.`)), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
258
|
+
center: true
|
|
259
|
+
}, /*#__PURE__*/React.createElement(RefreshButton, {
|
|
260
|
+
onClick: onRefreshClick
|
|
261
|
+
}, "TRY AGAIN")), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
262
|
+
noPaddingBottom: true
|
|
263
|
+
}, /*#__PURE__*/React.createElement(SectionTitle, null, "Frequently Asked Questions")), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(FAQ, {
|
|
264
|
+
items: [{
|
|
265
|
+
title: 'Which address should I choose?',
|
|
266
|
+
content: "If you're planning to use the address to purchase tokens, choose one with sufficient funds or that you plan to top up. For your security and privacy, it's considered best practice to use more than one address for your crypto investments."
|
|
267
|
+
}]
|
|
268
|
+
}))));
|
|
269
|
+
};
|
|
270
|
+
AlgoAdressSelect.propTypes = {
|
|
271
|
+
changeStep: PropTypes.func.isRequired
|
|
272
|
+
};
|
|
273
|
+
export const MemoAlgoAddressSelect = /*#__PURE__*/React.memo(AlgoAdressSelect);
|
|
274
|
+
export default AlgoAdressSelect;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import Text from 'components/Text/Text.styles';
|
|
4
|
+
import Button from 'components/Button/Button.styles';
|
|
5
|
+
// import FAQ from "components/FAQ/FAQ";
|
|
6
|
+
import SectionTitle from 'components/SectionTitle/SectionTitle.styles';
|
|
7
|
+
import ComponentWrapper from 'components/ComponentWrapper/ComponentWrapper.styles';
|
|
8
|
+
import ComponentScroll from 'components/ComponentScroll/ComponentScroll';
|
|
9
|
+
import { ModalWrapper } from 'components/Modal/Modal.styles';
|
|
10
|
+
import { isAlgoSignerInstalled } from 'api/StokrWeb3';
|
|
11
|
+
import FAQ from 'components/FAQ/FAQ';
|
|
12
|
+
const AlgoConnectWallet = ({
|
|
13
|
+
changeStep,
|
|
14
|
+
wallet,
|
|
15
|
+
setWallet
|
|
16
|
+
}) => /*#__PURE__*/React.createElement(ModalWrapper, null, /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "Register Algorand address")), /*#__PURE__*/React.createElement(ComponentScroll, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
17
|
+
noPaddingVertical: true
|
|
18
|
+
}, /*#__PURE__*/React.createElement(Text, null, wallet === 'algosigner' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h3", null, "CONNECT AN ALGOSIGNER WALLET"), /*#__PURE__*/React.createElement("p", null, "Please click on the 'CONNECT' button below. If you don't already have an Algosigner wallet, the link will take you through the registration process. Just follow the prompts when you are taken to the page. Once you finish creating the wallet, you can come back to this page and connect it."), /*#__PURE__*/React.createElement("p", null, "If you already have an Algosigner wallet, please make sure the extension is enabled on your browser. There will be a pop-up that is presented asking for STOKR's permission to view your current wallet address.")), wallet === 'myalgo' && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("h3", null, "CONNECT A MY ALGO WALLET"), /*#__PURE__*/React.createElement("p", null, "Please click on the 'CONNECT' button below. If you don't already have an My Algo wallet, the link will take you to a pop-up to create a wallet. Just follow the prompts. Once you finish creating the wallet, you can come back to this page and connect it."), /*#__PURE__*/React.createElement("p", null, 'If you already have a My Algo wallet, you may need to log into it. If so, there will be a prompt for this.')))), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
19
|
+
center: true
|
|
20
|
+
}, wallet === 'algosigner' && /*#__PURE__*/React.createElement(Button, {
|
|
21
|
+
minWidth: "240px",
|
|
22
|
+
onClick: () => {
|
|
23
|
+
setWallet('algosigner');
|
|
24
|
+
changeStep();
|
|
25
|
+
},
|
|
26
|
+
disabled: !isAlgoSignerInstalled()
|
|
27
|
+
}, "Connect"), wallet === 'myalgo' && /*#__PURE__*/React.createElement(Button, {
|
|
28
|
+
minWidth: "240px",
|
|
29
|
+
onClick: () => {
|
|
30
|
+
setWallet('myalgo');
|
|
31
|
+
changeStep();
|
|
32
|
+
}
|
|
33
|
+
}, "Connect"))));
|
|
34
|
+
AlgoConnectWallet.propTypes = {
|
|
35
|
+
changeStep: PropTypes.func.isRequired
|
|
36
|
+
};
|
|
37
|
+
export default AlgoConnectWallet;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import Text from 'components/Text/Text.styles';
|
|
4
|
+
import Button from 'components/Button/Button.styles';
|
|
5
|
+
import SectionTitle from 'components/SectionTitle/SectionTitle.styles';
|
|
6
|
+
import ComponentWrapper from 'components/ComponentWrapper/ComponentWrapper.styles';
|
|
7
|
+
import ComponentScroll from 'components/ComponentScroll/ComponentScroll';
|
|
8
|
+
import { ModalWrapper } from 'components/Modal/Modal.styles';
|
|
9
|
+
const AlgoSuccess = ({
|
|
10
|
+
onClick
|
|
11
|
+
}) => {
|
|
12
|
+
return /*#__PURE__*/React.createElement(ModalWrapper, null, /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "Register Algorand address")), /*#__PURE__*/React.createElement(ComponentScroll, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
13
|
+
noPaddingVertical: true
|
|
14
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement("h3", null, "YOU successfully opted in your address"), /*#__PURE__*/React.createElement("p", null, "All Algorand addresses are checked to prevent money laundering on STOKR. We'll let you know as soon as yours is on the whitelist."))), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
15
|
+
noPaddingHorizontal: true,
|
|
16
|
+
center: true
|
|
17
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
18
|
+
minWidth: "240px",
|
|
19
|
+
onClick: () => {
|
|
20
|
+
// deleteRedirectCookieAndNavigate()
|
|
21
|
+
onClick();
|
|
22
|
+
}
|
|
23
|
+
}, "Continue"))));
|
|
24
|
+
};
|
|
25
|
+
AlgoSuccess.propTypes = {
|
|
26
|
+
changeStep: PropTypes.func.isRequired
|
|
27
|
+
};
|
|
28
|
+
export default AlgoSuccess;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import AlgoAddressFlowPage from './flow';
|
|
3
|
+
import AlgoFlowMemo from './flowWithMemo';
|
|
4
|
+
import { AuthProvider } from 'components/context/AuthContext';
|
|
5
|
+
export default {
|
|
6
|
+
title: 'Components Library/Algorand',
|
|
7
|
+
component: AlgoAddressFlowPage,
|
|
8
|
+
argTypes: {
|
|
9
|
+
showFlow: {
|
|
10
|
+
type: 'boolean',
|
|
11
|
+
defaultValue: true
|
|
12
|
+
},
|
|
13
|
+
setShowFlow: {},
|
|
14
|
+
setShowPending: {},
|
|
15
|
+
withSuccessPage: {
|
|
16
|
+
type: 'boolean',
|
|
17
|
+
defaultValue: false
|
|
18
|
+
},
|
|
19
|
+
project: {},
|
|
20
|
+
wallet: {}
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
const Template = args => /*#__PURE__*/React.createElement(AuthProvider, null, /*#__PURE__*/React.createElement(AlgoAddressFlowPage, args));
|
|
24
|
+
export const algoFlowWithoutProject = () => /*#__PURE__*/React.createElement(AuthProvider, null, /*#__PURE__*/React.createElement(AlgoAddressFlowPage, {
|
|
25
|
+
showFlow: {
|
|
26
|
+
type: 'boolean',
|
|
27
|
+
defaultValue: true
|
|
28
|
+
},
|
|
29
|
+
setShowFlow: () => {},
|
|
30
|
+
withSuccessPage: true
|
|
31
|
+
// project={{ title: 'Algorand Test', primaryAssetId: '20918100' }}
|
|
32
|
+
}));
|
|
33
|
+
|
|
34
|
+
export const AlgoFlowWithMemo = () => /*#__PURE__*/React.createElement(AuthProvider, null, /*#__PURE__*/React.createElement(AlgoFlowMemo, {
|
|
35
|
+
showFlow: true,
|
|
36
|
+
setShowFlow: {}
|
|
37
|
+
}));
|
|
38
|
+
// export const headerUserWithoutAvatar = () => <Header user={{}} />
|
|
39
|
+
|
|
40
|
+
export const AlgoFlowProject = Template.bind({});
|
|
41
|
+
AlgoFlowProject.args = {
|
|
42
|
+
project: {
|
|
43
|
+
title: 'Algorand Test',
|
|
44
|
+
name: 'Algorand',
|
|
45
|
+
primaryAssetId: '20918100'
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export const AlgoFlowWallet = Template.bind({});
|
|
49
|
+
AlgoFlowWallet.args = {
|
|
50
|
+
project: {
|
|
51
|
+
title: 'Algorand Test',
|
|
52
|
+
name: 'Algorand',
|
|
53
|
+
primaryAssetId: '20918100'
|
|
54
|
+
},
|
|
55
|
+
wallet: {
|
|
56
|
+
setverifiedAddress: true
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
algoFlowWithoutProject.story = {
|
|
60
|
+
//decorators: [withKnobs],
|
|
61
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import Text from 'components/Text/Text.styles';
|
|
4
|
+
import Button from 'components/Button/Button.styles';
|
|
5
|
+
import FAQ from 'components/FAQ/FAQ';
|
|
6
|
+
import SectionTitle from 'components/SectionTitle/SectionTitle.styles';
|
|
7
|
+
import ComponentWrapper from 'components/ComponentWrapper/ComponentWrapper.styles';
|
|
8
|
+
import ComponentScroll from 'components/ComponentScroll/ComponentScroll';
|
|
9
|
+
import DoubleButton from 'components/DoubleButton/DoubleButton.styles';
|
|
10
|
+
import { ModalWrapper } from 'components/Modal/Modal.styles';
|
|
11
|
+
import { supportsU2F, isAlgoSignerInstalled } from 'api/StokrWeb3';
|
|
12
|
+
import { Tooltip } from 'react-tippy';
|
|
13
|
+
const ChooseWallet = ({
|
|
14
|
+
setWallet,
|
|
15
|
+
changeStep
|
|
16
|
+
}) => {
|
|
17
|
+
const [showRefreshButton, setShowRefreshButton] = useState(false);
|
|
18
|
+
return /*#__PURE__*/React.createElement(ModalWrapper, null, /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "Register Algorand address")), /*#__PURE__*/React.createElement(ComponentScroll, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
19
|
+
noPaddingVertical: true
|
|
20
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement("h3", null, "Choose your wallet"), /*#__PURE__*/React.createElement("p", null, 'Please choose the wallet you either already have or would like to signup with.'), /*#__PURE__*/React.createElement("p", null, 'Before chosing your wallet please make sure you are using the right browser and have the right plug-ins installed.'))), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(DoubleButton, null, /*#__PURE__*/React.createElement(Button, {
|
|
21
|
+
onClick: () => {
|
|
22
|
+
setWallet('myalgo');
|
|
23
|
+
changeStep();
|
|
24
|
+
}
|
|
25
|
+
// minWidth="240px"
|
|
26
|
+
,
|
|
27
|
+
fluid: true
|
|
28
|
+
}, "My Algo Wallet"), showRefreshButton ? /*#__PURE__*/React.createElement(Button, {
|
|
29
|
+
onClick: () => {
|
|
30
|
+
setWallet('algosigner');
|
|
31
|
+
|
|
32
|
+
//changeStep()
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
fluid: true
|
|
36
|
+
}, "Refresh") : !supportsU2F() ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Tooltip, {
|
|
37
|
+
title: "A chrome-based browser is required to connect with an Algosigner wallet.",
|
|
38
|
+
position: 'top',
|
|
39
|
+
theme: "light",
|
|
40
|
+
arrow: true,
|
|
41
|
+
duration: 200,
|
|
42
|
+
style: {
|
|
43
|
+
display: 'inline-flex',
|
|
44
|
+
width: '50%'
|
|
45
|
+
}
|
|
46
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
|
47
|
+
disabled: !supportsU2F()
|
|
48
|
+
}, 'AlgoSigner'))) : /*#__PURE__*/React.createElement(Button, {
|
|
49
|
+
onClick: () => {
|
|
50
|
+
if (isAlgoSignerInstalled()) {
|
|
51
|
+
setWallet('algosigner');
|
|
52
|
+
changeStep();
|
|
53
|
+
} else {
|
|
54
|
+
window.open('https://www.purestake.com/technology/algosigner/', '_blank');
|
|
55
|
+
setShowRefreshButton(true);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
disabled: !supportsU2F(),
|
|
59
|
+
fluid: true
|
|
60
|
+
}, isAlgoSignerInstalled() ? 'AlgoSigner' : 'Get AlgoSigner'))), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
61
|
+
noPaddingBottom: true
|
|
62
|
+
}, /*#__PURE__*/React.createElement(SectionTitle, null, "Frequently Asked Questions")), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(FAQ, {
|
|
63
|
+
items: [{
|
|
64
|
+
title: 'What is a crypto wallet?',
|
|
65
|
+
content: 'A crypto wallet is a hardware device or browser interface to manage and protect your private key and as a result the transactions you are making on the blockchain.'
|
|
66
|
+
}, {
|
|
67
|
+
title: 'Which Algorand wallet should I use?',
|
|
68
|
+
content: 'Both wallets perform the exact same function and both are quite easy to download and use. The key difference is that MyAlgo is a more popular choice amongst Algorand holders for its range of functionality. Algosigner might be a good choice if you are just looking for something basic and hold your assets obtained from the STOKR platform.'
|
|
69
|
+
}]
|
|
70
|
+
}))));
|
|
71
|
+
};
|
|
72
|
+
ChooseWallet.propTypes = {
|
|
73
|
+
setWallet: PropTypes.func.isRequired,
|
|
74
|
+
changeStep: PropTypes.func.isRequired
|
|
75
|
+
};
|
|
76
|
+
export const MemoChooseWallet = /*#__PURE__*/React.memo(ChooseWallet);
|
|
77
|
+
export default ChooseWallet;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import Text from 'components/Text/Text.styles';
|
|
4
|
+
import Button from 'components/Button/Button.styles';
|
|
5
|
+
import FAQ from 'components/FAQ/FAQ';
|
|
6
|
+
import SectionTitle from 'components/SectionTitle/SectionTitle.styles';
|
|
7
|
+
import ComponentWrapper from 'components/ComponentWrapper/ComponentWrapper.styles';
|
|
8
|
+
import ComponentScroll from 'components/ComponentScroll/ComponentScroll';
|
|
9
|
+
import { ModalWrapper } from 'components/Modal/Modal.styles';
|
|
10
|
+
import CryptoAddress, { MemoCryptoAddress } from 'components/CryptoAddress/CryptoAddress';
|
|
11
|
+
import CryptoAddressWrapper from 'components/CryptoAddressWrapper/CryptoAddressWrapper';
|
|
12
|
+
import { Dots } from './AlgoAdressSelect';
|
|
13
|
+
const SelectProject = ({
|
|
14
|
+
changeStep,
|
|
15
|
+
projects,
|
|
16
|
+
setselectedProject,
|
|
17
|
+
selectedProject,
|
|
18
|
+
isLoading
|
|
19
|
+
}) => {
|
|
20
|
+
//if we use modal from project-specific pages
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
if (selectedProject.primaryAssetId) {
|
|
23
|
+
changeStep();
|
|
24
|
+
}
|
|
25
|
+
}, []);
|
|
26
|
+
return /*#__PURE__*/React.createElement(ModalWrapper, null, /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(SectionTitle, null, "Register Algorand address")), /*#__PURE__*/React.createElement(ComponentScroll, null, /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
27
|
+
noPaddingVertical: true
|
|
28
|
+
}, /*#__PURE__*/React.createElement(Text, null, /*#__PURE__*/React.createElement("h3", null, "Select a project"), /*#__PURE__*/React.createElement("p", null, 'Some projects on Algorand are only available for eligible investors. Click “Opt-In” next to the projects you are already elgible to invest in. Otherwise click "Learn More".'))), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(React.Fragment, null, isLoading ? /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
29
|
+
center: true,
|
|
30
|
+
noPadding: true
|
|
31
|
+
}, /*#__PURE__*/React.createElement(Dots, {
|
|
32
|
+
style: {
|
|
33
|
+
fontSize: 60
|
|
34
|
+
}
|
|
35
|
+
})) : /*#__PURE__*/React.createElement(CryptoAddressWrapper, null, projects.map((project, i) => /*#__PURE__*/React.createElement(React.Fragment, {
|
|
36
|
+
key: project.name
|
|
37
|
+
}, /*#__PURE__*/React.createElement(MemoCryptoAddress, {
|
|
38
|
+
key: project.name,
|
|
39
|
+
title: project.title || 'No project name',
|
|
40
|
+
src: project.logourl,
|
|
41
|
+
sideOptions: /*#__PURE__*/React.createElement(Button, {
|
|
42
|
+
secondary: true
|
|
43
|
+
// style={{ minWidth: 'max-content' }}
|
|
44
|
+
,
|
|
45
|
+
minWidth: '165px',
|
|
46
|
+
onClick: () => {
|
|
47
|
+
if (project.isInvestorAllowed) {
|
|
48
|
+
setselectedProject(project);
|
|
49
|
+
changeStep();
|
|
50
|
+
} else {
|
|
51
|
+
console.log('🚀 ~ process.env', process.env);
|
|
52
|
+
window.location.href = `https://${process.env.REACT_APP_WEBSITE_DOMAIN}/${project.name}`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}, project.isInvestorAllowed ? 'Opt in' : 'Learn More'),
|
|
56
|
+
wrapped: true,
|
|
57
|
+
flexHead: true,
|
|
58
|
+
borderTop: true,
|
|
59
|
+
borderBottom: true
|
|
60
|
+
})))))), /*#__PURE__*/React.createElement(ComponentWrapper, {
|
|
61
|
+
noPaddingBottom: true
|
|
62
|
+
}, /*#__PURE__*/React.createElement(SectionTitle, null, "Frequently Asked Questions")), /*#__PURE__*/React.createElement(ComponentWrapper, null, /*#__PURE__*/React.createElement(FAQ, {
|
|
63
|
+
items: [{
|
|
64
|
+
title: 'What is a crypto wallet?',
|
|
65
|
+
content: 'A crypto wallet is a hardware device or browser interface to manage and protect your private key and as a result the transactions you are making on the blockchain.'
|
|
66
|
+
}, {
|
|
67
|
+
title: 'Which Algorand wallet should I use?',
|
|
68
|
+
content: 'Both wallets perform the exact same function and both are quite easy to download and use. The key difference is that MyAlgo is a more popular choice amongst Algorand holders for its range of functionality. Algosigner might be a good choice if you are just looking for something basic and hold your assets obtained from the STOKR platform.'
|
|
69
|
+
}]
|
|
70
|
+
}))));
|
|
71
|
+
};
|
|
72
|
+
SelectProject.propTypes = {
|
|
73
|
+
setWallet: PropTypes.func.isRequired,
|
|
74
|
+
changeStep: PropTypes.func.isRequired
|
|
75
|
+
};
|
|
76
|
+
export const MemoSelectProject = /*#__PURE__*/React.memo(SelectProject);
|
|
77
|
+
export default SelectProject;
|