From f04978fc19acdf89bf84651465685063914e3fa7 Mon Sep 17 00:00:00 2001 From: Sophia Date: Fri, 26 May 2023 15:15:12 -0400 Subject: [PATCH] Onboarding: Accredited investor check (#1419) * Send document download to new tab * Add dialog to confirm accreditation * Add copy for entity accreditation * Improve wording btw entity and individual --- .../src/pages/Onboarding/Accreditation.tsx | 120 +++++++++++++++--- .../Onboarding/SignSubscriptionAgreement.tsx | 2 + 2 files changed, 105 insertions(+), 17 deletions(-) diff --git a/centrifuge-app/src/pages/Onboarding/Accreditation.tsx b/centrifuge-app/src/pages/Onboarding/Accreditation.tsx index e6ea27219b..cd4e785a07 100644 --- a/centrifuge-app/src/pages/Onboarding/Accreditation.tsx +++ b/centrifuge-app/src/pages/Onboarding/Accreditation.tsx @@ -1,6 +1,7 @@ -import { Button, Checkbox, Stack, Text } from '@centrifuge/fabric' +import { Button, Checkbox, Dialog, Shelf, Stack, Text } from '@centrifuge/fabric' import { useFormik } from 'formik' import * as React from 'react' +import { useTheme } from 'styled-components' import { boolean, object } from 'yup' import { ActionBar, Content, ContentHeader } from '../../components/Onboarding' import { useOnboarding } from '../../components/OnboardingProvider' @@ -11,10 +12,43 @@ const validationSchema = object({ isAccredited: boolean().oneOf([true], 'You must confirm that you are an accredited investor'), }) +export const ConfirmAccreditationDialog = ({ + open, + onClose, + confirm, + isEntity, +}: { + open: boolean + onClose: () => void + confirm: () => void + isEntity: boolean +}) => { + return ( + + + {isEntity ? ( + I confirm that the entity is an accredited investor + ) : ( + I confirm that I am an accredited investor + )} + + + + + + + ) +} + export const Accreditation = () => { + const [isDialogOpen, setIsDialogOpen] = React.useState(false) const { onboardingUser, previousStep, nextStep } = useOnboarding>() + const theme = useTheme() const isCompleted = !!onboardingUser.globalSteps.verifyAccreditation?.completed + const isEntity = onboardingUser.investorType === 'entity' const { mutate: verifyAccreditation, isLoading } = useVerifyAccreditation() @@ -30,32 +64,84 @@ export const Accreditation = () => { return ( <> + setIsDialogOpen(false)} + confirm={formik.handleSubmit} + isEntity={isEntity} + /> + Following is a partial list of the criteria for your entity to be an Accredited Investor. The full list + can be found{' '} + + here + + . + + ) : ( + 'Following is the criteria for being an accredited investor, as per the SEC publications:' + ) + } /> - - An annual income of $200,000 or greater ($300,000 in case of joint partners with a spouse) and proof of - maintaining the same yearly - - - Net worth greater than $1 million either as a sole owner or with a joint partner, excluding residence - - - In the case of a trust, a total of $5 million in assets is required - - - An organization with all shareholders being accredited investors - + {isEntity ? ( + <> + + Your entity owns in excess of $5 million in investments + + + Your entity is a corporation and has assets in excess of $5 million + + + All the owners of your entity are Accredited Investors + + + Your entity is a regulated financial entity such as a bank, insurance company or SEC-regulated + investment advisor or broker-dealer + + + ) : ( + <> + + An annual income of $200,000 or greater ($300,000 in case of joint partners with a spouse) and proof of + maintaining the same yearly + + + Net worth greater than $1 million either as a sole owner or with a joint partner, excluding residence + + + In the case of a trust, a total of $5 million in assets is required + + + An organization with all shareholders being accredited investors + + + )} I confirm that I am an accredited investor + isEntity ? ( + + I confirm that the entity is an accredited investor + + ) : ( + I confirm that I am an accredited investor + ) } disabled={isCompleted || isLoading} errorMessage={formik.errors.isAccredited} @@ -69,7 +155,7 @@ export const Accreditation = () => {