diff --git a/packages/ui/src/app/GlobalModals.tsx b/packages/ui/src/app/GlobalModals.tsx index f3bfdc6a4d..375951f91f 100644 --- a/packages/ui/src/app/GlobalModals.tsx +++ b/packages/ui/src/app/GlobalModals.tsx @@ -3,7 +3,6 @@ import React, { memo, ReactElement, useEffect, useMemo, useState } from 'react' import ReactDOM from 'react-dom' import styled from 'styled-components' -import { useMyAccounts } from '@/accounts/hooks/useMyAccounts' import { ClaimVestingModalCall } from '@/accounts/modals/ClaimVestingModal' import { ClaimVestingModal } from '@/accounts/modals/ClaimVestingModal/ClaimVestingModal' import { MoveFundsModal, MoveFundsModalCall } from '@/accounts/modals/MoveFundsModal' @@ -26,11 +25,9 @@ import { TransferModal, TransferModalCall } from '@/accounts/modals/TransferModa import { FailureModal } from '@/common/components/FailureModal' import { Loading } from '@/common/components/Loading' import { ModalGlass } from '@/common/components/Modal' -import { NotSupportMobileModal } from '@/common/components/NotSupportMobileModal' import { SearchResultsModal, SearchResultsModalCall } from '@/common/components/Search/SearchResultsModal' import { SuccessModal } from '@/common/components/SuccessModal' import { useModal } from '@/common/hooks/useModal' -import { useResponsive } from '@/common/hooks/useResponsive' import { useTransactionStatus } from '@/common/hooks/useTransactionStatus' import { ConfirmModal } from '@/common/modals/ConfirmModal/ConfirmModal' import { OnBoardingModal, OnBoardingModalCall } from '@/common/modals/OnBoardingModal' @@ -221,32 +218,10 @@ export const MODAL_WITH_CLOSE_CONFIRMATION: ModalNames[] = [ 'VoteForProposalModal', ] -const NON_TRANSACTIONAL_MODALS: ModalNames[] = [ - 'Member', - 'ApplicationDetails', - 'VoteRationaleModal', - 'SearchResults', - 'CandidacyPreview', - 'EmailConfirmationModal', -] - -const MOBILE_SUPPORTED_MODALS: ModalNames[] = [ - ...NON_TRANSACTIONAL_MODALS, - 'SwitchMember', - 'DisconnectWallet', - 'SignOut', - 'CreatePost', - 'PostReplyModal', - 'CreateThreadModal', - 'EmailSubscriptionModal', -] - export const GlobalModals = () => { const { modal, hideModal, currentModalMachine, showModal, modalData, isClosing } = useModal() const { active: activeMember } = useMyMemberships() - const { wallet } = useMyAccounts() const { status } = useTransactionStatus() - const { isMobileWallet } = useResponsive() const Modal = useMemo(() => (modal && modal in modals ? memo(() => modals[modal as ModalNames]) : null), [modal]) const [container, setContainer] = useState(document.body) @@ -257,11 +232,6 @@ export const GlobalModals = () => { const potentialFallback = useGlobalModalHandler(currentModalMachine, hideModal) - const mobileSupported = wallet ? MOBILE_SUPPORTED_MODALS : NON_TRANSACTIONAL_MODALS - if (isMobileWallet && modal && !mobileSupported.includes(modal as ModalNames)) { - return - } - if (modal && !GUEST_ACCESSIBLE_MODALS.includes(modal as ModalNames) && !activeMember) { showModal({ modal: 'SwitchMember', diff --git a/packages/ui/src/app/components/OnboardingOverlay/OnBoardingOverlay.tsx b/packages/ui/src/app/components/OnboardingOverlay/OnBoardingOverlay.tsx index 7598c1f9df..cf80c4f8d8 100644 --- a/packages/ui/src/app/components/OnboardingOverlay/OnBoardingOverlay.tsx +++ b/packages/ui/src/app/components/OnboardingOverlay/OnBoardingOverlay.tsx @@ -88,19 +88,10 @@ export const OnBoardingOverlay = () => { showModal({ modal: 'OnBoardingModal' }) }, [wallet, selectedWallet]) - if (isLoading || !status || status === 'finished' || !api?.isConnected) { + if (isMobile || isLoading || !status || status === 'finished' || !api?.isConnected) { return null } - if (isMobile) { - return ( - - To become a member visit this page from desktop - It requires browser extension - - ) - } - return ( <> @@ -246,20 +237,3 @@ export const StepperContainer = styled.div` padding: 10px; justify-content: center; ` - -const WrapperMobileMode = styled.div` - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - gap: 4px; - width: 100%; - background-color: ${Colors.Black[700]}; - color: ${Colors.White}; - position: relative; - padding: 10px 16px; - - p { - text-align: center; - } -` diff --git a/packages/ui/src/common/components/Modal/Modal.tsx b/packages/ui/src/common/components/Modal/Modal.tsx index 746d49a9da..4fa22bb2c7 100644 --- a/packages/ui/src/common/components/Modal/Modal.tsx +++ b/packages/ui/src/common/components/Modal/Modal.tsx @@ -174,7 +174,7 @@ export const ModalFooterComponent = styled.footer` grid-area: modalfooter; gap: 16px; justify-self: end; - justify-content: end; + justify-content: space-between; align-items: center; width: 100%; height: content-fit; @@ -182,9 +182,17 @@ export const ModalFooterComponent = styled.footer` padding: 12px 26px 12px 24px; border-radius: 0 0 2px 2px; position: relative; + max-width: 100vw; + + > :nth-child(1) { + margin: 0 auto 0 0; + } + > :nth-last-child(1) { + margin: 0 0 0 auto; + } @media (min-width: ${BreakPoints.sm}px) { - flex-flow: nowrap; + flex-wrap: nowrap; } ` diff --git a/packages/ui/src/common/components/Modal/Modals.tsx b/packages/ui/src/common/components/Modal/Modals.tsx index bd2cc2af01..227bc2c466 100644 --- a/packages/ui/src/common/components/Modal/Modals.tsx +++ b/packages/ui/src/common/components/Modal/Modals.tsx @@ -51,15 +51,12 @@ export const TransactionAmount = styled.div` ` export const TransactionInfoContainer = styled.div` - display: grid; margin-right: 24px; ` export const BalanceInfo = styled.div` - display: inline-grid; + display: flex; position: relative; - grid-template-columns: 1fr 168px; - grid-template-rows: 1fr; align-items: center; ` @@ -68,7 +65,7 @@ export const BalanceInfoInRow = styled(BalanceInfo)` ` export const BalanceInfoNarrow = styled(BalanceInfo)` - grid-template-columns: 1fr 128px; + gap: 4px; width: auto; ` diff --git a/packages/ui/src/common/components/NotSupportMobileModal.tsx b/packages/ui/src/common/components/NotSupportMobileModal.tsx deleted file mode 100644 index 040a0a7828..0000000000 --- a/packages/ui/src/common/components/NotSupportMobileModal.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react' - -import { Modal, ModalBody, ModalHeader } from '@/common/components/Modal' -import { TextMedium } from '@/common/components/typography' - -interface Props { - onClose: () => void -} - -export const NotSupportMobileModal = ({ onClose }: Props) => ( - - - - This action requires a browser extension, please visit this page from a desktop browser. - - -) diff --git a/packages/ui/src/common/components/Stepper/HorizontalStepper.tsx b/packages/ui/src/common/components/Stepper/HorizontalStepper.tsx index d461ebf0bc..8cc5e68f9d 100644 --- a/packages/ui/src/common/components/Stepper/HorizontalStepper.tsx +++ b/packages/ui/src/common/components/Stepper/HorizontalStepper.tsx @@ -2,7 +2,7 @@ import React from 'react' import styled, { css } from 'styled-components' import { asStepsToRender, StepperStep, StepToRender } from '@/common/components/Stepper/types' -import { BorderRad, Colors, Fonts, Transitions } from '@/common/constants' +import { BorderRad, BreakPoints, Colors, Fonts, Transitions } from '@/common/constants' import { CheckboxIcon } from '../icons' @@ -16,17 +16,26 @@ export const HorizontalStepper = ({ steps }: HorizontalStepperProps) => { return ( {stepsToRender.map((step, index) => ( - - {step.isPast ? : index + 1} - - {step.title} - - + <> + + {step.isPast ? : index + 1} + + {step.title} + + + {index < stepsToRender.length - 1 && } + ))} ) } +const Separator = styled.i` + min-width: 20px; + height: 1px; + background-color: ${Colors.Black[500]}; +` + const pastStepCss = css` border-color: ${Colors.Black[500]}; color: ${Colors.White}; @@ -40,6 +49,7 @@ const activeStepCss = css` const StepTitle = styled.h6` align-self: center; + text-align: center; text-transform: capitalize; transition: ${Transitions.all}; font-weight: 400; @@ -68,24 +78,15 @@ export const StepCircle = styled.span` ` export const Step = styled.div<{ step: StepToRender }>` + align-self: baseline; display: flex; + flex-direction: column; + gap: 8px; position: relative; align-items: center; + justify-content: center; width: fit-content; - - &:not(:first-child) { - margin-left: 12px; - } - - &:not(:last-child) { - &:after { - margin-left: 12px; - content: ''; - min-width: 20px; - height: 1px; - background-color: ${Colors.Black[500]}; - } - } + flex: 1 1 0; ${StepCircle} { ${({ step: { isActive } }) => (isActive ? activeStepCss : pastStepCss)}; @@ -96,6 +97,11 @@ export const Step = styled.div<{ step: StepToRender }>` return isActive ? 'color: white; font-weight: 700' : `color: ${Colors.Black[400]}` }}; } + + @media (min-width: ${BreakPoints.sm}px) { + flex-direction: row; + flex: auto; + } ` const StepBody = styled.div` @@ -108,4 +114,5 @@ const HorizontalStepperWrapper = styled.div` display: flex; justify-content: space-between; align-items: center; + gap: 12px; ` diff --git a/packages/ui/src/common/components/forms/Checkbox.tsx b/packages/ui/src/common/components/forms/Checkbox.tsx index db383c5ec6..cd8d6dcbc5 100644 --- a/packages/ui/src/common/components/forms/Checkbox.tsx +++ b/packages/ui/src/common/components/forms/Checkbox.tsx @@ -6,6 +6,7 @@ import { CheckboxIcon, CheckboxIconStyles } from '../icons/CheckboxIcon' export interface CheckboxProps { id: string + className?: string isRequired?: boolean children?: React.ReactNode enabled?: boolean @@ -13,7 +14,15 @@ export interface CheckboxProps { onChange?: (value: boolean) => void } -export function Checkbox({ id, isRequired, children, enabled = true, isChecked = false, onChange }: CheckboxProps) { +export function Checkbox({ + id, + className, + isRequired, + children, + enabled = true, + isChecked = false, + onChange, +}: CheckboxProps) { const [isStateChecked, setStateChecked] = useState(isChecked) useEffect(() => { @@ -22,6 +31,7 @@ export function Checkbox({ id, isRequired, children, enabled = true, isChecked = return ( { event.preventDefault() diff --git a/packages/ui/src/common/modals/OnBoardingModal/OnBoardingModal.tsx b/packages/ui/src/common/modals/OnBoardingModal/OnBoardingModal.tsx index 1b130b3ace..05a33d4c2a 100644 --- a/packages/ui/src/common/modals/OnBoardingModal/OnBoardingModal.tsx +++ b/packages/ui/src/common/modals/OnBoardingModal/OnBoardingModal.tsx @@ -24,12 +24,15 @@ import { OnBoardingMembership } from '@/common/modals/OnBoardingModal/OnBoarding import { OnBoardingPlugin } from '@/common/modals/OnBoardingModal/OnBoardingPlugin' import { OnBoardingStatus, SetMembershipAccount } from '@/common/providers/onboarding/types' import { definedValues } from '@/common/utils' +import { useMyMemberships } from '@/memberships/hooks/useMyMemberships' import { MemberFormFields } from '@/memberships/modals/BuyMembershipModal/BuyMembershipFormModal' import { BuyMembershipSuccessModal } from '@/memberships/modals/BuyMembershipModal/BuyMembershipSuccessModal' +import { SwitchMemberModalCall } from '@/memberships/modals/SwitchMemberModal' import { toExternalResources } from '@/memberships/modals/utils' export const OnBoardingModal = () => { - const { hideModal } = useModal() + const { showModal, hideModal } = useModal() + const { hasMembers } = useMyMemberships() const { status: realStatus, membershipAccount, setMembershipAccount, isLoading } = useOnBoarding() const status = useDebounce(realStatus, 50) const [state, send] = useMachine(onBoardingMachine) @@ -61,6 +64,12 @@ export const OnBoardingModal = () => { } }, [status, membershipAccount]) + useEffect(() => { + if (status === 'finished' && !hasMembers) { + showModal({ modal: 'SwitchMember' }) + } + }, [status]) + useEffect(() => { async function submitNewMembership(form: MemberFormFields) { if (!endpoints.membershipFaucetEndpoint) { @@ -183,8 +192,8 @@ const StepperWrapper = styled.div` justify-content: center; align-items: center; width: 100%; - padding: 0 52px; - height: 80px; + max-width: 100vw; + padding: 24px 52px; position: relative; background-color: ${Colors.Black[700]}; ` diff --git a/packages/ui/src/common/modals/OnBoardingModal/OnBoardingPlugin.tsx b/packages/ui/src/common/modals/OnBoardingModal/OnBoardingPlugin.tsx index 64cc89a7b7..0a123305b0 100644 --- a/packages/ui/src/common/modals/OnBoardingModal/OnBoardingPlugin.tsx +++ b/packages/ui/src/common/modals/OnBoardingModal/OnBoardingPlugin.tsx @@ -30,16 +30,16 @@ export const OnBoardingPlugin = () => { Select Wallet Select which wallet you want to use to connect with. - - {allWallets.map((wallet) => ( + {allWallets.map((wallet) => ( + setSelectedWallet(wallet)} selected={selectedWallet?.extensionName === wallet.extensionName} /> - ))} - + + ))} {error === 'APP_REJECTED' && ( @@ -98,10 +98,10 @@ const Wrapper = styled.div` align-items: center; gap: 5px; width: 100%; - max-width: 640px; + max-width: 592px; height: 100%; margin: 0 auto; - padding: 36px 0 24px; + padding: 36px 24px 24px; text-align: center; > *:nth-child(2) { diff --git a/packages/ui/src/common/modals/OnBoardingModal/components/NoAccountStep.tsx b/packages/ui/src/common/modals/OnBoardingModal/components/NoAccountStep.tsx index 7d46fd20a9..8487013774 100644 --- a/packages/ui/src/common/modals/OnBoardingModal/components/NoAccountStep.tsx +++ b/packages/ui/src/common/modals/OnBoardingModal/components/NoAccountStep.tsx @@ -1,39 +1,28 @@ import React from 'react' import styled from 'styled-components' -import { useMyAccounts } from '@/accounts/hooks/useMyAccounts' import accountImg from '@/app/assets/images/OnBoarding/accountImage.png' -import { ButtonPrimary } from '@/common/components/buttons' import { ScrolledModalBody } from '@/common/components/Modal' import { HorizontalStaticStepper } from '@/common/components/Stepper/HorizontalStaticStepper' import { TextExtraHuge } from '@/common/components/typography' import { OnBoardingTextFooter } from '@/common/modals/OnBoardingModal' +import { ResetWalletButton } from './ResetWalletButton' + const steps = ['Connect Pioneer to the selected wallet', 'Create an account according to the displayed instructions'] -export const NoAccountStep = () => { - const { setWallet } = useMyAccounts() - - return ( - <> - - - - Create an account - - - - setWallet?.(undefined)}> - Return to wallet selection - - } - /> - - ) -} +export const NoAccountStep = () => ( + <> + + + + Create an account + + + + } /> + +) const AccountImage = styled.img` object-fit: contain; diff --git a/packages/ui/src/common/modals/OnBoardingModal/components/NoNodeConnection.tsx b/packages/ui/src/common/modals/OnBoardingModal/components/NoNodeConnection.tsx index 5b96c9bf1b..e75d4336f3 100644 --- a/packages/ui/src/common/modals/OnBoardingModal/components/NoNodeConnection.tsx +++ b/packages/ui/src/common/modals/OnBoardingModal/components/NoNodeConnection.tsx @@ -1,33 +1,23 @@ import { styled } from '@storybook/theming' import React from 'react' -import { useMyAccounts } from '@/accounts/hooks/useMyAccounts' -import { ButtonPrimary } from '@/common/components/buttons' import { ScrolledModalBody } from '@/common/components/Modal' import { TextHuge } from '@/common/components/typography' import { OnBoardingTextFooter } from '@/common/modals/OnBoardingModal' -export const NoNodeConnection = () => { - const { setWallet } = useMyAccounts() +import { ResetWalletButton } from './ResetWalletButton' + +export const NoNodeConnection = () => ( + <> + + + Please wait for node connection to continue the process + + + } /> + +) - return ( - <> - - - Please wait for node connection to continue the process - - - setWallet?.(undefined)}> - Return to wallet selection - - } - /> - - ) -} const Wrapper = styled.div` padding: 32px; min-height: 300px; diff --git a/packages/ui/src/common/modals/OnBoardingModal/components/ResetWalletButton.tsx b/packages/ui/src/common/modals/OnBoardingModal/components/ResetWalletButton.tsx new file mode 100644 index 0000000000..79e12cff9b --- /dev/null +++ b/packages/ui/src/common/modals/OnBoardingModal/components/ResetWalletButton.tsx @@ -0,0 +1,15 @@ +import React from 'react' + +import { useMyAccounts } from '@/accounts/hooks/useMyAccounts' +import { ButtonGhost } from '@/common/components/buttons' +import { Arrow } from '@/common/components/icons' + +export const ResetWalletButton = () => { + const { setWallet } = useMyAccounts() + return ( + setWallet?.(undefined)}> + + Change wallet + + ) +} diff --git a/packages/ui/src/common/modals/OnBoardingModal/components/SelectAccountStep.tsx b/packages/ui/src/common/modals/OnBoardingModal/components/SelectAccountStep.tsx index 7f9225e900..ae8c4020fa 100644 --- a/packages/ui/src/common/modals/OnBoardingModal/components/SelectAccountStep.tsx +++ b/packages/ui/src/common/modals/OnBoardingModal/components/SelectAccountStep.tsx @@ -14,6 +14,7 @@ import { TextExtraHuge, TextMedium } from '@/common/components/typography' import { Colors } from '@/common/constants' import { ConnectAccountItem } from './ConnectAccountItem' +import { ResetWalletButton } from './ResetWalletButton' interface Props { onAccountSelect?: (account: string) => void @@ -21,7 +22,7 @@ interface Props { export const SelectAccountStep = ({ onAccountSelect }: Props) => { const [selectedAccountAddress, setSelectedAccountAddress] = useState() - const { allAccounts, setWallet, wallet } = useMyAccounts() + const { allAccounts, wallet } = useMyAccounts() const balances = useMyBalances() const onConfirm = () => { @@ -58,9 +59,7 @@ export const SelectAccountStep = ({ onAccountSelect }: Props) => { - setWallet?.(undefined)}> - Return to wallet selection - + Connect Account diff --git a/packages/ui/src/common/providers/onboarding/provider.tsx b/packages/ui/src/common/providers/onboarding/provider.tsx index a627932dd7..c964c7e13b 100644 --- a/packages/ui/src/common/providers/onboarding/provider.tsx +++ b/packages/ui/src/common/providers/onboarding/provider.tsx @@ -26,7 +26,7 @@ const useOnBoarding = (): UseOnBoarding => { const { isLoading: isLoadingMembers, hasMembers } = useMyMemberships() const [membershipAccount, setMembershipAccount] = useLocalStorage('onboarding-membership-account') - if (totalBalance.gtn(0) && wallet) { + if (totalBalance.gtn(0) || hasMembers) { return { isLoading: false, status: 'finished' } } @@ -38,13 +38,9 @@ const useOnBoarding = (): UseOnBoarding => { return { isLoading: false, status: 'installPlugin' } } - if (!hasMembers && (!hasAccounts || !membershipAccount || !hasAccount(allAccounts, membershipAccount))) { + if (!hasAccounts || !membershipAccount || !hasAccount(allAccounts, membershipAccount)) { return { isLoading: false, status: 'addAccount', setMembershipAccount } } - if (!hasMembers && membershipAccount && hasAccount(allAccounts, membershipAccount)) { - return { isLoading: false, status: 'createMembership', membershipAccount, setMembershipAccount } - } - - return { isLoading: false, status: 'finished' } + return { isLoading: false, status: 'createMembership', membershipAccount, setMembershipAccount } } diff --git a/packages/ui/src/memberships/components/CurrentMember/CurrentMember.tsx b/packages/ui/src/memberships/components/CurrentMember/CurrentMember.tsx index 07b6deea12..9ace9e2e38 100644 --- a/packages/ui/src/memberships/components/CurrentMember/CurrentMember.tsx +++ b/packages/ui/src/memberships/components/CurrentMember/CurrentMember.tsx @@ -1,4 +1,4 @@ -import React, { useEffect } from 'react' +import React, { FC, useEffect } from 'react' import { useHistory } from 'react-router' import styled from 'styled-components' @@ -8,7 +8,6 @@ import { ArrowDownExpandedIcon, Icon, Loader } from '@/common/components/icons' import { BorderRad, Colors, Transitions } from '@/common/constants' import { useModal } from '@/common/hooks/useModal' import { useOnBoarding } from '@/common/hooks/useOnBoarding' -import { useResponsive } from '@/common/hooks/useResponsive' import { useRouteQuery } from '@/common/hooks/useRouteQuery' import { EMAIL_VERIFICATION_TOKEN_SEARCH_PARAM } from '@/memberships/constants' import { useNotificationSettings } from '@/memberships/hooks/useNotificationSettings' @@ -18,7 +17,6 @@ import { useMyMemberships } from '../../hooks/useMyMemberships' import { EmailConfirmationModalCall } from '../../modals/EmailConfirmationModal' import { EmailSubscriptionModalCall } from '../../modals/EmailSubscriptionModal' import { SwitchMemberModalCall } from '../../modals/SwitchMemberModal' -import { AddMembershipButton } from '../AddMembershipButton' export const CurrentMember = () => { const { allWallets, setWallet } = useMyAccounts() @@ -28,7 +26,6 @@ export const CurrentMember = () => { const { activeMemberSettings, activeMemberExistBackendData } = useNotificationSettings() const showSubscriptionModal = active && activeMemberExistBackendData?.memberExist === false && !activeMemberSettings?.hasBeenAskedForEmail - const { isMobileWallet } = useResponsive() useEffect(() => { if (!emailVerificationToken && !modal && showSubscriptionModal) { @@ -60,33 +57,27 @@ export const CurrentMember = () => { } }, [emailVerificationToken]) - const handleConnectWallet = () => { - if (isMobileWallet) { - const wallets = allWallets.filter((wallet) => wallet.installed) - if (wallets.length > 0) { - return setWallet?.(wallets.at(-1)) - } + const handleOnboarding = () => { + const wallets = allWallets.filter((wallet) => wallet.installed) + if (wallets.length === 1) { + setWallet?.(wallets.at(-1)) } showModal({ modal: 'OnBoardingModal' }) } - if (status === 'installPlugin') { + if (status !== 'finished') { return ( - + {isLoading && } - Connect Wallet + {status === 'installPlugin' ? 'Connect Wallet' : 'Join Now'} ) } if (!hasMembers) { - return ( - - Join Now - - ) + return Join Now } return ( @@ -100,20 +91,22 @@ export const CurrentMember = () => { )} - {!active && ( - - showModal({ modal: 'SwitchMember' })} - size="large" - > - Select membership - - - )} + {!active && Select membership} ) } +const SwitchMembershipButton: FC = ({ children }) => { + const { showModal } = useModal() + return ( + + showModal({ modal: 'SwitchMember' })} size="large"> + {children} + + + ) +} + const SwitchArrow = styled.span` width: 16px; height: 16px; diff --git a/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx b/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx index 060406efa2..bdfe2a19a2 100644 --- a/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx +++ b/packages/ui/src/memberships/modals/BuyMembershipModal/BuyMembershipFormModal.tsx @@ -248,14 +248,8 @@ export const BuyMembershipForm = ({ - - {type === 'onBoarding' && ( - - - Change account - - )} - + form.setValue('hasTerms', hasTerms, { shouldValidate: true })} > @@ -270,7 +264,7 @@ export const BuyMembershipForm = ({ . - + {type === 'general' && ( )} - { - const values = form.getValues() - uploadAvatarAndSubmit({ ...values, externalResources: { ...definedValues(values.externalResources) } }) - }} - disabled={isDisabled} - > - {isUploading ? : 'Create a Membership'} - - + + {type === 'onBoarding' && ( + + + Change account + + )} + { + const values = form.getValues() + uploadAvatarAndSubmit({ ...values, externalResources: { ...definedValues(values.externalResources) } }) + }} + disabled={isDisabled} + > + {isUploading ? : 'Create a Membership'} + + + ) } @@ -306,8 +308,16 @@ export const BuyMembershipFormModal = ({ onClose, onSubmit, membershipPrice }: B ) } -export const StyledFooter = styled(ModalFooter)` - & > label:first-child { - margin-right: auto; +const StyledCheckbox = styled(Checkbox)` + flex-shrink: 1; +` + +const FooterRow = styled.div` + display: flex; + max-width: 100%; + gap: 16px; + flex-grow: 1; + > *:nth-last-child(1) { + margin: 0 0 0 auto; } `