{"version":3,"sources":["state/features/table/actions.ts","common/style/components/buttons.tsx","state/features/transactions/actions.ts","state/features/users/types.tsx","common/style/components/image.tsx","common/style/components/Typography.tsx","common/style/queries/media-queries.js","state/features/payouts/actions.ts","state/features/users/api.js","state/features/auth/types.tsx","state/features/refund/actions.ts","state/features/payout/types.ts","common/style/components/modal.tsx","common/style/components/links.tsx","graphql/queries.ts","common/style/components/spinner.tsx","state/features/users/utils.js","state/features/payouts/types.ts","common/style/components/congratulations.svg","common/style/components/login.svg","state/features/users/actions.tsx","common/style/components/paymentcheck.svg","state/features/table/types.ts","state/features/payout/actions.ts","state/features/transactions/types.ts","common/style/queries/useDeviceType.ts","common/style/view-height.js","common/components/SEO/Metadata.tsx","common/components/Layout/index.tsx","common/hooks/useScollToTop.ts","state/features/session/actions.tsx","state/features/session/types.tsx","common/components/ProtectedRoutes/ProtectedRoutes.tsx","common/components/AuthenticationRoutes/AuthenticationRoutes.tsx","pages/Login/components/SkelLoginForm.tsx","pages/Login/SkelLogin.tsx","pages/Login/index.tsx","pages/Register/index.tsx","pages/Terms/index.tsx","pages/ForgotPassword/index.tsx","pages/Dashboard/index.tsx","pages/ResetPassword/index.tsx","pages/Payouts/index.tsx","routes.tsx","serviceWorker.js","state/features/users/reducers.tsx","state/features/auth/reducers.tsx","state/features/payout/reducers.ts","state/features/payouts/reducers.ts","state/features/session/reducers.tsx","state/features/refund/reducers.ts","state/features/table/reducers.ts","state/features/transactions/reducers.ts","state/features/users/sagas.tsx","state/localStorage.ts","state/features/auth/sagas.tsx","state/features/payout/sagas.ts","state/features/payouts/sagas.ts","state/features/refund/sagas.ts","state/features/table/sagas.ts","state/features/transactions/sagas.ts","state/features/index.tsx","state/middlewares/sagas.tsx","state/configureStore.tsx","state/index.tsx","i18n/config.ts","common/style/index.ts","aws-exports.js","index.tsx","state/features/refund/types.ts","common/style/components/Section.tsx","common/components/BaseSkeleton/BaseSkeleton.tsx","state/features/auth/actions.tsx"],"names":["loadTableRequest","stripeId","options","isEmailSearch","undefined","email","type","LOAD_DATA_REQUEST","payload","limit","offset","loadTableSuccess","data","hasMore","append","LOAD_DATA_SUCCESS","loadTableFailure","error","LOAD_DATA_FAILURE","setSearchEmail","value","SET_SEARCH_EMAIL","clearSearchEmail","CLEAR_SEARCH_EMAIL","baseButtonCss","css","BaseButton","styled","button","attrs","name","ButtonLink","primaryButtonCss","successButtonCss","errorButtonCss","cancelButtonCss","PrimaryButton","props","px","py","SuccessButton","ErrorButton","CancelButton","IconSucessButton","className","src","paymentcheck","target","rel","width","tablet","SubmittablePrimaryButton","isSubmitting","isSubmitted","label","disabled","body","success","createTransactionsRequest","LOAD_TRANSACTIONS_REQUEST","createTransactionsSuccess","total","moonaFunding","LOAD_TRANSACTIONS_SUCCESS","createTransactionsFailure","LOAD_TRANSACTIONS_FAILURE","CREATE_USER_REQUEST","CREATE_USER_SUCCESS","CREATE_USER_FAILURE","LOAD_USER","LOAD_USER_ACCOUNT_LINK","LOAD_USER_ACCOUNT_LINK_SUCCESS","CLEAR_USER","USER_ERROR","SET_PWD_SUCCESS","GET_MAIL","GET_MAIL_SUCCESS","SET_EMAIL_MOONAID_SECRET","FINALIZE_REGISTRATION","UPDATE_PWD","SET_FIRST_PWD","LOAD_KEYS","SET_KEYS","Image","alt","context","split","pop","shift","BaseImage","img","mr","baseTitleCss","H1","h1","H2","h2","H4","h3","h4","baseFooterTextCss","Body","p","BodyDiv","div","MdBody","content","map","token","i","key","MdH1","ul","li","extraSmall","mobile","ipad","mobileOnly","loadPayoutsHeaderRequest","LOAD_PAYOUTS_HEADER_REQUEST","loadPayoutsHeaderSuccess","nextPayout","lastPayout","LOAD_PAYOUTS_HEADER_SUCCESS","loadPayoutsHeaderFailure","LOAD_PAYOUTS_HEADER_FAILURE","loadPayoutsTableRequest","LOAD_PAYOUTS_TABLE_REQUEST","loadPayoutsTableSuccess","rows","LOAD_PAYOUTS_TABLE_SUCCESS","loadPayoutsTableFailure","LOAD_PAYOUTS_TABLE_FAILURE","changePayoutsTableFilter","filter","CHANGE_PAYOUTS_TABLE_FILTER","isRegisteredEmail","a","API","graphql","graphqlOperation","merchantsByEmail","toLowerCase","items","length","redirectToStripe","id","firstName","lastName","businessUrl","phone","businessDescription","companyType","urlStripeOnboarding","formattedPhone","replace","window","location","origin","href","LOGIN","LOGOUT","LOGGED_IN","LOGIN_FAIL","LOGGABLE","LOGGABLE_SUCESS","FORGOT_PASSWORD","FORGOT_PASSWORD_SUCCESS","FORGOT_PASSWORD_FAILURE","FORGOT_PASSWORD_ERROR","FORGOT_PASSWORD_RESET","FINALIZE_REGISTRATION_STATUS","createRefundRequest","transferId","transferMoonaId","transferShippingId","amount","payback","customer","currency","fromDashboard","CREATE_REFUND_REQUEST","createRefundSuccess","isFullRefund","CREATE_REFUND_SUCCESS","createRefundFailure","CREATE_REFUND_FAILURE","resetRefund","RESET_REFUND","CREATE_PAYOUT_REQUEST","CREATE_PAYOUT_SUCCESS","CREATE_PAYOUT_FAILURE","CREATE_PAYOUT_ERROR","LOAD_PAYOUT_REQUEST","LOAD_PAYOUT_SUCCESS","LOAD_PAYOUT_FAILURE","LOAD_PAYOUT_STATUS","SET_PAYOUT_STATUS","RESET_PAYOUT","StyledModal","Modal","ModalBackground","MoonaModalSection","Section","MoonaModalContentContainer","CenterContentContainer","MoonaModalBoxCTA","MoonaModalSubmittableButton","MoonaModalSucessBtn","MoonaModalErrorBtn","MoonaModalCancelBtn","MoonaModalInlineButton","InlineLink","MoonaModalTitle","MoonaModalBody","MoonaModalConfirmation","MoonaModalClose","MoonaModalBodyBox","MoonaModalFeedbackBodyBox","MoonaModalLabel","baseLinkCss","ExternalLink","InternalLink","Link","InternalBaseLink","NewTabLink","to","process","setUserFirstPassword","createMoonaMerchant","finaliseMerchantRegistration","getMerchantInformation","getMerchantBalance","payoutNow","getStripeDashboardLink","getTotalTransactions","getTransactionsList","refundTransactions","getPayouts","getPayoutsDetails","getNextPayout","getLastPayout","keysByMerchantId","rotation","keyframes","Spinner","MoonaException","code","message","moonaId","Error","check","resolvedPromise","operation","parsedData","JSON","parse","statusCode","module","exports","createUserRequest","firstname","lastname","country","password","annualTurnover","ecommerceSolution","createUserFailure","loadUser","status","clearUser","setUserMailAndId","userError","setFirstPwd","updatePwd","username","setPwdSuccess","fetchAccountLink","fetchAccountLinkSuccess","accountLink","finalizeRegistration","state","loadKeys","setKeys","keys","LOAD_DATA_ERROR","RESET_DATA","createPayoutSuccess","createPayoutFailure","loadPayoutRequest","loadPayoutSuccess","loadPayoutFailure","loadPayoutStatus","setPayoutStatus","payoutsEnabled","LOAD_TRANSACTIONS_ERROR","RESET_TRANSACTIONS","DeviceType","setViewHeight","document","documentElement","style","setProperty","innerHeight","Metadata","useTranslation","t","i18n","React","useEffect","i18next","changeLanguage","titleKey","endsWith","substring","lang","language","isIOS","property","getDeviceType","windowWidth","stripePromise","loadStripe","RunHook","useLocation","scrollTo","pathname","useScrollToTop","Layout","Component","component","rest","dispatch","useDispatch","stripeOptions","locale","deviceType","useState","innerWidth","setDeviceType","onResize","addEventListener","removeEventListener","useDeviceType","isMobile","render","matchProps","stripe","ProtectedRoutes","path","auth","useSelector","query","qh","search","logged","finalizeRegistrationStatus","loggedIn","exact","AuthenticationRoutes","LoginFormContainer","FormWrapper","LoginFormSection","SkelLoginForm","inputWidth","session","Left","BaseSkeleton","height","mt","LoginCenteredMain","CenteredMain","Center","LoginWrapper","SkelLogin","mb","LoginPageBase","lazy","LoginPage","fallback","RegisterPageBase","RegisterPage","TermsPageBase","TermsPage","ForgotPasswordPageBase","ForgotPasswordPage","DashboardPageBase","DashboardPage","ResetPasswordPageBase","ResetPasswordPage","PayoutsPageBase","PayoutsPage","Routes","Boolean","hostname","match","initialUserState","passwordUpdated","loading","userloaded","failure","initialAuthState","registered","loginfailure","forgotPasswordLoading","forgotPasswordSuccess","forgotPasswordFailure","AuthReducer","action","loggable","initialPayoutState","loadLoading","loadSuccess","loadFailure","payoutsEnabledLoading","previousAmount","initialPayoutsState","header","table","pageIndex","initialSessionState","showContactUs","initialRefundState","initialTableState","searchEmail","initialTransactionsState","watchFinalizeRegistration","createMerchantAction","watchCreateUserRequest","loadKeysAction","watchLoadKeysRequest","watchSetFirstPwdRequest","loadAccountLink","watchFetchAccountLinkRequest","watchUpdatePwdRequest","params","call","finaliseMerchantResult","merchantResult","put","setFinalizeRegistrationStatus","history","replaceState","title","merchant","website","console","log","takeLatest","Auth","clientMetadata","group","userSub","result","moonaMerchantData","newMerchant","msg","merchantId","publishableKeyLive","publishableKeyTest","secretKeyLive","secretKeyTest","newPassword","stripeUserId","linkData","url","usersSagas","fork","deleteState","localStorage","removeItem","err","authenticate","watchAuth","logout","watchLogout","watchLoggable","forgotPasswordGen","watchForgotPassword","login","merchantData","loginFail","takeEvery","loggableSuccess","createForgotPasswordSuccess","messages","limitExceededException","defaultException","createForgotPasswordFailure","authSagas","payout","watchPayout","loadPayout","watchLoadPayout","loadPayoutStatusAction","watchLoadPayoutStatus","payoutData","merchantInformationResult","merchantInformationData","payouts_enabled","payoutSagas","fetchPayoutsHeader","watchPayoutsHeader","fetchPayoutsTable","watchPayoutsTable","getNextPayoutResult","getLastPayoutResult","payouts","payoutsList","bank","created","arrivalDate","arrival_date","payoutsSagas","refund","watchRefund","refundResult","refundSagas","watchTable","tableResult","tableData","transactionsList","transactions","orderId","customerEmail","amountWithCentims","datePayment","moonaFundingWithCentims","reversed","isLastPartialRefund","amountReversed","isRefund","date","transaction","isNaN","tableSagas","watchTransactions","transactionsResult","transactionsData","rootSaga","rootReducer","combineReducers","users","all","transactionsSagas","sagaMiddleware","createSagaMiddleware","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","configureStore","persistedState","serializedState","getItem","item","Date","getTime","expiry","loadState","middlewares","applyMiddleware","store","createStore","run","subscribe","throttle","now","stringify","setItem","saveState","getState","URLSearchParams","get","use","LngDetector","initReactI18next","init","resources","en","fr","fallbackLng","lng","interpolation","escapeValue","GlobalStyle","createGlobalStyle","awsmobile","Amplify","configure","awsExports","ReactDOM","backgroundComponent","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","Container","ColumnContainer","DefaultContentContainer","section","WideSection","NameableDiv","NameableSpan","span","MarginContainer","mx","my","hflex","center","selfcenter","column","HeroSection","footer","congratulations","LoginSection","GreyHeroSection","Main","main","Kpi","Row","KpiRow","InputWrapper","SearchAndPaginateWrapper","SearchAndPaginateLayout","color","highlightColor","loginRequest","logoutRequest","createForgotPasswordError","resetForgotPassword","createForgotPasswordRequest"],"mappings":"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","file":"static/js/main.b8d560db.chunk.js","sourcesContent":["import {\n CLEAR_SEARCH_EMAIL,\n LOAD_DATA_ERROR,\n LOAD_DATA_FAILURE,\n LOAD_DATA_REQUEST,\n LOAD_DATA_SUCCESS,\n RESET_DATA,\n SET_SEARCH_EMAIL,\n TransactionRow\n} from './types'\n\nimport { AppActions } from '../types'\n\nexport const loadTableRequest = (\n stripeId: string,\n options?: Partial<{ offset: string; limit: number; email: string }>\n): AppActions => {\n const isEmailSearch = options?.email !== undefined && options.email !== ''\n return {\n type: LOAD_DATA_REQUEST,\n payload: {\n stripeId: stripeId,\n limit: !isEmailSearch ? options?.limit : undefined,\n offset: options?.offset,\n email: isEmailSearch ? options?.email : undefined\n }\n }\n}\nexport const loadTableSuccess = ({\n data,\n hasMore,\n append\n}: {\n data: TransactionRow[]\n hasMore: boolean\n append?: boolean\n}): AppActions => ({\n type: LOAD_DATA_SUCCESS,\n payload: {\n data,\n append,\n hasMore\n }\n})\nexport const loadTableFailure = ({ error }: { error: string }): AppActions => ({\n type: LOAD_DATA_FAILURE,\n payload: {\n error\n }\n})\n\nexport const loadTableError = ({ error }: { error: string }): AppActions => ({\n type: LOAD_DATA_ERROR,\n payload: {\n error\n }\n})\nexport const resetTable = (): AppActions => ({\n type: RESET_DATA\n})\n\nexport const setSearchEmail = (value: string): AppActions => ({\n type: SET_SEARCH_EMAIL,\n payload: {\n value\n }\n})\n\nexport const clearSearchEmail = (): AppActions => ({\n type: CLEAR_SEARCH_EMAIL\n})\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport { Spinner } from './spinner'\nimport { Image } from './image'\nimport paymentcheck from './paymentcheck.svg'\nimport { tablet } from '../queries/media-queries'\n\nexport interface NameProps {\n readonly name: string\n}\n\nconst baseButtonCss = css`\n background: none;\n border: 0;\n font-family: 'Circular Std';\n color: inherit;\n line-height: normal;\n overflow: visible;\n padding: 0px;\n -webkit-appearance: button;\n user-select: none;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n cursor: pointer;\n display: flex;\n justify-content: center;\n position: relative;\n\n &:focus {\n outline: none;\n }\n\n &:disabled {\n cursor: inherit;\n }\n &::-moz-focus-inner {\n border: 0;\n padding: 0;\n }\n`\n\nexport const BaseButton = styled.button.attrs(({ name }) => ({\n type: 'button',\n name: name\n}))`\n background: none;\n border: none;\n padding: 0;\n text-decoration: none;\n cursor: pointer;\n font-family: 'Aeonik';\n outline: none;\n`\n\nexport const ButtonLink = styled(BaseButton)`\n font-weight: 500;\n font-size: 1.2rem;\n line-height: 2.1rem;\n color: var(--color-purple-moona);\n`\n\nexport const primaryButtonCss = css`\n ${baseButtonCss}\n background: var(--color-purple-moona);\n white-space: nowrap;\n\n border-radius: 0.8rem;\n font-family: Aeonik;\n\n font-weight: bold;\n font-size: 1.6rem;\n line-height: 2.4rem;\n\n display: flex;\n align-items: center;\n text-align: center;\n\n color: #ffffff;\n\n align-self: center;\n margin: 10px 0px;\n\n &:hover {\n background: var(--color-purple-dark);\n }\n\n &:focus:before {\n content: '';\n\n position: absolute;\n display: block;\n z-index: -1;\n top: -3px;\n left: -3px;\n right: -3px;\n bottom: -3px;\n\n border-radius: 8px;\n\n color: #ffffff;\n background: var(--color-purple-moona);\n border: 4px solid var(--color-purple-light);\n }\n\n &:active:before {\n content: '';\n\n position: absolute;\n display: block;\n z-index: -1;\n top: -3px;\n left: -3px;\n right: -3px;\n bottom: -3px;\n\n border-radius: 8px;\n\n color: #ffffff;\n background: var(--color-purple-dark);\n border: 4px solid var(--color-purple-light);\n }\n\n &:disabled {\n background: rgba(149, 64, 255, 0.5);\n cursor: not-allowed;\n }\n`\n\nexport const successButtonCss = css`\n ${primaryButtonCss}\n\n background-color: var(--color-success);\n width: 100%;\n padding: 1.3rem 0;\n\n &:hover {\n background: var(--color-success-hover);\n }\n\n &:focus {\n background: var(--color-success);\n }\n\n &:focus:before {\n background: transparent;\n border: 2px solid var(--color-success-border);\n z-index: 1;\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n }\n\n &:active {\n background: var(--color-success-hover);\n }\n &:active:before {\n content: '';\n background-color: transparent;\n border: 2px solid var(--color-success-border);\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 1;\n }\n\n &:disabled {\n background: var(--color-success-disable);\n }\n`\n\nexport const errorButtonCss = css`\n ${primaryButtonCss}\n\n background-color: var(--color-danger);\n width: 100%;\n padding: 1.3rem 0;\n\n &:hover {\n background: var(--color-danger-hover);\n }\n\n &:focus {\n background: var(--color-danger);\n }\n\n &:focus:before {\n background: transparent;\n border: 2px solid var(--color-danger-border);\n z-index: 1;\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n }\n\n &:active {\n background: var(--color-danger-hover);\n }\n &:active:before {\n content: '';\n background-color: transparent;\n border: 2px solid var(--color-danger-border);\n top: -1px;\n left: -1px;\n right: -1px;\n bottom: -1px;\n z-index: 1;\n }\n\n &:disabled {\n background: var(--color-danger-disable);\n }\n`\nexport const cancelButtonCss = css`\n ${primaryButtonCss}\n\n color: var(--color-black-moona);\n\n background-color: var(--color-grey-dark);\n width: 100%;\n padding: 1.3rem 0;\n\n &:hover {\n background: var(--color-grey-link);\n }\n\n &:focus {\n background: var(--color-grey-dark);\n }\n\n &:focus:before {\n background: transparent;\n border: 2px solid var(--color-grey-link);\n }\n\n &:active {\n background: var(--color-grey-link);\n }\n &:active:before {\n border: 2px solid var(--color-grey-link);\n }\n\n &:disabled {\n background: var(--color-success-disable);\n }\n`\ninterface PrimaryButtonProps extends NameProps {\n px?: string\n py?: string\n success?: string\n type?: 'button' | 'submit' | 'reset' | undefined\n}\nexport const PrimaryButton = styled.button.attrs(\n ({ name, type }) => ({\n type: type || 'button',\n name: name\n })\n)`\n ${primaryButtonCss}\n padding: ${props =>\n props.px\n ? props.py\n ? `${props.py}rem ${props.px}rem`\n : `1.2rem ${props.px}rem`\n : '1.2rem 8rem'};\n`\n\nexport const SuccessButton = styled.button`\n ${successButtonCss}\n display: flex;\n`\nexport const ErrorButton = styled.button`\n ${errorButtonCss}\n display: flex;\n`\nexport const CancelButton = styled.button<{\n onClick?: (e: MouseEvent) => void\n}>`\n ${cancelButtonCss}\n display: flex;\n`\nexport const IconSucessButton = styled(({ className, ...props }) => (\n \n \n \n)).attrs({\n target: '_blank',\n rel: 'noopener noreferrer'\n})`\n width: ${props => (props.width ? props.width : '16rem')};\n height: 4.8rem;\n @media ${tablet} {\n width: 100%;\n }\n`\n\ninterface SubmittablePrimaryButtonProps {\n className?: string\n isSubmitting: boolean\n isSubmitted: boolean\n label: string\n name: string\n type?: 'button' | 'submit' | 'reset' | undefined\n disabled?: boolean\n width?: string\n}\nconst BaseSubmittablePrimaryButton: React.FC = ({\n className,\n isSubmitting,\n isSubmitted,\n label,\n type = 'button',\n disabled = false,\n width,\n ...props\n}) => {\n const body = isSubmitting ? : label\n if (isSubmitted) {\n return \n }\n return (\n \n {body}\n \n )\n}\n\nexport const SubmittablePrimaryButton = styled(\n BaseSubmittablePrimaryButton\n).attrs(({ type, disabled }) => ({\n target: '_blank',\n rel: 'noopener noreferrer',\n type: type || 'button',\n disabled: disabled || false\n}))`\n display: inline-block;\n position: relative;\n display: flex;\n width: 100%;\n height: 4.8rem;\n`\n","import {\n LOAD_TRANSACTIONS_REQUEST,\n LOAD_TRANSACTIONS_ERROR,\n LOAD_TRANSACTIONS_SUCCESS,\n LOAD_TRANSACTIONS_FAILURE,\n RESET_TRANSACTIONS\n} from './types'\n\nimport { AppActions } from '../types'\n\nexport const createTransactionsRequest = (stripeId: string): AppActions => ({\n type: LOAD_TRANSACTIONS_REQUEST,\n payload: { stripeId: stripeId }\n})\nexport const createTransactionsSuccess = ({\n total,\n moonaFunding\n}: {\n total: number\n moonaFunding: number\n}): AppActions => ({\n type: LOAD_TRANSACTIONS_SUCCESS,\n payload: {\n total,\n moonaFunding\n }\n})\nexport const createTransactionsFailure = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: LOAD_TRANSACTIONS_FAILURE,\n payload: {\n error\n }\n})\n\nexport const createTransactionsError = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: LOAD_TRANSACTIONS_ERROR,\n payload: {\n error\n }\n})\nexport const resetTransactions = (): AppActions => ({\n type: RESET_TRANSACTIONS\n})\n","export const CREATE_USER_REQUEST = 'CREATE_USER_REQUEST'\nexport const CREATE_USER_SUCCESS = 'CREATE_USER_SUCCESS'\nexport const CREATE_USER_FAILURE = 'CREATE_USER_FAILURE'\nexport const LOAD_USER = 'LOAD_USER'\nexport const LOAD_USER_ACCOUNT_LINK = 'LOAD_USER_ACCOUNT_LINK'\nexport const LOAD_USER_ACCOUNT_LINK_SUCCESS = 'LOAD_USER_ACCOUNT_LINK_SUCCESS'\nexport const CLEAR_USER = 'CLEAR_USER'\n\nexport const USER_ERROR = 'USER_ERROR'\nexport const SET_PWD = 'SET_PWD'\nexport const SET_PWD_SUCCESS = 'SET_PWD_SUCCESS'\nexport const GET_MAIL = 'GET_MAIL'\nexport const GET_MAIL_SUCCESS = 'GET_MAIL_SUCCESS'\nexport const CREATE_MOONA_USER = 'CREATE_MOONA_USER'\nexport const SET_EMAIL_MOONAID_SECRET = 'SET_EMAIL_MOONAID_SECRET'\nexport const FINALIZE_REGISTRATION = 'FINALIZE_REGISTRATION'\nexport const UPDATE_PWD = 'UPDATE_PWD'\nexport const SET_FIRST_PWD = 'SET_FIRST_PWD'\nexport const LOAD_KEYS = 'LOAD_KEYS'\nexport const SET_KEYS = 'SET_KEYS'\n\nexport type KEYS = {\n publishableKeyLive: string\n publishableKeyTest: string\n secretKeyLive: string\n secretKeyTest: string\n}\nexport interface User {\n id: string\n email: string\n phone?: string\n firstName: string\n lastName?: string\n password?: string\n stripeId?: string\n businessUrl: string\n businessDescription?: string\n companyType?: string\n status?: string\n annualTurnover?: string\n ecommerceSolution?: string\n accountLink?: string\n keys?: KEYS\n}\n\nexport interface CreateUserRequestAction {\n type: typeof CREATE_USER_REQUEST\n payload: {\n businessUrl: string\n email: string\n firstname: string\n lastname: string\n country: string\n phone: string\n password: string\n businessDescription: string\n companyType: string\n annualTurnover: string\n ecommerceSolution: string\n }\n}\n\nexport interface CreateUserSuccess {\n type: typeof CREATE_USER_SUCCESS\n}\nexport interface CreateUserFailure {\n type: typeof CREATE_USER_FAILURE\n payload: {\n error: string\n }\n}\nexport interface LoadUser {\n type: typeof LOAD_USER\n payload: User\n}\nexport interface ClearUser {\n type: typeof CLEAR_USER\n}\n\nexport interface CreateMoonaUserRequestAction {\n type: typeof CREATE_MOONA_USER\n}\n\nexport interface SetPwdAction {\n type: typeof SET_PWD\n payload: {\n email: string\n password: string\n }\n}\nexport interface SetPwdSuccessAction {\n type: typeof SET_PWD_SUCCESS\n payload: {\n password: string\n }\n}\n\nexport interface GetMailAction {\n type: typeof GET_MAIL\n payload: {\n id: string\n }\n}\nexport interface GetMailSuccessAction {\n type: typeof GET_MAIL_SUCCESS\n payload: {\n email: string\n }\n}\n\nexport interface UserErrorAction {\n type: typeof USER_ERROR\n payload: {\n error: string\n }\n}\n\nexport interface SetUserMailAndId {\n type: typeof SET_EMAIL_MOONAID_SECRET\n payload: {\n email: string\n moonaId: string\n }\n}\nexport interface FinalizeRegistration {\n type: typeof FINALIZE_REGISTRATION\n payload: {\n code: string\n state: string\n }\n}\n\nexport interface SetFirstPwdAction {\n type: typeof SET_FIRST_PWD\n payload: {\n email: string\n password: string\n }\n}\nexport interface UpdatePwdAction {\n type: typeof UPDATE_PWD\n payload: {\n username: string\n code: string\n password: string\n }\n}\n\nexport interface LoadUserLinkAction {\n type: typeof LOAD_USER_ACCOUNT_LINK\n payload: {\n stripeId: string\n }\n}\nexport interface LoadUserLinkSuccess {\n type: typeof LOAD_USER_ACCOUNT_LINK_SUCCESS\n payload: {\n accountLink: string\n }\n}\n\nexport interface LoadKeys {\n type: typeof LOAD_KEYS\n payload: {\n id: string\n }\n}\n\nexport interface SetKeys {\n type: typeof SET_KEYS\n payload: {\n keys: KEYS\n }\n}\n\nexport type UsersActionTypes =\n | SetFirstPwdAction\n | UpdatePwdAction\n | SetPwdSuccessAction\n | GetMailAction\n | GetMailSuccessAction\n | UserErrorAction\n | CreateUserRequestAction\n | CreateUserSuccess\n | CreateUserFailure\n | CreateMoonaUserRequestAction\n | LoadUser\n | ClearUser\n | SetUserMailAndId\n | FinalizeRegistration\n | LoadUserLinkAction\n | LoadUserLinkSuccess\n | LoadKeys\n | SetKeys\n\nexport interface UsersState extends User {\n loading: boolean\n passwordUpdated: boolean\n userloaded: boolean\n error: string\n success: boolean\n failure: boolean\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { NameProps } from './buttons'\n\nexport const Image: React.FC<{\n className?: string\n src: string\n alt?: string\n onClick?: () => void\n onMouseEnter?: () => void\n onMouseLeave?: () => void\n mr?: string\n context?: string\n}> = ({ className, src, alt, context, ...props }) => {\n let name = src.split('/').pop()?.split('.').shift() || 'image'\n name = context ? `${name}-${context}` : `${name}`\n\n return (\n \n )\n}\n\ninterface BaseImageProps extends NameProps {\n mr?: string\n}\nconst BaseImage = styled.img.attrs(props => ({\n name: props.name\n}))`\n margin-right: ${props => (props.mr ? props.mr : 0)};\n`\n","import React from 'react'\nimport styled, { css } from 'styled-components'\nimport { tablet } from '../queries/media-queries'\n\nexport const baseTitleCss = css`\n display: flex;\n align-items: center;\n color: var(--color-blackmain-moona-02);\n`\n\nexport const H1 = styled.h1`\n ${baseTitleCss}\n font-weight: 500;\n font-size: 2.8rem;\n line-height: 4.2rem;\n color: var(--color-black-moona-02);\n`\n\nexport const H2 = styled.h2`\n ${baseTitleCss}\n font-weight: 500;\n font-size: 2rem;\n line-height: 2.4rem;\n color: var(--color-black-moona-02);\n`\nexport const H3 = styled.h3`\n font-weight: 500;\n font-size: 1.6rem;\n line-height: 2.4rem;\n ${baseTitleCss}\n`\nexport const H4 = styled.h4`\n font-weight: 500;\n font-size: 1.4rem;\n line-height: 2.1rem;\n ${baseTitleCss}\n`\n\nexport const baseFooterTextCss = css`\n font-size: 1.2rem;\n line-height: 2.1rem;\n color: var(--color-grey-main);\n`\n\nexport const Body = styled.p`\n color: var(--color-black-moona);\n font-size: 1.2rem;\n line-height: 2.4rem;\n @media ${tablet} {\n font-size: 1.6rem;\n }\n`\nexport const BodyDiv = styled.div`\n color: var(--color-black-moona);\n font-size: 1.2rem;\n line-height: 2.4rem;\n @media ${tablet} {\n font-size: 1.6rem;\n }\n`\n\ninterface TitleProps {\n title: string\n className?: string\n}\n\nexport const Title: React.FC = ({ title, className }) => {\n return (\n

\n {title.split(' ').map((token, i) => (\n {token}\n ))}\n

\n )\n}\n\ninterface MdProps {\n content: string\n className?: string\n}\n\nexport const MdBody: React.FC = ({ content, className }) => {\n return (\n \n {content.split(' ').map((token, i) => (\n {token}\n ))}\n \n )\n}\n\nexport const MdH1: React.FC = ({ content, className }) => {\n return (\n

\n {content.split(' ').map((token, i) => (\n {token}\n ))}\n

\n )\n}\nexport const MdH3: React.FC = ({ content, className }) => {\n return (\n

\n {content.split(' ').map((token, i) => (\n {token}\n ))}\n

\n )\n}\nexport const MdTitle2: React.FC = ({ content, className }) => {\n return (\n

\n {content.split(' ').map((token, i) => (\n {token}\n ))}\n

\n )\n}\n\nexport const List = styled.ul`\n list-style: none;\n padding: 0;\n margin: 0;\n`\nexport const ListItem = styled.li``\n","export const extraSmall = 'screen and (max-width: 320px)'\nexport const mobile = 'screen and (min-width: 350px)'\nexport const ipad = 'screen and (min-width: 760px)'\nexport const tablet = 'screen and (min-width: 1368px)'\nexport const mobileOnly = 'screen and (max-width: 1368px)'\n","import { AppActions } from '../types'\nimport {\n CHANGE_PAYOUTS_TABLE_FILTER,\n ChangePayoutsTableFilter,\n LOAD_PAYOUTS_HEADER_FAILURE,\n LOAD_PAYOUTS_HEADER_REQUEST,\n LOAD_PAYOUTS_HEADER_SUCCESS,\n LOAD_PAYOUTS_TABLE_FAILURE,\n LOAD_PAYOUTS_TABLE_REQUEST,\n LOAD_PAYOUTS_TABLE_SUCCESS,\n LoadPayoutsHeaderFailure,\n LoadPayoutsHeaderRequest,\n LoadPayoutsHeaderSuccess,\n LoadPayoutsTableFailure,\n LoadPayoutsTableRequest,\n LoadPayoutsTableSuccess\n} from './types'\n\nexport const loadPayoutsHeaderRequest = (\n payload: LoadPayoutsHeaderRequest['payload']\n): AppActions => ({\n type: LOAD_PAYOUTS_HEADER_REQUEST,\n payload: {\n stripeId: payload.stripeId\n }\n})\n\nexport const loadPayoutsHeaderSuccess = ({\n nextPayout,\n lastPayout\n}: LoadPayoutsHeaderSuccess['payload']): AppActions => ({\n type: LOAD_PAYOUTS_HEADER_SUCCESS,\n payload: {\n lastPayout,\n nextPayout\n }\n})\n\nexport const loadPayoutsHeaderFailure = (\n payload: LoadPayoutsHeaderFailure['payload']\n): AppActions => ({\n type: LOAD_PAYOUTS_HEADER_FAILURE,\n payload: {\n error: payload.error\n }\n})\n\nexport const loadPayoutsTableRequest = ({\n stripeId,\n offset,\n limit\n}: LoadPayoutsTableRequest['payload']): AppActions => ({\n type: LOAD_PAYOUTS_TABLE_REQUEST,\n payload: {\n stripeId,\n limit,\n offset\n }\n})\n\nexport const loadPayoutsTableSuccess = ({\n append,\n hasMore,\n rows\n}: LoadPayoutsTableSuccess['payload']): AppActions => ({\n type: LOAD_PAYOUTS_TABLE_SUCCESS,\n payload: {\n append,\n hasMore,\n rows\n }\n})\n\nexport const loadPayoutsTableFailure = (\n payload: LoadPayoutsTableFailure['payload']\n): AppActions => ({\n type: LOAD_PAYOUTS_TABLE_FAILURE,\n payload: {\n error: payload.error\n }\n})\n\nexport const changePayoutsTableFilter = ({\n filter\n}: ChangePayoutsTableFilter['payload']): AppActions => ({\n type: CHANGE_PAYOUTS_TABLE_FILTER,\n payload: {\n filter\n }\n})\n","import { API, graphqlOperation } from 'aws-amplify'\n\nimport { merchantsByEmail } from '../../../graphql/queries'\n\nconst STRIPE_ONBOARDING_URL =\n 'https://connect.stripe.com/express/oauth/authorize'\n\nconst CLIENT_ID = process.env.REACT_APP_CLIENT_ID || ''\nconst REDIRECT_URI = '/dashboard'\n\nexport const isRegisteredEmail = async email => {\n const data = await API.graphql(\n graphqlOperation(merchantsByEmail, { email: email.toLowerCase() })\n )\n\n return (\n data.data.merchantsByEmail.items &&\n data.data.merchantsByEmail.items.length > 0\n )\n}\n\nexport const redirectToStripe = ({\n id,\n email,\n firstName,\n lastName,\n businessUrl,\n phone,\n businessDescription,\n companyType\n}) => {\n let urlStripeOnboarding = STRIPE_ONBOARDING_URL\n\n const formattedPhone = phone.replace('+44', '')\n\n urlStripeOnboarding += '?client_id=' + CLIENT_ID\n urlStripeOnboarding +=\n '&redirect_uri=' + window.location.origin + REDIRECT_URI\n urlStripeOnboarding += '&state=' + id\n // urlStripeOnboarding += '&stripe_user[name]=' + 'coucou'\n urlStripeOnboarding += '&stripe_user[email]=' + email\n urlStripeOnboarding += '&stripe_user[first_name]=' + firstName\n urlStripeOnboarding += '&stripe_user[last_name]=' + lastName\n urlStripeOnboarding += '&stripe_user[url]=' + businessUrl // http(s) mandatory\n urlStripeOnboarding +=\n '&suggested_capabilities[]=card_payments&suggested_capabilities[]=transfers'\n\n urlStripeOnboarding += '&stripe_user[country]=gb' // + country // optional\n urlStripeOnboarding += '&stripe_user[phone_number]=' + formattedPhone // check format because must be 10 digits only\n urlStripeOnboarding += '&stripe_user[business_name]=' + businessDescription\n\n urlStripeOnboarding += '&stripe_user[business_type]=' + companyType // only support `individual` / `company`\n\n window.location.href = urlStripeOnboarding\n}\n","export const LOGIN = 'LOGIN'\nexport const LOGOUT = 'LOGOUT'\nexport const LOGGED_IN = 'LOGGED_IN'\nexport const LOGIN_FAIL = 'LOGIN_FAIL'\nexport const LOGGABLE = 'LOGGABLE'\nexport const LOGGABLE_SUCESS = 'LOGGABLE_SUCCESS'\nexport const FORGOT_PASSWORD = 'FORGOT_PASSWORD'\nexport const FORGOT_PASSWORD_SUCCESS = 'FORGOT_PASSWORD_SUCCESS'\nexport const FORGOT_PASSWORD_FAILURE = 'FORGOT_PASSWORD_FAILURE'\nexport const FORGOT_PASSWORD_ERROR = 'FORGOT_PASSWORD_ERROR'\nexport const FORGOT_PASSWORD_RESET = 'FORGOT_PASSWORD_RESET'\nexport const FINALIZE_REGISTRATION_STATUS = 'FINALIZE_REGISTRATION_STATUS'\n\nexport type BackMessages = {\n limitExceededException: string\n defaultException: string\n}\nexport interface Credentials {\n login: string\n password: string\n}\n\nexport interface LogginAction {\n type: typeof LOGIN\n payload: Credentials\n}\n\nexport interface Logout {\n type: typeof LOGOUT\n}\n\nexport interface LoggedInAction {\n type: typeof LOGGED_IN\n}\n\nexport interface LoginFailAction {\n type: typeof LOGIN_FAIL\n}\n\nexport interface LoggableAction {\n type: typeof LOGGABLE\n payload: {\n userId: string\n }\n}\n\nexport interface LoggableSucessAction {\n type: typeof LOGGABLE_SUCESS\n payload: {\n loggable: boolean\n }\n}\n\nexport interface ForgotPasswordAction {\n type: typeof FORGOT_PASSWORD\n payload: {\n login: string\n messages: BackMessages\n }\n}\n\nexport interface ForgotPasswordSuccess {\n type: typeof FORGOT_PASSWORD_SUCCESS\n}\n\nexport interface ForgotPasswordFailure {\n type: typeof FORGOT_PASSWORD_FAILURE\n payload: {\n error: string\n }\n}\n\nexport interface ForgotPasswordError {\n type: typeof FORGOT_PASSWORD_ERROR\n payload: {\n error: string\n }\n}\nexport interface ForgotPasswordReset {\n type: typeof FORGOT_PASSWORD_RESET\n}\n\nexport interface SetFinalizeRegistrationStatus {\n type: typeof FINALIZE_REGISTRATION_STATUS\n payload: {\n finalizeRegistrationStatus: string\n }\n}\n\nexport type AuthActionTypes =\n | LogginAction\n | LoggedInAction\n | LoginFailAction\n | LoggableAction\n | LoggableSucessAction\n | Logout\n | ForgotPasswordAction\n | ForgotPasswordSuccess\n | ForgotPasswordFailure\n | ForgotPasswordError\n | ForgotPasswordReset\n | SetFinalizeRegistrationStatus\nexport interface AuthState {\n loading: boolean\n logged: boolean\n loginfailure: boolean\n registered: boolean\n error: string\n forgotPasswordLoading: boolean\n forgotPasswordSuccess: boolean\n forgotPasswordFailure: boolean\n finalizeRegistrationStatus: string\n}\n","import {\n CREATE_REFUND_REQUEST,\n CREATE_REFUND_SUCCESS,\n CREATE_REFUND_FAILURE,\n RESET_REFUND\n} from './types'\n\nimport { AppActions } from '../types'\n\nexport const createRefundRequest = ({\n stripeId,\n transferId,\n transferMoonaId,\n transferShippingId,\n amount,\n payback,\n customer,\n currency,\n fromDashboard\n}: {\n stripeId: string\n transferId: string\n transferMoonaId: string\n transferShippingId: string\n amount: number\n payback: number\n customer: string\n currency: string\n fromDashboard: boolean\n}): AppActions => ({\n type: CREATE_REFUND_REQUEST,\n payload: {\n stripeId,\n transferId,\n transferMoonaId,\n transferShippingId,\n amount,\n payback,\n customer,\n currency,\n fromDashboard\n }\n})\nexport const createRefundSuccess = ({\n amount,\n payback,\n isFullRefund,\n currency\n}: {\n amount: number\n payback: number\n isFullRefund: boolean\n currency: string\n}): AppActions => ({\n type: CREATE_REFUND_SUCCESS,\n payload: {\n amount,\n payback,\n isFullRefund,\n currency\n }\n})\nexport const createRefundFailure = ({\n error,\n amount,\n payback,\n currency\n}: {\n error: string\n amount: number\n payback: number\n currency: string\n}): AppActions => ({\n type: CREATE_REFUND_FAILURE,\n payload: {\n error,\n amount,\n payback,\n currency\n }\n})\n\nexport const resetRefund = (): AppActions => ({\n type: RESET_REFUND\n})\n","export const CREATE_PAYOUT_REQUEST = 'CREATE_PAYOUT_REQUEST'\nexport const CREATE_PAYOUT_SUCCESS = 'CREATE_PAYOUT_SUCCESS'\nexport const CREATE_PAYOUT_FAILURE = 'CREATE_PAYOUT_FAILURE'\nexport const CREATE_PAYOUT_ERROR = 'CREATE_PAYOUT_ERROR'\nexport const LOAD_PAYOUT_REQUEST = 'LOAD_PAYOUT_REQUEST'\nexport const LOAD_PAYOUT_SUCCESS = 'LOAD_PAYOUT_SUCCESS'\nexport const LOAD_PAYOUT_FAILURE = 'LOAD_PAYOUT_FAILURE'\nexport const LOAD_PAYOUT_STATUS = 'LOAD_PAYOUT_STATUS'\nexport const SET_PAYOUT_STATUS = 'SET_PAYOUT_STATUS'\n\nexport const RESET_PAYOUT = 'RESET_PAYOUT'\n\nexport interface CreatePayoutRequest {\n type: typeof CREATE_PAYOUT_REQUEST\n payload: { stripeId: string }\n}\nexport interface CreatePayoutSuccess {\n type: typeof CREATE_PAYOUT_SUCCESS\n}\nexport interface CreatePayoutFailure {\n type: typeof CREATE_PAYOUT_FAILURE\n payload: {\n error: string\n }\n}\nexport interface LoadPayoutRequest {\n type: typeof LOAD_PAYOUT_REQUEST\n payload: { stripeId: string }\n}\nexport interface LoadPayoutSuccess {\n type: typeof LOAD_PAYOUT_SUCCESS\n payload: { amount: number }\n}\nexport interface LoadPayoutFailure {\n type: typeof LOAD_PAYOUT_FAILURE\n payload: {\n error: string\n }\n}\n\nexport interface CreatePayoutError {\n type: typeof CREATE_PAYOUT_ERROR\n payload: {\n error: string\n }\n}\nexport interface ResetPayout {\n type: typeof RESET_PAYOUT\n}\nexport interface LoadPayoutStatus {\n type: typeof LOAD_PAYOUT_STATUS\n\n payload: { stripeId: string }\n}\nexport interface SetPayoutStatus {\n type: typeof SET_PAYOUT_STATUS\n payload: {\n payoutsEnabled: boolean\n }\n}\n\nexport interface PayoutState {\n loading: boolean\n success: boolean\n failure: boolean\n loadLoading: boolean\n loadSuccess: boolean\n loadFailure: boolean\n error: string\n amount: number\n previousAmount: number\n payoutsEnabled: boolean\n payoutsEnabledLoading: boolean\n}\n\nexport type PayoutActionTypes =\n | CreatePayoutRequest\n | CreatePayoutError\n | CreatePayoutSuccess\n | LoadPayoutRequest\n | LoadPayoutFailure\n | LoadPayoutSuccess\n | CreatePayoutFailure\n | ResetPayout\n | LoadPayoutStatus\n | SetPayoutStatus\n","import Modal from 'styled-react-modal'\nimport styled from 'styled-components'\nimport {\n Section,\n CenterContentContainer\n} from 'common/style/components/Section'\n\nimport { Image } from 'common/style/components/image'\nimport { BodyDiv, MdH1 } from 'common/style/components/Typography'\nimport {\n PrimaryButton,\n CancelButton,\n SuccessButton,\n ErrorButton,\n ButtonLink,\n SubmittablePrimaryButton\n} from 'common/style/components/buttons'\n\nimport { tablet } from 'common/style/queries/media-queries'\n\nimport { InlineLink } from 'common/style/components/links'\n\nexport const StyledModal = Modal.styled`\n width: 34.7rem;\n height: 36.8rem;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: #fff;\n position:relative;\n border: 1px solid #E8E9ED;\n box-shadow: 0px 20px 58px rgba(0, 0, 0, 0.1);\n border-radius: 16px;\n @media ${tablet} {\n width: 68rem;\n height: 47rem;\n }\n`\n\nexport const ModalBackground = styled.div`\n display: flex;\n position: fixed;\n align-items: center;\n justify-content: center;\n top: 0;\n left: 0;\n width: 100vw;\n height: 100vh;\n z-index: 30;\n background: rgba(41, 43, 54, 0.8);\n`\nexport const MoonaModalSection = styled(Section)`\n padding: 4.4rem 1.9rem;\n @media ${tablet} {\n padding: 6.8rem 6rem;\n }\n`\nexport const MoonaModalContentContainer = styled(CenterContentContainer)``\n\nexport const MoonaModalBoxCTA = styled.div`\n margin-top: 2rem;\n display: flex;\n flex-direction: column;\n @media ${tablet} {\n flex-direction: row;\n }\n`\n\nexport const MoonaModalSubmittableButton = styled(SubmittablePrimaryButton)<{\n onClick?: (e: MouseEvent) => void\n}>`\n order: 0;\n width: 16rem;\n @media ${tablet} {\n order: 1;\n }\n`\n\nexport const MoonaModalPrimaryBtn = styled(PrimaryButton)`\n order: 0;\n @media ${tablet} {\n order: 1;\n width: 16rem;\n }\n`\nexport const MoonaModalSucessBtn = styled(SuccessButton)`\n order: 0;\n width: 13rem;\n @media ${tablet} {\n order: 1;\n width: 16rem;\n }\n`\nexport const MoonaModalErrorBtn = styled(ErrorButton)`\n order: 0;\n width: 13rem;\n @media ${tablet} {\n order: 1;\n width: 16rem;\n }\n`\n\nexport const MoonaModalCancelBtn = styled(CancelButton)<{\n event?: React.MouseEvent\n}>`\n @media ${tablet} {\n order: 0;\n margin-right: 1.6rem;\n width: 16rem;\n }\n`\nexport const MoonaModalInlineLink = styled(InlineLink)`\n width: 100%;\n order: 1;\n font-weight: 500;\n font-size: 1.4rem;\n line-height: 2.4rem;\n color: var(--color-black-moona);\n margin-left: 0;\n`\nexport const MoonaModalInlineButton = styled(ButtonLink)<{\n event?: React.MouseEvent\n}>`\n width: 100%;\n order: 1;\n font-weight: 500;\n font-size: 1.4rem;\n line-height: 2.4rem;\n color: var(--color-black-moona);\n margin-left: 0;\n margin-top: 1.1rem;\n`\nexport const MoonaModalTitle = styled(MdH1)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n`\nexport const MoonaModalBody = styled(BodyDiv)`\n display: flex;\n\n flex-direction: row;\n justify-content: center;\n\n align-items: flex-start;\n & > div > span.black {\n color: var(--color-black-moona-02);\n margin-right: 0.5rem;\n }\n\n @media ${tablet} {\n & > div > span.black {\n color: var(--color-black-moona-02);\n margin-right: 0.5rem;\n }\n align-items: center;\n }\n`\nexport const MoonaModalBodyDesktop = styled(MoonaModalBody)`\n display: none;\n @media ${tablet} {\n display: flex;\n }\n`\n\nexport const MoonaModalConfirmation = styled(MoonaModalBody)`\n font-size: 1.6rem;\n line-height: 3.2rem;\n\n color: var(--color-grey-main);\n @media ${tablet} {\n font-weight: 500;\n font-size: 2rem;\n line-height: 2.4rem;\n color: var(--color-black-moona-02);\n }\n`\n\nexport const MoonaModalClose = styled(Image)`\n position: absolute;\n top: 2.5rem;\n right: 2.5rem;\n cursor: pointer;\n z-index: 10;\n`\nexport const MoonaModalStatusIcon = styled(Image)`\n display: none;\n @media ${tablet} {\n display: block;\n margin-right: 0.8rem;\n }\n`\n\nexport const MoonaModalBodyBox = styled.div`\n margin-top: 1.6rem;\n\n background: #ffffff;\n border: 1px solid var(--color-grey-light);\n box-sizing: border-box;\n border-radius: 12px;\n padding: 2.1rem 1rem 2.5rem 1rem;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n font-weight: 500;\n font-size: 1.6rem;\n line-height: 2.4rem;\n color: var(--color-grey-main);\n\n & > :not(:last-child) {\n margin-bottom: 1rem;\n }\n\n @media ${tablet} {\n margin-top: 4rem;\n padding: 2.8rem 2.4rem 2rem 2.4rem;\n & > :not(:last-child) {\n margin-bottom: 0.8rem;\n }\n }\n`\n\nexport const MoonaModalFeedbackBodyBox = styled(MoonaModalBodyBox)`\n border: 1px solid var(--color-grey-light);\n padding: 2.1rem 1rem 1.8rem 1rem;\n @media ${tablet} {\n border: none;\n padding: 2.1rem 1rem 2.5rem 1rem;\n width: 32.8rem;\n }\n`\n\nexport const MoonaModalLabel = styled.div`\n margin-top: 4rem;\n font-weight: 500;\n font-size: 2rem;\n line-height: 2.4rem;\n color: var(--color-black-moona-02);\n`\n","import React from 'react'\nimport { Link } from 'react-router-dom'\nimport styled, { css } from 'styled-components'\nimport { NameProps } from './buttons'\n\nconst baseLinkCss = css`\n display: flex;\n justify-content: center;\n align-items: center;\n\n white-space: nowrap;\n text-decoration: none;\n /* color: var(--color-purple-moona); */\n\n font-weight: 500;\n\n color: var(--color-blackmain-moona);\n`\n\nexport const ExternalLink = styled.a.attrs(({ name }) => ({\n target: '_blank',\n rel: 'noopener noreferrer',\n name: name\n}))`\n ${baseLinkCss}\n display: inline-block;\n font-weight: 500;\n font-size: 1.6rem;\n line-height: 2.4rem;\n color: var(--color-blackmain-moona);\n`\n\nexport const InternalLink = styled(Link).attrs(({ name }) => ({\n name: name\n}))`\n text-decoration: none;\n color: inherit;\n`\n\nexport const InternalBaseLink = styled(InternalLink)`\n ${baseLinkCss}\n`\n\nexport const InlineLink = styled(InternalBaseLink)`\n display: inline-block;\n margin-left: 0.5rem;\n`\n\nconst BaseNewTabLink: React.FC<{ to: string; name: string }> = ({\n to,\n name,\n\n ...props\n}) => {\n return (\n \n )\n}\n\nexport const NewTabLink = styled(BaseNewTabLink).attrs(({ name }) => ({\n target: '_blank',\n rel: 'noopener noreferrer',\n name: name\n}))`\n display: inline-block;\n font-weight: 500;\n font-size: 1.6rem;\n line-height: 2.4rem;\n color: var(--color-blackmain-moona);\n`\n","/* tslint:disable */\n/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createMoonaUser = /* GraphQL */ `\n query CreateMoonaUser(\n $email: String!\n $firstname: String!\n $lastname: String!\n $phone: String\n $address: String\n $postcode: String\n $city: String\n $country: String\n $token: String\n $stripeOnly: Boolean\n ) {\n createMoonaUser(\n email: $email\n firstname: $firstname\n lastname: $lastname\n phone: $phone\n address: $address\n postcode: $postcode\n city: $city\n country: $country\n token: $token\n stripeOnly: $stripeOnly\n )\n }\n`;\nexport const getPaymentIntent = /* GraphQL */ `\n query GetPaymentIntent(\n $userId: ID!\n $stripeMerchantId: ID!\n $price: Float!\n $currency: String\n $stripePaymentMethod: String\n $orderId: String\n $ecommerceSessionId: String\n $endTrial: Boolean\n $subscriptionWithoutTrialPeriod: Boolean\n $payload: String\n ) {\n getPaymentIntent(\n userId: $userId\n stripeMerchantId: $stripeMerchantId\n price: $price\n currency: $currency\n stripePaymentMethod: $stripePaymentMethod\n orderId: $orderId\n ecommerceSessionId: $ecommerceSessionId\n endTrial: $endTrial\n subscriptionWithoutTrialPeriod: $subscriptionWithoutTrialPeriod\n payload: $payload\n )\n }\n`;\nexport const setUserFirstPassword = /* GraphQL */ `\n query SetUserFirstPassword($email: String!, $newPassword: String!) {\n setUserFirstPassword(email: $email, newPassword: $newPassword)\n }\n`;\nexport const deleteFirstUser = /* GraphQL */ `\n query DeleteFirstUser($moonaId: String!) {\n deleteFirstUser(moonaId: $moonaId)\n }\n`;\nexport const getStripeCards = /* GraphQL */ `\n query GetStripeCards($stripeUserId: ID!) {\n getStripeCards(stripeUserId: $stripeUserId)\n }\n`;\nexport const addPaymentMethod = /* GraphQL */ `\n query AddPaymentMethod($stripeUserId: ID!, $stripePaymentMethod: String!) {\n addPaymentMethod(\n stripeUserId: $stripeUserId\n stripePaymentMethod: $stripePaymentMethod\n )\n }\n`;\nexport const getUserInfos = /* GraphQL */ `\n query GetUserInfos($email: String!) {\n getUserInfos(email: $email)\n }\n`;\nexport const getUserAndEcommerceSession = /* GraphQL */ `\n query GetUserAndEcommerceSession($sessionid: String!) {\n getUserAndEcommerceSession(sessionid: $sessionid)\n }\n`;\nexport const notifyOrderPaid = /* GraphQL */ `\n query NotifyOrderPaid($ecommerceSessionId: String!) {\n notifyOrderPaid(ecommerceSessionId: $ecommerceSessionId)\n }\n`;\nexport const createMoonaUserAndPaymentIntentMain = /* GraphQL */ `\n query CreateMoonaUserAndPaymentIntentMain(\n $user: MoonaUserInfos!\n $payment: Payment!\n ) {\n createMoonaUserAndPaymentIntentMain(user: $user, payment: $payment)\n }\n`;\nexport const getPaymentIntentMain = /* GraphQL */ `\n query GetPaymentIntentMain(\n $userId: ID!\n $stripeMerchantId: ID!\n $price: Float!\n $currency: String\n $stripePaymentMethod: String!\n $orderId: String\n $ecommerceSessionId: String\n $discount: Boolean\n $payload: String\n ) {\n getPaymentIntentMain(\n userId: $userId\n stripeMerchantId: $stripeMerchantId\n price: $price\n currency: $currency\n stripePaymentMethod: $stripePaymentMethod\n orderId: $orderId\n ecommerceSessionId: $ecommerceSessionId\n discount: $discount\n payload: $payload\n )\n }\n`;\nexport const subscribeToMoneyBackGuarantee = /* GraphQL */ `\n query SubscribeToMoneyBackGuarantee($stripeUserId: ID!) {\n subscribeToMoneyBackGuarantee(stripeUserId: $stripeUserId)\n }\n`;\nexport const createMoonaMerchant = /* GraphQL */ `\n query CreateMoonaMerchant(\n $email: String!\n $firstname: String!\n $lastname: String!\n $phone: String!\n $website: String!\n $businessDescription: String!\n $companyType: String!\n $annualTurnover: String!\n $ecommerceSolution: String!\n $token: String!\n ) {\n createMoonaMerchant(\n email: $email\n firstname: $firstname\n lastname: $lastname\n phone: $phone\n website: $website\n businessDescription: $businessDescription\n companyType: $companyType\n annualTurnover: $annualTurnover\n ecommerceSolution: $ecommerceSolution\n token: $token\n )\n }\n`;\nexport const finaliseMerchantRegistration = /* GraphQL */ `\n query FinaliseMerchantRegistration($id: ID!, $token: String!) {\n finaliseMerchantRegistration(id: $id, token: $token)\n }\n`;\nexport const getMerchantInformation = /* GraphQL */ `\n query GetMerchantInformation($stripeUserId: ID!) {\n getMerchantInformation(stripeUserId: $stripeUserId)\n }\n`;\nexport const getMerchantBalance = /* GraphQL */ `\n query GetMerchantBalance($stripeUserId: ID!) {\n getMerchantBalance(stripeUserId: $stripeUserId)\n }\n`;\nexport const payoutNow = /* GraphQL */ `\n query PayoutNow($stripeUserId: ID!) {\n payoutNow(stripeUserId: $stripeUserId)\n }\n`;\nexport const getStripeDashboardLink = /* GraphQL */ `\n query GetStripeDashboardLink($stripeUserId: ID!) {\n getStripeDashboardLink(stripeUserId: $stripeUserId)\n }\n`;\nexport const getTotalTransactions = /* GraphQL */ `\n query GetTotalTransactions($stripeUserId: ID!) {\n getTotalTransactions(stripeUserId: $stripeUserId)\n }\n`;\nexport const getTransactionsList = /* GraphQL */ `\n query GetTransactionsList(\n $stripeUserId: ID!\n $offset: String\n $limit: Int\n $email: String\n ) {\n getTransactionsList(\n stripeUserId: $stripeUserId\n offset: $offset\n limit: $limit\n email: $email\n )\n }\n`;\nexport const refundTransactions = /* GraphQL */ `\n query RefundTransactions(\n $transferId: String!\n $transferMoonaId: String\n $transferShippingId: String\n $amount: Int\n $fromDashboard: Boolean\n ) {\n refundTransactions(\n transferId: $transferId\n transferMoonaId: $transferMoonaId\n transferShippingId: $transferShippingId\n amount: $amount\n fromDashboard: $fromDashboard\n )\n }\n`;\nexport const getPayouts = /* GraphQL */ `\n query GetPayouts($stripeUserId: ID!, $offset: String, $limit: Int) {\n getPayouts(stripeUserId: $stripeUserId, offset: $offset, limit: $limit)\n }\n`;\nexport const getPayoutsDetails = /* GraphQL */ `\n query GetPayoutsDetails($stripeUserId: ID!, $payouts: [Payout]) {\n getPayoutsDetails(stripeUserId: $stripeUserId, payouts: $payouts)\n }\n`;\nexport const getNextPayout = /* GraphQL */ `\n query GetNextPayout($stripeUserId: ID!) {\n getNextPayout(stripeUserId: $stripeUserId)\n }\n`;\nexport const getLastPayout = /* GraphQL */ `\n query GetLastPayout($stripeUserId: ID!) {\n getLastPayout(stripeUserId: $stripeUserId)\n }\n`;\nexport const getMerchant = /* GraphQL */ `\n query GetMerchant($id: ID!) {\n getMerchant(id: $id) {\n id\n email\n firstname\n lastname\n phone\n website\n businessDescription\n companyType\n annualTurnover\n ecommerceSolution\n status\n stripeId\n cognitoId\n createdAt\n updatedAt\n }\n }\n`;\nexport const listMerchants = /* GraphQL */ `\n query ListMerchants(\n $filter: ModelMerchantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMerchants(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n email\n firstname\n lastname\n phone\n website\n businessDescription\n companyType\n annualTurnover\n ecommerceSolution\n status\n stripeId\n cognitoId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getUser = /* GraphQL */ `\n query GetUser($id: ID!) {\n getUser(id: $id) {\n id\n email\n firstname\n lastname\n phone\n status\n stripeId\n cognitoId\n createdAt\n updatedAt\n }\n }\n`;\nexport const listUsers = /* GraphQL */ `\n query ListUsers(\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUsers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n email\n firstname\n lastname\n phone\n status\n stripeId\n cognitoId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getMerchantApiKeys = /* GraphQL */ `\n query GetMerchantApiKeys($id: ID!) {\n getMerchantApiKeys(id: $id) {\n id\n merchantId\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n status\n apiVersion\n pluginVersion\n createdAt\n updatedAt\n }\n }\n`;\nexport const listMerchantApiKeyss = /* GraphQL */ `\n query ListMerchantApiKeyss(\n $filter: ModelMerchantApiKeysFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMerchantApiKeyss(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n merchantId\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n status\n apiVersion\n pluginVersion\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getEcommerceSession = /* GraphQL */ `\n query GetEcommerceSession($id: ID!) {\n getEcommerceSession(id: $id) {\n id\n merchantId\n stripeMerchantId\n ecommerceSolution\n ecommerceVersion\n website\n apiVersion\n pluginVersion\n amount\n currency\n email\n firstname\n lastname\n phone\n address\n postcode\n city\n country\n language\n returnUrl\n cancelUrl\n notificationUrl\n orderId\n cartId\n deviceId\n mode\n paymentMethod\n payload\n shopifyPayloadCreateOrder\n shopifyDomain\n createdAt\n updatedAt\n }\n }\n`;\nexport const listEcommerceSessions = /* GraphQL */ `\n query ListEcommerceSessions(\n $filter: ModelEcommerceSessionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listEcommerceSessions(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n merchantId\n stripeMerchantId\n ecommerceSolution\n ecommerceVersion\n website\n apiVersion\n pluginVersion\n amount\n currency\n email\n firstname\n lastname\n phone\n address\n postcode\n city\n country\n language\n returnUrl\n cancelUrl\n notificationUrl\n orderId\n cartId\n deviceId\n mode\n paymentMethod\n payload\n shopifyPayloadCreateOrder\n shopifyDomain\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getCustomApp = /* GraphQL */ `\n query GetCustomApp($id: ID!) {\n getCustomApp(id: $id) {\n id\n shopifyAppId\n shopifyAppKey\n shopifyAppSecretKey\n appEmbedUUID\n myShopifyDomain\n accessToken\n storefrontAccessToken\n scopes\n createdAt\n updatedAt\n }\n }\n`;\nexport const listCustomApps = /* GraphQL */ `\n query ListCustomApps(\n $filter: ModelCustomAppFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCustomApps(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n shopifyAppId\n shopifyAppKey\n shopifyAppSecretKey\n appEmbedUUID\n myShopifyDomain\n accessToken\n storefrontAccessToken\n scopes\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getShopifyWebhookEvent = /* GraphQL */ `\n query GetShopifyWebhookEvent($id: ID!) {\n getShopifyWebhookEvent(id: $id) {\n id\n createdAt\n updatedAt\n }\n }\n`;\nexport const listShopifyWebhookEvents = /* GraphQL */ `\n query ListShopifyWebhookEvents(\n $filter: ModelShopifyWebhookEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listShopifyWebhookEvents(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getStoreSettings = /* GraphQL */ `\n query GetStoreSettings($id: ID!) {\n getStoreSettings(id: $id) {\n id\n name\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n slotMP2\n logoUrl\n checkoutColor\n checkoutButtonColor\n checkoutUrl\n emailMarketing\n smsMarketing\n enabled\n markets {\n name\n code\n primary\n }\n countries {\n id\n name\n code\n tax_name\n tax\n }\n paymentMethods\n fastCheckoutMethods\n storefrontAccessToken\n myShopifyDomain\n trackingCode\n merchantId\n ecommerceSolution\n ecommerceVersion\n apiVersion\n pluginVersion\n shippingSlotAssociatedMethod\n shippingSlotDisplayAssociatedMethod\n shippingSlotEnabled\n shippingSlotLabel\n shippingSlotSort\n serverShopifyUrl\n taxesIncluded\n testMode\n appStatus\n appBlockProductCheckbox {\n slug\n enabled\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const listStoreSettingss = /* GraphQL */ `\n query ListStoreSettingss(\n $filter: ModelStoreSettingsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listStoreSettingss(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n slotMP2\n logoUrl\n checkoutColor\n checkoutButtonColor\n checkoutUrl\n emailMarketing\n smsMarketing\n enabled\n paymentMethods\n fastCheckoutMethods\n storefrontAccessToken\n myShopifyDomain\n trackingCode\n merchantId\n ecommerceSolution\n ecommerceVersion\n apiVersion\n pluginVersion\n shippingSlotAssociatedMethod\n shippingSlotDisplayAssociatedMethod\n shippingSlotEnabled\n shippingSlotLabel\n shippingSlotSort\n serverShopifyUrl\n taxesIncluded\n testMode\n appStatus\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const getCheckoutSession = /* GraphQL */ `\n query GetCheckoutSession($id: ID!) {\n getCheckoutSession(id: $id) {\n id\n myShopifyDomain\n customer {\n id\n firstName\n lastName\n acceptsMarketing\n email\n phone\n }\n cart {\n id\n note\n attributes\n itemCount\n requiresShipping\n currency\n }\n store {\n country\n currency\n language\n myShopifyDomain\n customizer\n appMode\n role\n }\n order {\n id\n }\n createdAt\n updatedAt\n }\n }\n`;\nexport const listCheckoutSessions = /* GraphQL */ `\n query ListCheckoutSessions(\n $filter: ModelCheckoutSessionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCheckoutSessions(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n myShopifyDomain\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const merchantsByEmail = /* GraphQL */ `\n query MerchantsByEmail(\n $email: String\n $sortDirection: ModelSortDirection\n $filter: ModelMerchantFilterInput\n $limit: Int\n $nextToken: String\n ) {\n merchantsByEmail(\n email: $email\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n email\n firstname\n lastname\n phone\n website\n businessDescription\n companyType\n annualTurnover\n ecommerceSolution\n status\n stripeId\n cognitoId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const usersByEmail = /* GraphQL */ `\n query UsersByEmail(\n $email: String\n $sortDirection: ModelSortDirection\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n ) {\n usersByEmail(\n email: $email\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n email\n firstname\n lastname\n phone\n status\n stripeId\n cognitoId\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const keysByMerchantId = /* GraphQL */ `\n query KeysByMerchantId(\n $merchantId: ID\n $sortDirection: ModelSortDirection\n $filter: ModelMerchantApiKeysFilterInput\n $limit: Int\n $nextToken: String\n ) {\n keysByMerchantId(\n merchantId: $merchantId\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n merchantId\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n status\n apiVersion\n pluginVersion\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const bySecretKeyLive = /* GraphQL */ `\n query BySecretKeyLive(\n $secretKeyLive: String\n $sortDirection: ModelSortDirection\n $filter: ModelMerchantApiKeysFilterInput\n $limit: Int\n $nextToken: String\n ) {\n bySecretKeyLive(\n secretKeyLive: $secretKeyLive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n merchantId\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n status\n apiVersion\n pluginVersion\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const bySecretKeyTest = /* GraphQL */ `\n query BySecretKeyTest(\n $secretKeyTest: String\n $sortDirection: ModelSortDirection\n $filter: ModelMerchantApiKeysFilterInput\n $limit: Int\n $nextToken: String\n ) {\n bySecretKeyTest(\n secretKeyTest: $secretKeyTest\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n merchantId\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n status\n apiVersion\n pluginVersion\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const byShopifyDomainFromCustomApp = /* GraphQL */ `\n query ByShopifyDomainFromCustomApp(\n $myShopifyDomain: String\n $sortDirection: ModelSortDirection\n $filter: ModelCustomAppFilterInput\n $limit: Int\n $nextToken: String\n ) {\n byShopifyDomainFromCustomApp(\n myShopifyDomain: $myShopifyDomain\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n shopifyAppId\n shopifyAppKey\n shopifyAppSecretKey\n appEmbedUUID\n myShopifyDomain\n accessToken\n storefrontAccessToken\n scopes\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const byShopifyDomainFromStoreSettings = /* GraphQL */ `\n query ByShopifyDomainFromStoreSettings(\n $myShopifyDomain: String\n $sortDirection: ModelSortDirection\n $filter: ModelStoreSettingsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n byShopifyDomainFromStoreSettings(\n myShopifyDomain: $myShopifyDomain\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n name\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n slotMP2\n logoUrl\n checkoutColor\n checkoutButtonColor\n checkoutUrl\n emailMarketing\n smsMarketing\n enabled\n paymentMethods\n fastCheckoutMethods\n storefrontAccessToken\n myShopifyDomain\n trackingCode\n merchantId\n ecommerceSolution\n ecommerceVersion\n apiVersion\n pluginVersion\n shippingSlotAssociatedMethod\n shippingSlotDisplayAssociatedMethod\n shippingSlotEnabled\n shippingSlotLabel\n shippingSlotSort\n serverShopifyUrl\n taxesIncluded\n testMode\n appStatus\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const bySecretKeyLiveFromStoreSettings = /* GraphQL */ `\n query BySecretKeyLiveFromStoreSettings(\n $secretKeyLive: String\n $sortDirection: ModelSortDirection\n $filter: ModelStoreSettingsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n bySecretKeyLiveFromStoreSettings(\n secretKeyLive: $secretKeyLive\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n name\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n slotMP2\n logoUrl\n checkoutColor\n checkoutButtonColor\n checkoutUrl\n emailMarketing\n smsMarketing\n enabled\n paymentMethods\n fastCheckoutMethods\n storefrontAccessToken\n myShopifyDomain\n trackingCode\n merchantId\n ecommerceSolution\n ecommerceVersion\n apiVersion\n pluginVersion\n shippingSlotAssociatedMethod\n shippingSlotDisplayAssociatedMethod\n shippingSlotEnabled\n shippingSlotLabel\n shippingSlotSort\n serverShopifyUrl\n taxesIncluded\n testMode\n appStatus\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const bySecretKeyTestFromStoreSettings = /* GraphQL */ `\n query BySecretKeyTestFromStoreSettings(\n $secretKeyTest: String\n $sortDirection: ModelSortDirection\n $filter: ModelStoreSettingsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n bySecretKeyTestFromStoreSettings(\n secretKeyTest: $secretKeyTest\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n name\n publishableKeyLive\n publishableKeyTest\n secretKeyLive\n secretKeyTest\n slotMP2\n logoUrl\n checkoutColor\n checkoutButtonColor\n checkoutUrl\n emailMarketing\n smsMarketing\n enabled\n paymentMethods\n fastCheckoutMethods\n storefrontAccessToken\n myShopifyDomain\n trackingCode\n merchantId\n ecommerceSolution\n ecommerceVersion\n apiVersion\n pluginVersion\n shippingSlotAssociatedMethod\n shippingSlotDisplayAssociatedMethod\n shippingSlotEnabled\n shippingSlotLabel\n shippingSlotSort\n serverShopifyUrl\n taxesIncluded\n testMode\n appStatus\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\nexport const byShopifyDomainFromCheckoutSession = /* GraphQL */ `\n query ByShopifyDomainFromCheckoutSession(\n $myShopifyDomain: String\n $sortDirection: ModelSortDirection\n $filter: ModelCheckoutSessionFilterInput\n $limit: Int\n $nextToken: String\n ) {\n byShopifyDomainFromCheckoutSession(\n myShopifyDomain: $myShopifyDomain\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n myShopifyDomain\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\n","import styled, { keyframes } from 'styled-components'\nconst rotation = keyframes`\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n`\nexport const Spinner = styled.div`\n height: 24px;\n width: 24px;\n\n position: absolute;\n\n margin: -12px 0 0 - 12px;\n\n animation: ${rotation} 1s infinite linear;\n border: 2px solid rgba(255, 255, 255, 0.4);\n border-radius: 100%;\n\n &:before {\n content: '';\n display: block;\n position: absolute;\n left: 0px;\n top: -2px;\n height: 100%;\n width: 100%;\n border-top: 2px solid #fff;\n border-left: 2px solid transparent;\n border-bottom: 2px solid transparent;\n border-right: 2px solid transparent;\n border-radius: 100%;\n }\n`\n","export const MoonaException = (code, message, moonaId) => {\n const error = new Error(message)\n error.code = code\n error.moonaId = moonaId\n return error\n}\n\nexport const check = (resolvedPromise, operation, moonaId) => {\n if (resolvedPromise.data[operation]) {\n const data = resolvedPromise.data[operation]\n let parsedData = null\n try {\n parsedData = JSON.parse(data)\n } catch {\n throw MoonaException('unknown', 'Could not parse ' + data, moonaId)\n }\n\n if (parsedData.statusCode !== 200) {\n if (parsedData.error)\n throw MoonaException(\n parsedData.error.code,\n parsedData.error.message,\n moonaId\n )\n throw MoonaException('unknown', 'No error code received', moonaId)\n } else {\n return parsedData\n }\n } else {\n throw MoonaException(\n 'unknown',\n 'No data fetched for operation ' + operation,\n moonaId\n )\n }\n}\n","export const LOAD_PAYOUTS_HEADER_REQUEST = 'LOAD_PAYOUTS_HEADER_REQUEST'\nexport const LOAD_PAYOUTS_HEADER_SUCCESS = 'LOAD_PAYOUTS_HEADER_SUCCESS'\nexport const LOAD_PAYOUTS_HEADER_FAILURE = 'LOAD_PAYOUTS_HEADER_FAILURE'\n\nexport const LOAD_PAYOUTS_TABLE_REQUEST = 'LOAD_PAYOUTS_TABLE_REQUEST'\nexport const LOAD_PAYOUTS_TABLE_SUCCESS = 'LOAD_PAYOUTS_TABLE_SUCCESS'\nexport const LOAD_PAYOUTS_TABLE_FAILURE = 'LOAD_PAYOUTS_TABLE_FAILURE'\n\nexport const CHANGE_PAYOUTS_TABLE_FILTER = 'CHANGE_PAYOUTS_TABLE_FILTER'\n\nexport type Payout = {\n id: string\n created: number\n status: string\n arrival_date: number\n amount: number\n bank: {\n bank_name: string\n last4: string\n deleted: boolean | null\n }\n}\n\nexport type PayoutColumn = {\n id: string\n created: number\n amount: number\n status: string\n arrivalDate: number\n bank: {\n bank_name: string\n last4: string\n deleted: boolean | null\n }\n}\n\nexport type PayoutDetail = {\n order_id: string\n customer_email: string\n order_amount: number\n payment_date: number\n}\n\nexport type PayoutCsvRow = PayoutDetail & {\n payout_id: string\n}\n\nexport interface PayoutsState {\n header: {\n loading: boolean\n success: boolean\n error: string | null\n nextPayout: Payout | null\n lastPayout: Payout | null\n }\n table: {\n loading: boolean\n success: boolean\n error: string | null\n hasMore: boolean\n pageIndex: number\n filter: string\n rows: Array\n }\n}\n\nexport interface LoadPayoutsHeaderRequest {\n type: typeof LOAD_PAYOUTS_HEADER_REQUEST\n payload: {\n stripeId: string\n }\n}\n\nexport interface LoadPayoutsHeaderSuccess {\n type: typeof LOAD_PAYOUTS_HEADER_SUCCESS\n payload: {\n nextPayout: Payout | null\n lastPayout: Payout | null\n }\n}\n\nexport interface LoadPayoutsHeaderFailure {\n type: typeof LOAD_PAYOUTS_HEADER_FAILURE\n payload: {\n error: string\n }\n}\n\nexport interface LoadPayoutsTableRequest {\n type: typeof LOAD_PAYOUTS_TABLE_REQUEST\n payload: {\n stripeId: string\n offset?: string\n limit?: number\n }\n}\n\nexport interface LoadPayoutsTableSuccess {\n type: typeof LOAD_PAYOUTS_TABLE_SUCCESS\n payload: {\n rows: Array\n hasMore: boolean\n append?: boolean\n }\n}\n\nexport interface LoadPayoutsTableFailure {\n type: typeof LOAD_PAYOUTS_TABLE_FAILURE\n payload: {\n error: string\n }\n}\n\nexport interface ChangePayoutsTableFilter {\n type: typeof CHANGE_PAYOUTS_TABLE_FILTER\n payload: {\n filter: string\n }\n}\n\nexport type PayoutsActionTypes =\n | LoadPayoutsHeaderRequest\n | LoadPayoutsHeaderSuccess\n | LoadPayoutsHeaderFailure\n | LoadPayoutsTableRequest\n | LoadPayoutsTableSuccess\n | LoadPayoutsTableFailure\n | ChangePayoutsTableFilter\n","module.exports = __webpack_public_path__ + \"static/media/congratulations.520e11eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/login.d8dcc7da.svg\";","import {\n CREATE_USER_REQUEST,\n CREATE_USER_SUCCESS,\n CREATE_USER_FAILURE,\n SET_EMAIL_MOONAID_SECRET,\n USER_ERROR,\n GET_MAIL,\n GET_MAIL_SUCCESS,\n SET_FIRST_PWD,\n UPDATE_PWD,\n SET_PWD_SUCCESS,\n LOAD_USER,\n CLEAR_USER,\n FINALIZE_REGISTRATION,\n LOAD_USER_ACCOUNT_LINK,\n LOAD_USER_ACCOUNT_LINK_SUCCESS,\n LOAD_KEYS,\n SET_KEYS,\n User,\n KEYS\n} from './types'\n\nimport { AppActions } from '../types'\n\nexport const createUserRequest = ({\n businessUrl,\n firstname,\n lastname,\n country,\n email,\n phone,\n password,\n businessDescription,\n companyType,\n annualTurnover,\n ecommerceSolution\n}: {\n businessUrl: string\n firstname: string\n lastname: string\n country: string\n email: string\n phone: string\n password: string\n businessDescription: string\n companyType: string\n annualTurnover: string\n ecommerceSolution: string\n}): AppActions => ({\n type: CREATE_USER_REQUEST,\n payload: {\n businessUrl,\n firstname,\n lastname,\n country,\n email,\n phone,\n password,\n businessDescription,\n companyType,\n annualTurnover,\n ecommerceSolution\n }\n})\n\nexport const createUserSuccess = (): AppActions => ({\n type: CREATE_USER_SUCCESS\n})\nexport const createUserFailure = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: CREATE_USER_FAILURE,\n payload: {\n error\n }\n})\n\nexport const loadUser = ({\n id,\n stripeId,\n firstName,\n lastName,\n email,\n phone,\n businessUrl,\n businessDescription,\n companyType,\n status\n}: User): AppActions => ({\n type: LOAD_USER,\n payload: {\n id,\n stripeId,\n firstName,\n lastName,\n email,\n phone,\n businessUrl,\n businessDescription,\n companyType,\n status\n }\n})\n\nexport const clearUser = (): AppActions => ({\n type: CLEAR_USER\n})\n\nexport const setUserMailAndId = ({\n email,\n moonaId\n}: {\n email: string\n moonaId: string\n}): AppActions => {\n return {\n type: SET_EMAIL_MOONAID_SECRET,\n payload: {\n email,\n moonaId\n }\n }\n}\n\nexport const userError = ({ error }: { error: string }): AppActions => ({\n type: USER_ERROR,\n payload: {\n error\n }\n})\n\nexport const setFirstPwd = ({\n email,\n password\n}: {\n email: string\n password: string\n}): AppActions => ({\n type: SET_FIRST_PWD,\n payload: {\n email,\n password\n }\n})\n\nexport const updatePwd = ({\n code,\n username,\n password\n}: {\n code: string\n username: string\n password: string\n}): AppActions => ({\n type: UPDATE_PWD,\n payload: {\n username,\n code,\n password\n }\n})\n\nexport const setPwdSuccess = ({\n password\n}: {\n password: string\n}): AppActions => {\n return {\n type: SET_PWD_SUCCESS,\n payload: {\n password\n }\n }\n}\n\nexport const fetchMail = (id: string): AppActions => ({\n type: GET_MAIL,\n payload: {\n id\n }\n})\n\nexport const fetchMailSuccess = ({ email }: { email: string }): AppActions => ({\n type: GET_MAIL_SUCCESS,\n payload: { email }\n})\n\nexport const fetchAccountLink = (stripeId: string): AppActions => ({\n type: LOAD_USER_ACCOUNT_LINK,\n payload: {\n stripeId\n }\n})\n\nexport const fetchAccountLinkSuccess = ({\n accountLink\n}: {\n accountLink: string\n}): AppActions => ({\n type: LOAD_USER_ACCOUNT_LINK_SUCCESS,\n payload: { accountLink }\n})\n\nexport const finalizeRegistration = ({\n code,\n state\n}: {\n code: string\n state: string\n}): AppActions => ({\n type: FINALIZE_REGISTRATION,\n payload: { code, state }\n})\n\nexport const loadKeys = ({ id }: { id: string }): AppActions => ({\n type: LOAD_KEYS,\n payload: {\n id\n }\n})\n\nexport const setKeys = (keys: KEYS): AppActions => ({\n type: SET_KEYS,\n payload: {\n keys\n }\n})\n","module.exports = __webpack_public_path__ + \"static/media/paymentcheck.82227c64.svg\";","export const LOAD_DATA_REQUEST = 'LOAD_DATA_REQUEST'\n\nexport const LOAD_DATA_SUCCESS = 'LOAD_DATA_SUCCESS'\nexport const LOAD_DATA_FAILURE = 'LOAD_DATA_FAILURE'\nexport const LOAD_DATA_ERROR = 'LOAD_DATA_ERROR'\nexport const RESET_DATA = 'RESET_DATA'\n\nexport const SET_SEARCH_EMAIL = 'SET_SEARCH_EMAIL'\nexport const CLEAR_SEARCH_EMAIL = 'CLEAR_SEARCH_EMAIL'\n\nexport interface ServerTransactionRow {\n orderId: string\n customerEmail: string\n amount: number\n datePayment: number\n moonaFunding: number\n amountReversed: number\n isLastPartialRefund: boolean\n reversed: boolean\n type: 'refund' | 'moona-discount'\n currency: string\n transactions: {\n transferId: string\n transferMoonaId: string\n transferShippingId: string\n }\n}\n\nexport interface TransactionRow {\n id: string\n customer: string\n total: number\n amount: number\n payback: number\n date: number\n isLastPartialRefund: boolean\n refund: 'Refunded' | ''\n currency: string\n transactions: {\n transferId: string\n transferMoonaId: string\n transferShippingId: string\n }\n amountReversed: number\n reversed: boolean\n type: 'refund' | 'moona-discount'\n}\n\nexport interface LoadDataRequest {\n type: typeof LOAD_DATA_REQUEST\n payload: { stripeId: string; limit?: number; offset?: string; email?: string }\n}\nexport interface LoadDataSuccess {\n type: typeof LOAD_DATA_SUCCESS\n payload: {\n data: TransactionRow[]\n hasMore: boolean\n append?: boolean\n }\n}\nexport interface LoadDataFailure {\n type: typeof LOAD_DATA_FAILURE\n payload: {\n error: string\n }\n}\n\nexport interface LoadDataError {\n type: typeof LOAD_DATA_ERROR\n payload: {\n error: string\n }\n}\nexport interface ResetTable {\n type: typeof RESET_DATA\n}\n\nexport interface SetSearchEmail {\n type: typeof SET_SEARCH_EMAIL\n payload: {\n value: string\n }\n}\n\nexport interface ClearSearchEmail {\n type: typeof CLEAR_SEARCH_EMAIL\n}\n\nexport interface TableState {\n data: TransactionRow[]\n searchEmail: string\n hasMore: boolean\n pageIndex: number\n loading: boolean\n success: boolean\n failure: boolean\n error: string\n}\n\nexport type TableActionTypes =\n | LoadDataRequest\n | LoadDataError\n | LoadDataSuccess\n | LoadDataFailure\n | ResetTable\n | SetSearchEmail\n | ClearSearchEmail\n","import {\n CREATE_PAYOUT_REQUEST,\n CREATE_PAYOUT_ERROR,\n CREATE_PAYOUT_SUCCESS,\n LOAD_PAYOUT_REQUEST,\n LOAD_PAYOUT_FAILURE,\n LOAD_PAYOUT_SUCCESS,\n CREATE_PAYOUT_FAILURE,\n LOAD_PAYOUT_STATUS,\n SET_PAYOUT_STATUS,\n RESET_PAYOUT\n} from './types'\n\nimport { AppActions } from '../types'\n\nexport const createPayoutRequest = (stripeId: string): AppActions => ({\n type: CREATE_PAYOUT_REQUEST,\n payload: { stripeId: stripeId }\n})\nexport const createPayoutSuccess = (): AppActions => ({\n type: CREATE_PAYOUT_SUCCESS\n})\nexport const createPayoutFailure = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: CREATE_PAYOUT_FAILURE,\n payload: {\n error\n }\n})\n\nexport const loadPayoutRequest = (stripeId: string): AppActions => ({\n type: LOAD_PAYOUT_REQUEST,\n payload: { stripeId: stripeId }\n})\nexport const loadPayoutSuccess = (amount: number): AppActions => ({\n type: LOAD_PAYOUT_SUCCESS,\n payload: {\n amount\n }\n})\nexport const loadPayoutFailure = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: LOAD_PAYOUT_FAILURE,\n payload: {\n error\n }\n})\n\nexport const loadPayoutStatus = (stripeId: string): AppActions => ({\n type: LOAD_PAYOUT_STATUS,\n payload: { stripeId: stripeId }\n})\n\nexport const setPayoutStatus = (payoutsEnabled: boolean): AppActions => ({\n type: SET_PAYOUT_STATUS,\n payload: { payoutsEnabled }\n})\n\nexport const createPayoutError = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: CREATE_PAYOUT_ERROR,\n payload: {\n error\n }\n})\nexport const resetPayout = (): AppActions => ({\n type: RESET_PAYOUT\n})\n","export const LOAD_TRANSACTIONS_REQUEST = 'LOAD_TRANSACTIONS_REQUEST'\nexport const LOAD_TRANSACTIONS_SUCCESS = 'LOAD_TRANSACTIONS_SUCCESS'\nexport const LOAD_TRANSACTIONS_FAILURE = 'LOAD_TRANSACTIONS_FAILURE'\nexport const LOAD_TRANSACTIONS_ERROR = 'LOAD_TRANSACTIONS_ERROR'\nexport const RESET_TRANSACTIONS = 'RESET_TRANSACTIONS'\n\nexport interface LoadTransactionsRequest {\n type: typeof LOAD_TRANSACTIONS_REQUEST\n payload: { stripeId: string }\n}\nexport interface LoadTransactionsSuccess {\n type: typeof LOAD_TRANSACTIONS_SUCCESS\n payload: {\n total: number\n moonaFunding: number\n }\n}\nexport interface LoadTransactionsFailure {\n type: typeof LOAD_TRANSACTIONS_FAILURE\n payload: {\n error: string\n }\n}\n\nexport interface LoadTransactionsError {\n type: typeof LOAD_TRANSACTIONS_ERROR\n payload: {\n error: string\n }\n}\nexport interface ResetTransactions {\n type: typeof RESET_TRANSACTIONS\n}\n\nexport interface TransactionsState {\n loading: boolean\n success: boolean\n failure: boolean\n error: string\n total: number\n moonaFunding: number\n}\n\nexport type TransactionsActionTypes =\n | LoadTransactionsRequest\n | LoadTransactionsError\n | LoadTransactionsSuccess\n | LoadTransactionsFailure\n | ResetTransactions\n","import { useEffect, useState } from 'react'\n\nexport enum DeviceType {\n tablet = 'tablet',\n mobile = 'mobile'\n}\n\nconst getDeviceType = (windowWidth: number) => {\n if (windowWidth < 1368) return DeviceType.mobile\n return DeviceType.tablet\n}\n\nexport const useDeviceType = () => {\n const [deviceType, setDeviceType] = useState(getDeviceType(window.innerWidth))\n\n useEffect(() => {\n const onResize = () => setDeviceType(getDeviceType(window.innerWidth))\n\n window.addEventListener('resize', onResize)\n\n return () => window.removeEventListener('resize', onResize)\n })\n\n return deviceType\n}\n","const setViewHeight = () =>\n document.documentElement.style.setProperty(\n '--vh',\n `${window.innerHeight * 0.01}px`\n )\n\nexport const syncViewHeightCssVariable = () => {\n setViewHeight()\n window.addEventListener('resize', setViewHeight)\n}\n","import React from 'react'\nimport { Helmet, HelmetProvider } from 'react-helmet-async'\nimport { useTranslation } from 'react-i18next'\nimport i18next from 'i18next'\nimport { isIOS } from 'react-device-detect'\ndeclare global {\n interface Document {\n documentMode?: any\n }\n}\n\nexport const Metadata: React.FC<{ location?: string }> = ({ location }) => {\n const [t, i18n] = useTranslation('app')\n React.useEffect(() => {\n i18next.changeLanguage('en')\n }, [])\n\n const key = location\n ? location === '/'\n ? ''\n : location.endsWith('/')\n ? location?.substring(1, location.length - 1) + '.'\n : location?.substring(1) + '.'\n : ''\n\n const titleKey = 'meta.' + key + 'title'\n return (\n \n \n \n {t(titleKey)}\n\n \n {isIOS && (\n \n )}\n \n \n \n \n )\n}\n","import React, { useEffect } from 'react'\nimport { Route, RouteProps } from 'react-router-dom'\n\nimport { Elements } from '@stripe/react-stripe-js'\nimport { loadStripe } from '@stripe/stripe-js'\nimport { Metadata } from 'common/components/SEO/Metadata'\nimport { useDeviceType } from 'common/style/queries/useDeviceType'\nimport { useScrollToTop } from 'common/hooks/useScollToTop'\nimport { useDispatch } from 'react-redux'\nimport { setDeviceType } from '../../../state/features/session/actions'\nexport interface ComponentProps extends RouteProps {}\nconst stripePromise = loadStripe(process.env.REACT_APP_PUBLISHABLE_KEY || '')\ninterface Props extends RouteProps {\n component: React.FC\n}\nconst Layout: React.FC = ({\n component: Component,\n location,\n ...rest\n}) => {\n const dispatch = useDispatch()\n const stripeOptions = {\n locale: 'en' as const\n }\n const deviceType = useDeviceType()\n useEffect(() => {\n dispatch(setDeviceType(deviceType))\n }, [dispatch, deviceType])\n\n return (\n (\n
\n \n \n \n \n \n
\n )}\n />\n )\n}\n\nconst RunHook = () => {\n useScrollToTop()\n\n return null\n}\nexport default Layout\n","import { useLocation } from 'react-router'\nimport { useEffect } from 'react'\n\nexport const useScrollToTop = () => {\n const location = useLocation()\n\n useEffect(() => {\n window.scrollTo(0, 0)\n }, [location.pathname])\n}\n","import { SET_DEVICE_TYPE, SET_CONTACT_US } from './types'\n\nimport { DeviceType } from 'common/style/queries/useDeviceType'\nimport { AppActions } from '../types'\n\nexport const setDeviceType = (deviceType: DeviceType): AppActions => {\n const isMobile = deviceType === DeviceType.mobile\n return {\n type: SET_DEVICE_TYPE,\n payload: {\n isMobile\n }\n }\n}\nexport const setContactUs = (showModal: boolean): AppActions => {\n return {\n type: SET_CONTACT_US,\n payload: {\n showContactUs: showModal\n }\n }\n}\n","export const SET_DEVICE_TYPE = 'SET_DEVICE_TYPE'\nexport const SET_CONTACT_US = 'SET_CONTACT_US'\n\nexport interface Session {\n isMobile: boolean\n showContactUs: boolean\n}\n\nexport interface SetDeviceType {\n type: typeof SET_DEVICE_TYPE\n payload: {\n isMobile: boolean\n }\n}\nexport interface SetContactUs {\n type: typeof SET_CONTACT_US\n payload: {\n showContactUs: boolean\n }\n}\n\nexport type SessionActionTypes = SetDeviceType | SetContactUs\n\nexport interface SessionState extends Session {}\n","import React from 'react'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { Redirect, useLocation } from 'react-router-dom'\nimport Layout from '../Layout'\nimport qh from 'query-string'\nimport { AppState } from '../../../state/features/types'\nimport { loggedIn } from 'state/features/auth/actions'\n\nimport { finalizeRegistration } from 'state/features/users/actions'\ninterface Props {\n component: React.FC\n path: string\n exact?: boolean\n}\nconst ProtectedRoutes: React.FC = ({ component: Component, path }) => {\n const auth = useSelector((state: AppState) => {\n return state.auth\n })\n\n const dispatch = useDispatch()\n\n const location = useLocation()\n\n const query = qh.parse(location.search)\n\n if (\n !auth.logged &&\n query.code &&\n query.state &&\n auth.finalizeRegistrationStatus !== 'done'\n ) {\n dispatch(loggedIn())\n }\n\n if (\n auth.logged &&\n query.code &&\n query.state &&\n auth.finalizeRegistrationStatus !== 'done'\n ) {\n const code = (query.code as string) || ''\n const state = (query.state as string) || ''\n\n dispatch(finalizeRegistration({ code, state }))\n }\n\n if (!auth.logged && auth.finalizeRegistrationStatus === 'done') {\n return \n }\n\n if (!auth.logged && (!query.code || !query.state)) {\n return \n }\n\n return \n}\n\nexport default ProtectedRoutes\n","import React from 'react'\n\nimport Layout from '../Layout'\nimport { useSelector } from 'react-redux'\nimport { AppState } from '../../../state/features/types'\nimport { useTranslation } from 'react-i18next'\nimport { Redirect } from 'react-router-dom'\n\ninterface Props {\n component: React.FC\n path: string\n exact?: boolean\n}\nconst AuthenticationRoutes: React.FC = ({\n component: Component,\n path\n}) => {\n const [t] = useTranslation('app')\n\n const { logged } = useSelector((state: AppState) => {\n return state.auth\n })\n\n if (logged) {\n return \n }\n\n return \n}\n\nexport default AuthenticationRoutes\n","import React from 'react'\nimport styled from 'styled-components'\nimport { AppState } from 'state/features/types'\nimport { useSelector } from 'react-redux'\nimport { Section } from 'common/style/components/Section'\nimport { BaseSkeleton } from 'common/components/BaseSkeleton/BaseSkeleton'\n\nimport { tablet } from 'common/style/queries/media-queries'\nimport { Left } from '../SkelLogin'\n\nexport const LoginFormContainer = styled(Section)`\n margin-top: 3.2rem;\n width: 100%;\n @media ${tablet} {\n }\n`\n\nexport const FormWrapper = styled.div`\n width: 100%;\n`\n\nexport const LoginFormSection = styled(Section)`\n margin: 0;\n width: 100%;\n align-items: center;\n\n @media ${tablet} {\n width: 32.4rem;\n }\n\n & > div > label {\n color: #ffffff;\n }\n`\n\nexport const SkelLoginForm: React.FC = () => {\n const { isMobile } = useSelector((state: AppState) => state.session)\n\n const inputWidth = isMobile ? 283 : 324\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport { AppState } from 'state/features/types'\nimport { useSelector } from 'react-redux'\nimport {\n LoginSection,\n CenteredMain\n} from '../../common/style/components/Section'\nimport { BaseSkeleton } from 'common/components/BaseSkeleton/BaseSkeleton'\n\nimport { SkelLoginForm } from './components/SkelLoginForm'\nimport { tablet } from 'common/style/queries/media-queries'\n\nexport const LoginCenteredMain = styled(CenteredMain)`\n width: 33.5rem;\n padding: 0.6rem 2.4rem 2.6rem 2.4rem;\n\n background-color: #27244b;\n border: 1px solid #e8e9ed;\n border-radius: 16px;\n\n @media ${tablet} {\n padding: 6.4rem 17.6rem 6.5rem 17.6rem;\n width: 100%;\n }\n`\n\nexport const Center = styled.div`\n align-self: center;\n`\nexport const Left = styled.div`\n align-self: flex-start;\n`\n\nexport const LoginWrapper = styled.div`\n display: flex;\n flex-direction: column;\n\n @media ${tablet} {\n }\n`\nconst SkelLogin: React.FC = () => {\n const { isMobile } = useSelector((state: AppState) => state.session)\n\n return (\n \n \n {isMobile && (\n
\n \n
\n )}\n \n {!isMobile && }\n \n \n \n \n \n \n
\n
\n )\n}\n\nexport default SkelLogin\n","import React, { Suspense } from 'react'\nimport SkelLogin from './SkelLogin'\nconst LoginPageBase = React.lazy(() => import('./Login'))\n\nexport const LoginPage = () => (\n }>\n \n \n)\n","import React, { Suspense } from 'react'\nconst RegisterPageBase = React.lazy(() => import('./Register'))\n\nexport const RegisterPage = () => (\n \n \n \n)\n","import React, { Suspense } from 'react'\n\nconst TermsPageBase = React.lazy(() => import('./Terms'))\n\nexport const TermsPage = () => (\n \n \n \n)\n","import React, { Suspense } from 'react'\n\nconst ForgotPasswordPageBase = React.lazy(() => import('./ForgotPassword'))\n\nexport const ForgotPasswordPage = () => (\n \n \n \n)\n","import React, { Suspense } from 'react'\n\nconst DashboardPageBase = React.lazy(() => import('./Dashboard'))\n\nexport const DashboardPage = () => (\n \n \n \n)\n","import React, { Suspense } from 'react'\n\nconst ResetPasswordPageBase = React.lazy(() => import('./ResetPassword'))\n\nexport const ResetPasswordPage = () => (\n \n \n \n)\n","import React, { Suspense } from 'react'\n\nconst PayoutsPageBase = React.lazy(() => import('./Payouts'))\n\nexport const PayoutsPage = () => (\n \n \n \n)\n","import React from 'react'\nimport { BrowserRouter, Switch, Redirect } from 'react-router-dom'\nimport ProtectedRoutes from './common/components/ProtectedRoutes/ProtectedRoutes'\nimport AuthenticationRoutes from './common/components/AuthenticationRoutes/AuthenticationRoutes'\nimport { LoginPage } from './pages/Login'\nimport { RegisterPage } from './pages/Register'\nimport { TermsPage } from './pages/Terms'\nimport { ForgotPasswordPage } from './pages/ForgotPassword'\nimport { DashboardPage } from './pages/Dashboard'\nimport { ResetPasswordPage } from './pages/ResetPassword'\n\nimport { useTranslation } from 'react-i18next'\nimport Layout from './common/components/Layout'\nimport { PayoutsPage } from 'pages/Payouts'\n\nconst Routes: React.FC = () => {\n const [t] = useTranslation('app')\n return (\n \n \n \n\n \n\n \n \n \n \n \n\n \n \n \n )\n}\n\nexport default Routes\n","const isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n window.location.hostname === '[::1]' ||\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href)\n if (publicUrl.origin !== window.location.origin) {\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n checkValidServiceWorker(swUrl, config)\n\n navigator.serviceWorker.ready.then(() => {})\n } else {\n registerValidSW(swUrl, config)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n if (installingWorker == null) {\n return\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n if (config && config.onUpdate) {\n config.onUpdate(registration)\n }\n } else {\n if (config && config.onSuccess) {\n config.onSuccess(registration)\n }\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n const contentType = response.headers.get('content-type')\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n registerValidSW(swUrl, config)\n }\n })\n .catch(() => {})\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister()\n })\n .catch(error => {\n console.error(error.message)\n })\n }\n}\n","import {\n UsersState,\n SET_FIRST_PWD,\n UPDATE_PWD,\n SET_PWD_SUCCESS,\n USER_ERROR,\n GET_MAIL_SUCCESS,\n LOAD_USER,\n CLEAR_USER,\n CREATE_USER_SUCCESS,\n CREATE_USER_FAILURE,\n LOAD_USER_ACCOUNT_LINK_SUCCESS,\n SET_KEYS,\n UsersActionTypes\n} from './types'\n\nexport const initialUserState: UsersState = {\n password: '',\n passwordUpdated: false,\n email: '',\n loading: false,\n userloaded: false, // false\n error: '',\n id: '',\n phone: '',\n firstName: '',\n lastName: '',\n success: false,\n failure: false,\n stripeId: '',\n businessUrl: '',\n businessDescription: '',\n companyType: '',\n annualTurnover: '',\n ecommerceSolution: '',\n accountLink: '',\n status: ''\n}\n\nexport default function users(\n state = initialUserState,\n action: UsersActionTypes\n): UsersState {\n switch (action.type) {\n case SET_FIRST_PWD:\n return {\n ...state,\n loading: true,\n passwordUpdated: false\n }\n case UPDATE_PWD:\n return {\n ...state,\n loading: true,\n passwordUpdated: false\n }\n case SET_PWD_SUCCESS:\n return {\n ...state,\n loading: false,\n passwordUpdated: true,\n error: '',\n password: action.payload.password\n }\n case GET_MAIL_SUCCESS:\n return {\n ...state,\n loading: false,\n error: '',\n email: action.payload.email\n }\n case LOAD_USER:\n return {\n ...state,\n email: action.payload.email,\n id: action.payload.id,\n phone: action.payload.phone,\n firstName: action.payload.firstName,\n lastName: action.payload.lastName,\n\n stripeId: action.payload.stripeId,\n businessUrl: action.payload.businessUrl,\n businessDescription: action.payload.businessDescription,\n companyType: action.payload.companyType,\n annualTurnover: action.payload.annualTurnover,\n ecommerceSolution: action.payload.ecommerceSolution,\n status: action.payload.status,\n userloaded: true\n }\n case CLEAR_USER:\n return {\n ...initialUserState\n }\n\n case CREATE_USER_SUCCESS:\n return {\n ...state,\n loading: false,\n success: true,\n failure: false,\n error: ''\n }\n case CREATE_USER_FAILURE:\n return {\n ...state,\n loading: false,\n success: false,\n failure: true,\n error: action.payload.error\n }\n\n case USER_ERROR:\n return {\n ...state,\n error: action.payload.error\n }\n case LOAD_USER_ACCOUNT_LINK_SUCCESS:\n return {\n ...state,\n accountLink: action.payload.accountLink\n }\n case SET_KEYS:\n return {\n ...state,\n keys: action.payload.keys\n }\n\n default:\n return state\n }\n}\n","import {\n AuthState,\n AuthActionTypes,\n LOGIN,\n LOGOUT,\n LOGGED_IN,\n LOGGABLE,\n LOGGABLE_SUCESS,\n LOGIN_FAIL,\n FORGOT_PASSWORD,\n FORGOT_PASSWORD_SUCCESS,\n FORGOT_PASSWORD_FAILURE,\n FORGOT_PASSWORD_ERROR,\n FORGOT_PASSWORD_RESET,\n FINALIZE_REGISTRATION_STATUS\n} from './types'\n\nexport const initialAuthState: AuthState = {\n loading: false,\n logged: false, // false\n registered: false,\n loginfailure: false,\n error: '',\n forgotPasswordLoading: false,\n forgotPasswordSuccess: false,\n forgotPasswordFailure: false,\n finalizeRegistrationStatus: 'pending'\n}\n\nconst AuthReducer = (\n state = initialAuthState,\n action: AuthActionTypes\n): AuthState => {\n switch (action.type) {\n case LOGIN:\n return {\n ...state,\n loading: true,\n logged: false,\n loginfailure: false\n }\n\n case LOGGED_IN:\n return {\n ...state,\n loading: false,\n logged: true,\n loginfailure: false\n }\n case LOGOUT:\n return {\n ...state,\n loading: false,\n logged: false,\n loginfailure: false\n }\n case LOGIN_FAIL:\n return {\n ...state,\n loading: false,\n logged: false,\n loginfailure: true\n }\n\n case LOGGABLE:\n return {\n ...state,\n loading: true,\n registered: false\n }\n\n case LOGGABLE_SUCESS:\n return {\n ...state,\n loading: false,\n registered: action.payload.loggable\n }\n\n case FORGOT_PASSWORD:\n return {\n ...state,\n forgotPasswordLoading: true\n }\n case FORGOT_PASSWORD_SUCCESS:\n return {\n ...state,\n forgotPasswordLoading: false,\n forgotPasswordSuccess: true,\n forgotPasswordFailure: false,\n error: ''\n }\n case FORGOT_PASSWORD_FAILURE:\n return {\n ...state,\n forgotPasswordLoading: false,\n forgotPasswordSuccess: false,\n forgotPasswordFailure: true,\n error: action.payload.error\n }\n\n case FORGOT_PASSWORD_ERROR:\n return {\n ...state,\n error: action.payload.error\n }\n\n case FORGOT_PASSWORD_RESET:\n return {\n ...state,\n forgotPasswordLoading: false,\n forgotPasswordSuccess: false,\n forgotPasswordFailure: false\n }\n case FINALIZE_REGISTRATION_STATUS:\n return {\n ...state,\n finalizeRegistrationStatus: action.payload.finalizeRegistrationStatus\n }\n\n default:\n return state\n }\n}\n\nexport default AuthReducer\n","import {\n PayoutState,\n PayoutActionTypes,\n CREATE_PAYOUT_ERROR,\n CREATE_PAYOUT_REQUEST,\n CREATE_PAYOUT_SUCCESS,\n CREATE_PAYOUT_FAILURE,\n LOAD_PAYOUT_REQUEST,\n LOAD_PAYOUT_SUCCESS,\n LOAD_PAYOUT_FAILURE,\n SET_PAYOUT_STATUS,\n RESET_PAYOUT,\n LOAD_PAYOUT_STATUS\n} from './types'\n\nexport const initialPayoutState: PayoutState = {\n loading: false,\n success: false,\n failure: false,\n payoutsEnabled: false,\n loadLoading: false,\n loadSuccess: false,\n loadFailure: false,\n payoutsEnabledLoading: true,\n error: '',\n amount: 0,\n previousAmount: 0\n}\n\nexport default function payout(\n state = initialPayoutState,\n action: PayoutActionTypes\n): PayoutState {\n switch (action.type) {\n case CREATE_PAYOUT_REQUEST:\n return {\n ...state,\n loading: true,\n previousAmount: state.amount\n }\n case CREATE_PAYOUT_SUCCESS:\n return {\n ...state,\n loading: false,\n success: true,\n failure: false,\n error: ''\n }\n case CREATE_PAYOUT_FAILURE:\n return {\n ...state,\n loading: false,\n success: false,\n failure: true,\n error: action.payload.error\n }\n case LOAD_PAYOUT_REQUEST:\n return {\n ...state,\n loadLoading: true\n }\n case LOAD_PAYOUT_SUCCESS:\n return {\n ...state,\n loadLoading: false,\n loadSuccess: true,\n loadFailure: false,\n amount: action.payload.amount,\n error: ''\n }\n case LOAD_PAYOUT_FAILURE:\n return {\n ...state,\n loadLoading: false,\n loadSuccess: false,\n loadFailure: true,\n error: action.payload.error\n }\n\n case CREATE_PAYOUT_ERROR:\n return {\n ...state,\n error: action.payload.error\n }\n case RESET_PAYOUT:\n return {\n ...initialPayoutState\n }\n case SET_PAYOUT_STATUS:\n return {\n ...state,\n payoutsEnabled: action.payload.payoutsEnabled,\n payoutsEnabledLoading: false\n }\n case LOAD_PAYOUT_STATUS:\n return {\n ...state,\n payoutsEnabledLoading: true\n }\n\n default:\n return state\n }\n}\n","import {\n CHANGE_PAYOUTS_TABLE_FILTER,\n LOAD_PAYOUTS_HEADER_FAILURE,\n LOAD_PAYOUTS_HEADER_REQUEST,\n LOAD_PAYOUTS_HEADER_SUCCESS,\n LOAD_PAYOUTS_TABLE_FAILURE,\n LOAD_PAYOUTS_TABLE_REQUEST,\n LOAD_PAYOUTS_TABLE_SUCCESS,\n PayoutsActionTypes,\n PayoutsState\n} from './types'\n\nexport const initialPayoutsState: PayoutsState = {\n header: {\n loading: false,\n success: false,\n error: null,\n lastPayout: null,\n nextPayout: null\n },\n table: {\n filter: '',\n loading: false,\n success: false,\n error: null,\n hasMore: false,\n pageIndex: 0,\n rows: []\n }\n}\n\nexport default function payouts(\n state = initialPayoutsState,\n action: PayoutsActionTypes\n): PayoutsState {\n switch (action.type) {\n case LOAD_PAYOUTS_HEADER_SUCCESS:\n return {\n ...state,\n header: {\n ...state.header,\n nextPayout: action.payload.nextPayout,\n lastPayout: action.payload.lastPayout,\n loading: false,\n success: true,\n error: null\n }\n }\n case LOAD_PAYOUTS_HEADER_FAILURE:\n return {\n ...state,\n header: {\n ...state.header,\n loading: false,\n success: false,\n error: action.payload.error\n }\n }\n case LOAD_PAYOUTS_HEADER_REQUEST:\n return {\n ...state,\n header: {\n ...state.header,\n success: false,\n error: null,\n loading: true\n }\n }\n case LOAD_PAYOUTS_TABLE_SUCCESS:\n return {\n ...state,\n table: {\n ...state.table,\n ...(action.payload.append\n ? {\n rows: [...state.table.rows, ...action.payload.rows]\n }\n : { rows: action.payload.rows }),\n pageIndex: action.payload.append ? state.table.pageIndex + 1 : 0,\n hasMore: action.payload.hasMore,\n loading: false,\n success: true,\n error: null\n }\n }\n case LOAD_PAYOUTS_TABLE_FAILURE:\n return {\n ...state,\n table: {\n ...state.table,\n loading: false,\n success: false,\n error: action.payload.error\n }\n }\n case LOAD_PAYOUTS_TABLE_REQUEST:\n return {\n ...state,\n table: {\n ...state.table,\n success: false,\n error: null,\n loading: true\n }\n }\n case CHANGE_PAYOUTS_TABLE_FILTER:\n return {\n ...state,\n table: {\n ...state.table,\n filter: action.payload.filter\n }\n }\n default:\n return state\n }\n}\n","import {\n SessionState,\n SessionActionTypes,\n SET_DEVICE_TYPE,\n SET_CONTACT_US\n} from './types'\n\nexport const initialSessionState: SessionState = {\n isMobile: false,\n showContactUs: false\n}\n\nexport default function payment(\n state = initialSessionState,\n action: SessionActionTypes\n): SessionState {\n switch (action.type) {\n case SET_DEVICE_TYPE:\n return {\n ...state,\n isMobile: action.payload.isMobile\n }\n case SET_CONTACT_US:\n return {\n ...state,\n showContactUs: action.payload.showContactUs\n }\n\n default:\n return state\n }\n}\n","import {\n RefundState,\n RefundActionTypes,\n CREATE_REFUND_REQUEST,\n CREATE_REFUND_SUCCESS,\n CREATE_REFUND_FAILURE,\n RESET_REFUND\n} from './types'\n\nexport const initialRefundState: RefundState = {\n loading: false,\n success: false,\n failure: false,\n error: '',\n isFullRefund: false,\n amount: 0,\n payback: 0,\n customer: '',\n currency: 'GBP'\n}\n\nexport default function payout(\n state = initialRefundState,\n action: RefundActionTypes\n): RefundState {\n switch (action.type) {\n case CREATE_REFUND_REQUEST:\n return {\n ...state,\n loading: true,\n customer: action.payload.customer\n }\n case CREATE_REFUND_SUCCESS:\n return {\n ...state,\n loading: false,\n success: true,\n failure: false,\n amount: action.payload.amount,\n payback: action.payload.payback,\n isFullRefund: action.payload.isFullRefund,\n error: '',\n currency: action.payload.currency\n }\n case CREATE_REFUND_FAILURE:\n return {\n ...state,\n loading: false,\n success: false,\n failure: true,\n error: action.payload.error,\n amount: action.payload.amount,\n payback: action.payload.payback,\n currency: action.payload.currency\n }\n case RESET_REFUND:\n return {\n ...initialRefundState\n }\n\n default:\n return state\n }\n}\n","import {\n CLEAR_SEARCH_EMAIL,\n LOAD_DATA_ERROR,\n LOAD_DATA_FAILURE,\n LOAD_DATA_REQUEST,\n LOAD_DATA_SUCCESS,\n RESET_DATA,\n SET_SEARCH_EMAIL,\n TableActionTypes,\n TableState\n} from './types'\n\nexport const initialTableState: TableState = {\n hasMore: false,\n pageIndex: 0,\n loading: false,\n success: false,\n failure: false,\n data: [],\n searchEmail: '',\n error: ''\n}\n\nexport default function table(\n state = initialTableState,\n action: TableActionTypes\n): TableState {\n switch (action.type) {\n case SET_SEARCH_EMAIL:\n return {\n ...state,\n searchEmail: action.payload.value\n }\n case CLEAR_SEARCH_EMAIL:\n return {\n ...state,\n searchEmail: ''\n }\n case LOAD_DATA_REQUEST:\n return {\n ...state,\n loading: true\n }\n case LOAD_DATA_SUCCESS:\n return {\n ...state,\n loading: false,\n success: true,\n failure: false,\n ...(action.payload.append\n ? {\n data: [...state.data, ...action.payload.data]\n }\n : { data: action.payload.data }),\n pageIndex: action.payload.append ? state.pageIndex + 1 : 0,\n hasMore: action.payload.hasMore,\n error: ''\n }\n case LOAD_DATA_FAILURE:\n return {\n ...state,\n loading: false,\n success: false,\n failure: true,\n error: action.payload.error,\n hasMore: false\n }\n\n case LOAD_DATA_ERROR:\n return {\n ...state,\n error: action.payload.error\n }\n case RESET_DATA:\n return {\n ...initialTableState\n }\n\n default:\n return state\n }\n}\n","import {\n TransactionsState,\n TransactionsActionTypes,\n LOAD_TRANSACTIONS_REQUEST,\n LOAD_TRANSACTIONS_ERROR,\n LOAD_TRANSACTIONS_SUCCESS,\n LOAD_TRANSACTIONS_FAILURE,\n RESET_TRANSACTIONS\n} from './types'\n\nexport const initialTransactionsState: TransactionsState = {\n loading: false,\n success: false,\n failure: false,\n error: '',\n total: 0,\n moonaFunding: 0\n}\n\nexport default function transactions(\n state = initialTransactionsState,\n action: TransactionsActionTypes\n): TransactionsState {\n switch (action.type) {\n case LOAD_TRANSACTIONS_REQUEST:\n return {\n ...state,\n loading: true\n }\n case LOAD_TRANSACTIONS_SUCCESS:\n return {\n ...state,\n loading: false,\n success: true,\n failure: false,\n total: action.payload.total,\n moonaFunding: action.payload.moonaFunding,\n error: ''\n }\n case LOAD_TRANSACTIONS_FAILURE:\n return {\n ...state,\n loading: false,\n success: false,\n failure: true,\n error: action.payload.error\n }\n\n case LOAD_TRANSACTIONS_ERROR:\n return {\n ...state,\n error: action.payload.error\n }\n case RESET_TRANSACTIONS:\n return {\n ...initialTransactionsState\n }\n\n default:\n return state\n }\n}\n","import { takeLatest, call, fork, put } from 'redux-saga/effects'\n\nimport { API, graphqlOperation, Auth } from 'aws-amplify'\n\nimport {\n setPwdSuccess,\n userError,\n setUserMailAndId,\n createUserFailure,\n loadUser,\n fetchAccountLink,\n fetchAccountLinkSuccess,\n setKeys\n} from './actions'\n\nimport {\n SET_FIRST_PWD,\n UPDATE_PWD,\n LOAD_USER_ACCOUNT_LINK,\n CREATE_USER_REQUEST,\n FINALIZE_REGISTRATION,\n SetFirstPwdAction,\n UpdatePwdAction,\n FinalizeRegistration,\n LoadUserLinkAction,\n CreateUserRequestAction,\n LOAD_KEYS,\n LoadKeys\n} from './types'\nimport {\n createMoonaMerchant,\n finaliseMerchantRegistration,\n getStripeDashboardLink,\n keysByMerchantId,\n setUserFirstPassword\n} from 'graphql/queries'\nimport { redirectToStripe } from './api'\nimport { check } from './utils'\nimport { loadPayoutStatus } from '../payout/actions'\nimport { setFinalizeRegistrationStatus } from '../auth/actions'\n\nfunction* finalizeRegistration(action: FinalizeRegistration) {\n try {\n const { state, code } = action.payload\n const params = { id: state, token: code }\n\n const finaliseMerchantResult = yield call(\n [API, 'graphql'],\n graphqlOperation(finaliseMerchantRegistration, params)\n )\n\n const merchantResult = check(\n finaliseMerchantResult,\n 'finaliseMerchantRegistration'\n )\n\n yield put(setFinalizeRegistrationStatus({ status: 'done' }))\n\n window.history.replaceState(\n null,\n window.document.title,\n window.location.pathname\n )\n\n yield put(\n loadUser({\n firstName: merchantResult.body.merchant.firstname,\n lastName: merchantResult.body.merchant.lastname,\n email: merchantResult.body.merchant.email,\n phone: merchantResult.body.merchant.phone,\n stripeId: merchantResult.body.merchant.stripeId,\n id: merchantResult.body.merchant.id,\n businessUrl: merchantResult.body.merchant.website,\n businessDescription: merchantResult.body.merchant.businessDescription,\n companyType: merchantResult.body.merchant.companyType\n })\n )\n\n const { stripeId } = merchantResult.body.merchant\n\n yield put(loadPayoutStatus(stripeId))\n\n yield put(fetchAccountLink(stripeId))\n\n // yield put(loadPayoutRequest(stripeId))\n // yield put(loadTableRequest(stripeId))\n // yield put(createTransactionsRequest(stripeId))\n } catch (e) {\n console.log(e)\n window.location.href = `${window.location.origin}/login`\n }\n}\n\nfunction* watchFinalizeRegistration() {\n yield takeLatest(FINALIZE_REGISTRATION, finalizeRegistration)\n}\n\nfunction* createMerchantAction(action: CreateUserRequestAction) {\n try {\n const { userSub }: { userSub: string } = yield call([Auth, 'signUp'], {\n username: action.payload.email.toLowerCase(),\n password: action.payload.password,\n clientMetadata: {\n group: 'merchant'\n }\n })\n\n yield put(\n setUserMailAndId({ email: action.payload.email.toLowerCase(), moonaId: userSub })\n )\n\n const {\n email,\n firstname,\n lastname,\n\n phone,\n businessUrl,\n businessDescription,\n companyType,\n annualTurnover,\n ecommerceSolution\n } = action.payload\n\n const result = yield call(\n [API, 'graphql'],\n graphqlOperation(createMoonaMerchant, {\n email: email.toLowerCase(),\n firstname,\n lastname,\n phone,\n website: businessUrl,\n businessUrl,\n businessDescription,\n companyType,\n annualTurnover,\n ecommerceSolution,\n token: userSub\n })\n )\n\n const moonaMerchantData = check(result, 'createMoonaMerchant')\n const newMerchant = moonaMerchantData.body.merchant\n\n redirectToStripe({\n id: newMerchant.id,\n email: newMerchant.email,\n firstName: newMerchant.firstname,\n lastName: newMerchant.lastname,\n businessUrl: newMerchant.website,\n phone: newMerchant.phone,\n businessDescription: newMerchant.businessDescription,\n companyType: newMerchant.companyType\n })\n } catch (error) {\n console.log('error catché: ', error)\n let msg = ''\n switch (error.code) {\n case 'UsernameExistsException':\n msg = 'Email already registered'\n break\n case 'InvalidParameterException':\n msg = 'Email and password does not match'\n break\n\n default:\n msg = 'ERROR'\n break\n }\n if (error.moonaId) {\n console.log('catch error with moonaid, deleting user')\n }\n yield put(createUserFailure({ error: msg }))\n }\n}\n\nfunction* watchCreateUserRequest() {\n yield takeLatest(CREATE_USER_REQUEST, createMerchantAction)\n}\n\nfunction* loadKeysAction(action: LoadKeys) {\n try {\n const result = yield call(\n [API, 'graphql'],\n graphqlOperation(keysByMerchantId, {\n merchantId: action.payload.id\n })\n )\n const {\n publishableKeyLive,\n publishableKeyTest,\n secretKeyLive,\n secretKeyTest\n } = result.data.keysByMerchantId.items[0]\n\n yield put(\n setKeys({\n publishableKeyLive,\n publishableKeyTest,\n secretKeyLive,\n secretKeyTest\n })\n )\n // yield put(setPwdSuccess({ password: action.payload.password }))\n } catch (e) {\n console.log(e)\n }\n}\nfunction* watchLoadKeysRequest() {\n yield takeLatest(LOAD_KEYS, loadKeysAction)\n}\n\nfunction* setFirstPwd(action: SetFirstPwdAction) {\n const { email, password } = action.payload\n try {\n const result = yield call(\n [API, 'graphql'],\n graphqlOperation(setUserFirstPassword, {\n email: email.toLowerCase(),\n newPassword: password\n })\n )\n check(result, 'setUserFirstPassword')\n yield put(setPwdSuccess({ password: action.payload.password }))\n } catch (e) {\n console.log('an error occured when try to set the password', e)\n let msg = ''\n switch (e.code) {\n case 'ERROR-MOONA-EXPIRED-LINK':\n msg =\n 'An error occurred when trying to set your password: ERROR-MOONA-EXPIRED-LINK'\n break\n }\n yield put(\n userError({\n error: msg || 'An error occurred when trying to set your password'\n })\n )\n }\n}\n\nfunction* watchSetFirstPwdRequest() {\n yield takeLatest(SET_FIRST_PWD, setFirstPwd)\n}\n\nfunction* loadAccountLink(action: LoadUserLinkAction) {\n const { stripeId } = action.payload\n\n try {\n const result = yield call(\n [API, 'graphql'],\n graphqlOperation(getStripeDashboardLink, {\n stripeUserId: stripeId\n })\n )\n\n const linkData = check(result, 'getStripeDashboardLink')\n\n yield put(fetchAccountLinkSuccess({ accountLink: linkData.body.url }))\n } catch (e) {\n console.log('loadAccountLink error', e.code, e.message)\n\n yield put(\n userError({\n error: 'An error occured while loading account link'\n })\n )\n }\n}\n\nfunction* watchFetchAccountLinkRequest() {\n yield takeLatest(LOAD_USER_ACCOUNT_LINK, loadAccountLink)\n}\n\nfunction* updatePwd(action: UpdatePwdAction) {\n const { username, code, password } = action.payload\n try {\n yield call([Auth, 'forgotPasswordSubmit'], username.toLowerCase(), code, password)\n\n yield put(setPwdSuccess({ password: action.payload.password }))\n } catch (e) {\n console.log('an error occured when try to update the password', e)\n yield put(\n userError({\n error: 'An error occurred when trying to update your password'\n })\n )\n }\n}\n\nfunction* watchUpdatePwdRequest() {\n yield takeLatest(UPDATE_PWD, updatePwd)\n}\n\nconst usersSagas = [\n fork(watchSetFirstPwdRequest),\n fork(watchUpdatePwdRequest),\n fork(watchCreateUserRequest),\n fork(watchFinalizeRegistration),\n fork(watchFetchAccountLinkRequest),\n fork(watchLoadKeysRequest)\n]\nexport default usersSagas\n","import { AppState } from './features/types'\n\nconst TTL = 30 * 60 * 1000 // 30minutes\n// type PERSISTED_STATE = Pick\n\ntype ITEM = {\n expiry: number\n data: AppState\n}\nexport const loadState = () => {\n try {\n const serializedState = localStorage.getItem('state')\n if (serializedState === null) {\n return undefined\n }\n const item: ITEM = JSON.parse(serializedState)\n const now = new Date()\n if (now.getTime() > item.expiry) {\n // If the item is expired, delete the item from storage\n // and return undefined so reducers inititialized themselves on their own\n localStorage.removeItem('state')\n return undefined\n }\n\n return item.data\n } catch (err) {\n return undefined\n }\n}\n\nexport const deleteState = () => {\n try {\n localStorage.removeItem('state')\n } catch (err) {\n console.log('err', err)\n return undefined\n }\n}\n\nexport const saveState = (state: AppState) => {\n try {\n const now = new Date()\n const item: ITEM = {\n data: {\n ...state,\n auth: {\n ...state.auth,\n forgotPasswordLoading: false,\n forgotPasswordSuccess: false,\n forgotPasswordFailure: false,\n finalizeRegistrationStatus: 'pending',\n loginfailure: false,\n error: ''\n },\n users: {\n ...state.users,\n keys: {\n publishableKeyLive: '',\n publishableKeyTest: '',\n secretKeyLive: '',\n secretKeyTest: ''\n }\n },\n payouts: {\n ...state.payouts,\n header: {\n error: null,\n success: false,\n loading: false,\n nextPayout: null,\n lastPayout: null\n },\n table: {\n rows: [],\n filter: '',\n pageIndex: 0,\n hasMore: false,\n error: null,\n success: false,\n loading: false\n }\n },\n payout: {\n ...state.payout,\n payoutsEnabledLoading: true\n }\n },\n expiry: now.getTime() + TTL\n }\n const serializedState = JSON.stringify(item)\n localStorage.setItem('state', serializedState)\n } catch (err) {\n // Ignore write errors.\n }\n}\n","import { call, put, takeEvery, fork } from 'redux-saga/effects'\nimport {\n loggedIn,\n loggableSuccess,\n loginFail,\n createForgotPasswordSuccess,\n createForgotPasswordFailure\n} from './actions'\nimport {\n LOGIN,\n LOGOUT,\n LOGGABLE,\n LogginAction,\n FORGOT_PASSWORD,\n ForgotPasswordAction\n} from './types'\nimport { loadUser, clearUser, fetchAccountLink } from '../users/actions'\n\nimport { API, Auth, graphqlOperation } from 'aws-amplify'\nimport { merchantsByEmail } from 'graphql/queries'\nimport { redirectToStripe } from '../users/api'\nimport { loadPayoutRequest, loadPayoutStatus } from '../payout/actions'\nimport { loadTableRequest } from '../table/actions'\nimport { createTransactionsRequest } from '../transactions/actions'\nimport { deleteState } from 'state/localStorage'\n// import { now } from 'lodash'\n\n// const TTL = 20 * 60 * 1000 //20 minutes in milliseconds\n\nfunction* authenticate(action: LogginAction) {\n var { login, password } = action.payload\n\n login = login.toLowerCase()\n\n try {\n yield call([Auth, 'signIn'], {\n username: login,\n password: password\n })\n\n const merchantData = yield call(\n [API, 'graphql'],\n graphqlOperation(merchantsByEmail, { email: login })\n )\n\n if (\n merchantData.data.merchantsByEmail.items &&\n merchantData.data.merchantsByEmail.items.length > 0\n ) {\n const merchant = merchantData.data.merchantsByEmail.items[0]\n if (merchant.stripeId) {\n yield put(loadPayoutStatus(merchant.stripeId))\n\n yield put(\n loadUser({\n firstName: merchant.firstname,\n lastName: merchant.lastname,\n email: merchant.email,\n phone: merchant.phone,\n stripeId: merchant.stripeId,\n id: merchant.id,\n businessUrl: merchant.website,\n businessDescription: merchant.businessDescription,\n companyType: merchant.companyType,\n status: merchant.status\n })\n )\n\n const { stripeId } = merchant\n yield put(fetchAccountLink(stripeId))\n yield put(loadPayoutRequest(stripeId))\n yield put(loadTableRequest(stripeId))\n yield put(createTransactionsRequest(stripeId))\n\n // localStorage.setItem(\n // 'token',\n // JSON.stringify({\n // expiry: now() + TTL\n // })\n // )\n\n yield put(loggedIn())\n } else {\n redirectToStripe({\n id: merchant.id,\n email: merchant.email,\n firstName: merchant.firstname,\n lastName: merchant.lastname,\n businessUrl: merchant.website,\n phone: merchant.phone,\n businessDescription: merchant.businessDescription,\n companyType: merchant.companyType\n })\n }\n } else {\n yield put(loginFail())\n }\n } catch (error) {\n yield put(loginFail())\n }\n}\n\nfunction* watchAuth() {\n yield takeEvery(LOGIN, authenticate)\n}\n\nfunction* logout() {\n deleteState()\n yield put(clearUser())\n}\n\nfunction* watchLogout() {\n yield takeEvery(LOGOUT, logout)\n}\n\nfunction* loggable() {\n yield put(loggableSuccess(true))\n}\n\nfunction* watchLoggable() {\n yield takeEvery(LOGGABLE, loggable)\n}\n\nfunction* forgotPasswordGen(action: ForgotPasswordAction) {\n try {\n yield call([Auth, 'forgotPassword'], action.payload.login, {\n group: 'merchant'\n })\n yield put(createForgotPasswordSuccess())\n } catch (error) {\n console.log(error)\n let msg = ''\n if (error.code === 'LimitExceededException') {\n msg = action.payload.messages.limitExceededException\n console.log(error)\n } else {\n msg = action.payload.messages.defaultException\n console.log('error forgot pwd in cognito', error)\n }\n yield put(createForgotPasswordFailure({ error: msg }))\n }\n}\n\nfunction* watchForgotPassword() {\n yield takeEvery(FORGOT_PASSWORD, forgotPasswordGen)\n}\n\nconst authSagas = [\n fork(watchAuth),\n fork(watchLoggable),\n fork(watchLogout),\n fork(watchForgotPassword)\n]\nexport default authSagas\n","import { call, put, takeEvery, fork } from 'redux-saga/effects'\n\nimport {\n CREATE_PAYOUT_REQUEST,\n LOAD_PAYOUT_REQUEST,\n LoadPayoutRequest,\n CreatePayoutRequest,\n LOAD_PAYOUT_STATUS,\n LoadPayoutStatus\n} from './types'\nimport {\n createPayoutSuccess,\n createPayoutFailure,\n loadPayoutSuccess,\n loadPayoutFailure,\n loadPayoutRequest,\n setPayoutStatus\n} from './actions'\nimport { API, graphqlOperation } from 'aws-amplify'\nimport { check } from '../users/utils'\nimport {\n getMerchantBalance,\n getMerchantInformation,\n payoutNow\n} from 'graphql/queries'\n\nfunction* payout(action: CreatePayoutRequest) {\n try {\n const result = yield call(\n [API, 'graphql'],\n graphqlOperation(payoutNow, { stripeUserId: action.payload.stripeId })\n )\n\n check(result, 'payoutNow')\n\n yield put(loadPayoutRequest(action.payload.stripeId))\n yield put(createPayoutSuccess())\n } catch (error) {\n console.log('error with payout', error)\n yield put(createPayoutFailure({ error: 'error from stripe' }))\n }\n\n /* Simulate success */\n // yield put(createPayoutSuccess())\n\n /* Simulate error */\n // yield put(createPayoutFailure({ error: 'error from stripe' }))\n}\n\nfunction* watchPayout() {\n yield takeEvery(CREATE_PAYOUT_REQUEST, payout)\n}\n\nfunction* loadPayout(action: LoadPayoutRequest) {\n try {\n const payoutData = yield call(\n [API, 'graphql'],\n graphqlOperation(getMerchantBalance, {\n stripeUserId: action.payload.stripeId\n })\n )\n\n const payout = check(payoutData, 'getMerchantBalance')\n\n yield put(loadPayoutSuccess(payout.body.amount / 100))\n } catch (error) {\n console.log('loadPayout error', error.code, error.message)\n yield put(loadPayoutFailure({ error: 'error from stripe' }))\n }\n}\n\nfunction* watchLoadPayout() {\n yield takeEvery(LOAD_PAYOUT_REQUEST, loadPayout)\n}\n\nfunction* loadPayoutStatusAction(action: LoadPayoutStatus) {\n if (!action.payload.stripeId) {\n return\n }\n try {\n const merchantInformationResult = yield call(\n [API, 'graphql'],\n graphqlOperation(getMerchantInformation, {\n stripeUserId: action.payload.stripeId\n })\n )\n\n const merchantInformationData = check(\n merchantInformationResult,\n 'getMerchantInformation'\n )\n\n yield put(\n setPayoutStatus(merchantInformationData.body.merchant.payouts_enabled)\n )\n } catch (error) {\n console.log('loadPayoutStatus error', error.code, error.message)\n yield put(loadPayoutFailure({ error: 'error from stripe' }))\n }\n}\n\nfunction* watchLoadPayoutStatus() {\n yield takeEvery(LOAD_PAYOUT_STATUS, loadPayoutStatusAction)\n}\n\nconst payoutSagas = [\n fork(watchPayout),\n fork(watchLoadPayout),\n fork(watchLoadPayoutStatus)\n]\nexport default payoutSagas\n","import { fork, takeLatest, call, put } from 'redux-saga/effects'\n\nimport {\n LOAD_PAYOUTS_HEADER_REQUEST,\n LOAD_PAYOUTS_TABLE_REQUEST,\n LoadPayoutsHeaderRequest,\n LoadPayoutsTableRequest,\n Payout\n} from './types'\nimport { check } from '../users/utils'\nimport { API, graphqlOperation } from 'aws-amplify'\n\nimport {\n getLastPayout,\n getNextPayout,\n getPayouts\n} from '../../../graphql/queries'\nimport {\n loadPayoutsHeaderFailure,\n loadPayoutsHeaderSuccess,\n loadPayoutsTableFailure,\n loadPayoutsTableSuccess\n} from './actions'\n\nfunction* fetchPayoutsHeader(action: LoadPayoutsHeaderRequest) {\n try {\n const getNextPayoutResult = yield call(\n [API, 'graphql'],\n graphqlOperation(getNextPayout, { stripeUserId: action.payload.stripeId })\n )\n const getLastPayoutResult = yield call(\n [API, 'graphql'],\n graphqlOperation(getLastPayout, { stripeUserId: action.payload.stripeId })\n )\n const nextPayout = check(getNextPayoutResult, 'getNextPayout')\n const lastPayout = check(getLastPayoutResult, 'getLastPayout')\n\n yield put(\n loadPayoutsHeaderSuccess({\n nextPayout: 'id' in nextPayout.payout ? nextPayout.payout : null,\n lastPayout: 'id' in lastPayout.payout ? lastPayout.payout : null\n })\n )\n } catch (error) {\n yield put(loadPayoutsHeaderFailure({ error: error.message }))\n }\n}\n\nfunction* watchPayoutsHeader() {\n yield takeLatest(LOAD_PAYOUTS_HEADER_REQUEST, fetchPayoutsHeader)\n}\n\nfunction* fetchPayoutsTable(action: LoadPayoutsTableRequest) {\n try {\n const { stripeId, offset, limit } = action.payload\n const result = yield call(\n [API, 'graphql'],\n graphqlOperation(getPayouts, { stripeUserId: stripeId, offset, limit })\n )\n const payouts: {\n statusCode: number\n body: { hasMore: boolean; payoutsList: Array }\n } = check(result, 'getPayouts')\n yield put(\n loadPayoutsTableSuccess({\n rows: payouts.body.payoutsList.map(payout => ({\n bank: payout.bank,\n status: payout.status,\n id: payout.id,\n amount: payout.amount,\n created: payout.created,\n arrivalDate: payout.arrival_date\n })),\n hasMore: payouts.body.hasMore,\n append: !!offset\n })\n )\n } catch (error) {\n yield put(loadPayoutsTableFailure({ error: error.message }))\n }\n}\n\nfunction* watchPayoutsTable() {\n yield takeLatest(LOAD_PAYOUTS_TABLE_REQUEST, fetchPayoutsTable)\n}\n\nconst payoutsSagas = [fork(watchPayoutsHeader), fork(watchPayoutsTable)]\nexport default payoutsSagas\n","import { put, takeEvery, fork, call } from 'redux-saga/effects'\n\nimport { CREATE_REFUND_REQUEST, CreateRefundRequest } from './types'\nimport { createRefundSuccess, createRefundFailure } from './actions'\nimport { API, graphqlOperation } from 'aws-amplify'\nimport { check } from '../users/utils'\nimport { refundTransactions } from 'graphql/queries'\nimport { loadPayoutRequest } from '../payout/actions'\nimport { clearSearchEmail, loadTableRequest } from '../table/actions'\nimport { createTransactionsRequest } from '../transactions/actions'\n\nfunction* refund(action: CreateRefundRequest) {\n const {\n stripeId,\n transferId,\n transferMoonaId,\n transferShippingId,\n amount,\n payback,\n currency,\n fromDashboard\n } = action.payload\n try {\n const refundResult = yield call(\n [API, 'graphql'],\n graphqlOperation(refundTransactions, {\n transferId,\n transferMoonaId,\n transferShippingId,\n amount,\n fromDashboard\n })\n )\n\n check(refundResult, 'refundTransactions')\n const { isFullRefund } = JSON.parse(refundResult.data.refundTransactions)\n\n yield put(clearSearchEmail())\n yield put(loadPayoutRequest(stripeId))\n yield put(loadTableRequest(stripeId))\n yield put(createTransactionsRequest(stripeId))\n\n yield put(\n createRefundSuccess({\n isFullRefund,\n amount,\n payback,\n currency\n })\n )\n\n /* To test success */\n // yield put(\n // createRefundSuccess({\n // amount: 5,\n // payback: 5\n // })\n // )\n\n /* To test failure */\n // yield put(createRefundFailure({ error: 'error from stripe' }))\n } catch (error) {\n yield put(\n createRefundFailure({\n error: 'error from stripe',\n amount,\n payback,\n currency\n })\n )\n }\n}\n\nfunction* watchRefund() {\n yield takeEvery(CREATE_REFUND_REQUEST, refund)\n}\n\nconst refundSagas = [fork(watchRefund)]\nexport default refundSagas\n","import { call, put, takeEvery, fork } from 'redux-saga/effects'\n\nimport {\n LoadDataRequest,\n LOAD_DATA_REQUEST,\n ServerTransactionRow,\n TransactionRow\n} from './types'\nimport { loadTableSuccess, loadTableFailure } from './actions'\nimport { API, graphqlOperation } from 'aws-amplify'\nimport { getTransactionsList } from 'graphql/queries'\nimport { check } from '../users/utils'\nimport { isNaN } from 'formik'\n\nfunction* table(action: LoadDataRequest) {\n try {\n const { stripeId, offset, limit, email } = action.payload\n\n const tableResult = yield call(\n [API, 'graphql'],\n graphqlOperation(getTransactionsList, {\n stripeUserId: stripeId,\n offset,\n limit,\n email\n })\n )\n\n const tableData = check(tableResult, 'getTransactionsList')\n const { transactionsList, hasMore } = tableData.body as {\n transactionsList: ServerTransactionRow[]\n hasMore: boolean\n }\n const transactions: TransactionRow[] = transactionsList\n .map(\n ({\n orderId,\n customerEmail,\n amount: amountWithCentims,\n datePayment,\n currency,\n moonaFunding: moonaFundingWithCentims,\n transactions,\n type,\n reversed,\n isLastPartialRefund,\n amountReversed\n }) => {\n const amount = +amountWithCentims\n const moonaFunding = moonaFundingWithCentims\n ? +moonaFundingWithCentims\n : 0\n const total = (() => {\n if (type === 'refund') {\n if (!reversed) {\n // here, the transaction has not been fully refunded\n return amount\n }\n if (\n reversed &&\n amount !== amountReversed &&\n isLastPartialRefund\n ) {\n // here, it is a partial refund that complete a refund\n return amount + moonaFunding\n }\n if (reversed && amount !== amountReversed) {\n // here, the transaction has been partially refunded\n return amount\n }\n if (reversed && amount === amountReversed) {\n // here, the transaction has been fully refunded\n return amount + moonaFunding\n }\n }\n return amount + moonaFunding\n })()\n\n const isRefund = type === 'refund'\n\n return {\n id: orderId || 'todo',\n customer: customerEmail,\n total: isRefund ? -total : total,\n amount: isRefund ? -amount : amount,\n payback: isRefund ? -moonaFunding : moonaFunding,\n date: datePayment,\n currency,\n isLastPartialRefund,\n refund: (() => {\n if (type === 'moona-discount' && reversed ? 'Refunded' : '') {\n return 'Refunded'\n }\n if (type === 'refund') return 'Refunded'\n return ''\n })() as TransactionRow['refund'],\n transactions: transactions,\n amountReversed: amountReversed,\n reversed,\n type\n }\n }\n )\n .filter(transaction => {\n if (\n !transaction.type ||\n !transaction.date ||\n isNaN(transaction.amount)\n ) {\n return false\n }\n return true\n })\n\n yield put(\n loadTableSuccess({\n data: transactions,\n hasMore,\n append: (() => {\n if (offset) return true\n if (email) return false\n return false\n })()\n })\n )\n } catch (error) {\n let msg = ''\n switch (error.code) {\n case 'ERROR-GET-TRANSACTIONS-LIST-003':\n msg = 'ERROR-GET-TRANSACTIONS-LIST-003'; //'Customer doesn\\'t exist'\n break\n case 'ERROR-GET-TRANSACTIONS-LIST-004':\n msg = 'ERROR-GET-TRANSACTIONS-LIST-004'; //'No payments for this customer'\n break\n case 'ERROR-GET-TRANSACTIONS-LIST-005':\n msg = 'ERROR-GET-TRANSACTIONS-LIST-005'; //'No payments for this customer on your website'\n break \n default:\n msg = 'error from stripe'\n break\n }\n\n yield put(loadTableFailure({ error: msg }))\n }\n}\n\nfunction* watchTable() {\n yield takeEvery(LOAD_DATA_REQUEST, table)\n}\n\nconst tableSagas = [fork(watchTable)]\nexport default tableSagas\n","import { call, put, takeEvery, fork } from 'redux-saga/effects'\n\nimport { LOAD_TRANSACTIONS_REQUEST, LoadTransactionsRequest } from './types'\nimport { createTransactionsSuccess, createTransactionsFailure } from './actions'\nimport { API, graphqlOperation } from 'aws-amplify'\nimport { getTotalTransactions } from 'graphql/queries'\nimport { check } from '../users/utils'\n\nfunction* transactions(action: LoadTransactionsRequest) {\n if (!action.payload.stripeId) {\n return\n }\n try {\n const transactionsResult = yield call(\n [API, 'graphql'],\n graphqlOperation(getTotalTransactions, {\n stripeUserId: action.payload.stripeId\n })\n )\n\n const transactionsData = check(transactionsResult, 'getTotalTransactions')\n\n const { total, moonaFunding } = transactionsData.body\n yield put(\n createTransactionsSuccess({\n total: total / 100,\n moonaFunding: moonaFunding / 100\n })\n )\n } catch (error) {\n console.log('error while getting transactions', error.code, error.message)\n yield put(createTransactionsFailure({ error: 'error from stripe' }))\n }\n}\n\nfunction* watchTransactions() {\n yield takeEvery(LOAD_TRANSACTIONS_REQUEST, transactions)\n}\n\nconst refundSagas = [fork(watchTransactions)]\nexport default refundSagas\n","import { combineReducers } from 'redux'\nimport UsersReducer from './users/reducers'\nimport AuthReducer from './auth/reducers'\n\nimport PayoutReducer from './payout/reducers'\nimport PayoutsReducer from './payouts/reducers'\nimport SessionReducer from './session/reducers'\nimport RefundReducer from './refund/reducers'\nimport TableReducer from './table/reducers'\nimport TransactionsReducer from './transactions/reducers'\n\nimport usersSagas from './users/sagas'\nimport authSagas from './auth/sagas'\nimport payoutSagas from './payout/sagas'\nimport payoutsSagas from './payouts/sagas'\nimport refundSagas from './refund/sagas'\nimport tableSagas from './table/sagas'\nimport transactionsSagas from './transactions/sagas'\n\nimport { all } from 'redux-saga/effects'\n\nexport const rootReducer = combineReducers({\n users: UsersReducer,\n auth: AuthReducer,\n payout: PayoutReducer,\n payouts: PayoutsReducer,\n session: SessionReducer,\n refund: RefundReducer,\n table: TableReducer,\n transactions: TransactionsReducer\n})\n\nexport function* rootSaga() {\n yield all([\n ...usersSagas,\n ...authSagas,\n ...payoutSagas,\n ...payoutsSagas,\n ...refundSagas,\n ...tableSagas,\n ...transactionsSagas\n ])\n}\n","import createSagaMiddleware from 'redux-saga'\nconst sagaMiddleware = createSagaMiddleware()\nexport default sagaMiddleware\n","import { applyMiddleware, createStore, Store, compose } from 'redux'\nimport { rootReducer, rootSaga } from './features'\nimport sagaMiddleware from './middlewares/sagas'\nimport { AppState } from './features/types'\nimport { loadState, saveState } from './localStorage'\nimport throttle from 'lodash/throttle'\n\ndeclare global {\n interface Window {\n __REDUX_DEVTOOLS_EXTENSION_COMPOSE__?: (a: R) => R\n }\n}\n\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\n\nexport default function configureStore(): Store {\n const persistedState = loadState()\n const middlewares = applyMiddleware(sagaMiddleware)\n const store = createStore(\n rootReducer,\n persistedState,\n composeEnhancers(middlewares)\n )\n sagaMiddleware.run(rootSaga)\n\n store.subscribe(\n throttle(() => {\n saveState({\n users: store.getState().users,\n payouts: store.getState().payouts,\n auth: store.getState().auth,\n payout: store.getState().payout,\n session: store.getState().session,\n refund: store.getState().refund,\n table: store.getState().table,\n transactions: store.getState().transactions\n })\n }, 1000)\n )\n\n return store\n}\n","import configureStore from './configureStore'\n\nexport default configureStore\n","import i18n from 'i18next'\nimport LngDetector from 'i18next-browser-languagedetector'\nimport { initReactI18next } from 'react-i18next'\nimport en from './en.json'\nimport fr from './fr.json'\n\nconst language =\n new URLSearchParams(window.location.search).get('language') || undefined\n\ni18n\n .use(LngDetector)\n .use(initReactI18next)\n .init({\n resources: { en, fr },\n fallbackLng: 'en',\n lng: language,\n\n interpolation: {\n escapeValue: false\n }\n })\n\nexport { i18n }\n","import { createGlobalStyle } from 'styled-components'\n\nexport const GlobalStyle = createGlobalStyle`\n :root {\n\n --color-black: #1C193E;\n --color-black-moona: #3F4045;\n --color-black-moona-02: #292B36;\n\n --color-success:#31DC9E;\n --color-success-hover: #1BC185;\n --color-success-disable:rgba(49, 220, 158, 0.5);\n --color-success-border: #BAFFE6;\n\n --color-danger:#FF4773;\n --color-danger-hover: #D72650;\n --color-danger-disable:rgba(255, 71, 115, 0.5);\n --color-danger-border: #FFA6BB;\n\n --color-grey-light: #E8E9ED;\n --color-grey-main: #87888D;\n --color-grey-light-1: #F5F6FA;\n --color-grey-dark: #F5F6FA;\n --color-grey-link: #C4C4C4;\n --color-red-danger: #FF4773;\n\n --color-purple-moona: #9540FF;\n --color-purple-dark: #6C1FCB;\n --color-purple-light:#ECDDFF;\n\n\n\n\n\n\n }\n\n\n * {\n margin:0;\n padding:0;\n }\n\n *, *::before, *::after {\n box-sizing:inherit;\n }\n\n html {\n box-sizing:border-box;\n font-size:62.5%\n }\n body {\n font-family:'Aeonik';\n\n min-height: 100vh;\n }\n`\n","/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"eu-west-2\",\n \"aws_cognito_region\": \"eu-west-2\",\n \"aws_user_pools_id\": \"eu-west-2_LxurTCEYg\",\n \"aws_user_pools_web_client_id\": \"1c9cf9t44lgkjt50u290fto59f\",\n \"oauth\": {},\n \"aws_cognito_username_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_social_providers\": [],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_appsync_graphqlEndpoint\": \"https://kmxpuvusejcp5o3k3rbd3nuf6m.appsync-api.eu-west-2.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"eu-west-2\",\n \"aws_appsync_authenticationType\": \"API_KEY\",\n \"aws_appsync_apiKey\": \"da2-itm2vrevifcibnbbsle6phwuua\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"apirestmoona\",\n \"endpoint\": \"https://8i1ehwat5g.execute-api.eu-west-2.amazonaws.com/prod\",\n \"region\": \"eu-west-2\"\n }\n ],\n \"aws_cognito_login_mechanisms\": [\n \"EMAIL\"\n ]\n};\n\n\nexport default awsmobile;\n","import 'react-app-polyfill/ie11'\nimport 'react-app-polyfill/stable'\nimport { syncViewHeightCssVariable } from 'common/style/view-height'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport { ModalProvider } from 'styled-react-modal'\n\nimport Routes from './routes'\nimport * as serviceWorker from './serviceWorker'\nimport { Provider } from 'react-redux'\nimport configureStore from './state'\nimport './i18n/config'\nimport { GlobalStyle } from './common/style'\n\nimport './common/style/css/global-styles.css'\nimport { ModalBackground } from './common/style/components/modal'\n\nimport Amplify from 'aws-amplify'\nimport awsExports from './aws-exports'\n\nAmplify.configure(awsExports)\n\nconst store = configureStore()\nsyncViewHeightCssVariable()\nReactDOM.render(\n \n \n \n \n \n ,\n document.getElementById('root')\n)\n\nserviceWorker.unregister()\n","export const CREATE_REFUND_REQUEST = 'CREATE_REFUND_REQUEST'\nexport const CREATE_REFUND_SUCCESS = 'CREATE_REFUND_SUCCESS'\nexport const CREATE_REFUND_FAILURE = 'CREATE_REFUND_FAILURE'\nexport const RESET_REFUND = 'RESET_REFUND'\n\nexport interface CreateRefundRequest {\n type: typeof CREATE_REFUND_REQUEST\n payload: {\n stripeId: string\n transferId: string\n transferMoonaId: string\n transferShippingId: string\n amount: number\n payback: number\n customer: string\n currency: string\n fromDashboard: boolean\n }\n}\nexport interface CreateRefundSuccess {\n type: typeof CREATE_REFUND_SUCCESS\n payload: {\n amount: number\n payback: number\n isFullRefund: boolean\n currency: string\n }\n}\nexport interface CreateRefundFailure {\n type: typeof CREATE_REFUND_FAILURE\n payload: {\n error: string\n amount: number\n payback: number\n currency: string\n }\n}\nexport interface ResetRefund {\n type: typeof RESET_REFUND\n}\n\nexport interface RefundState {\n loading: boolean\n success: boolean\n failure: boolean\n error: string\n amount: number\n isFullRefund: boolean\n payback: number\n customer: string\n currency: string\n}\n\nexport type RefundActionTypes =\n | CreateRefundRequest\n | CreateRefundSuccess\n | CreateRefundFailure\n | ResetRefund\n","import styled from 'styled-components'\nimport { extraSmall, tablet } from '../queries/media-queries'\nimport congratulations from './congratulations.svg'\nimport login from './login.svg'\nimport { NameProps } from './buttons'\nimport { baseFooterTextCss } from './Typography'\nexport const Container = styled.div`\n width: 100%;\n`\n\nexport const ColumnContainer = styled(Container)`\n display: flex;\n flex-direction: column;\n`\nexport const RowContainer = styled(Container)`\n display: flex;\n`\n\nexport const CenterColumnContainer = styled(ColumnContainer)`\n align-items: center;\n justify-content: center;\n`\n\nexport const FlexContentContainer = styled(Container)`\n font-size: 1.2rem;\n line-height: 2.1rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n color: var(--color-grey-main);\n margin-top: 2rem;\n margin-bottom: 4.4rem;\n`\nexport const DefaultContentContainer = styled(Container)`\n text-align: center;\n @media ${tablet} {\n }\n`\n\nexport const CenterContentContainer = styled(DefaultContentContainer)`\n display: flex;\n flex-direction: column;\n align-items: center;\n text-align: center;\n`\n\nexport const Section = styled.section`\n display: flex;\n flex-direction: column;\n align-items: center;\n position: relative;\n`\nexport const WideSection = styled.section`\n width: 100%;\n`\n\nexport const NameableDiv = styled.div.attrs(({ name }) => ({\n name: name\n}))``\n\nexport const NameableSpan = styled.span.attrs(({ name }) => ({\n name: name\n}))``\n\nexport const MarginContainer = styled.div<{\n mx?: string\n my?: string\n mt?: string\n mb?: string\n center?: boolean\n selfcenter?: boolean\n column?: boolean\n hflex?: boolean\n}>`\n margin-left: ${props => (props.mx ? `${props.mx}` : 0)};\n margin-right: ${props => (props.my ? `${props.my}` : 0)};\n margin-top: ${props => (props.mt ? `${props.mt}` : 0)};\n margin-bottom: ${props => (props.mb ? `${props.mb}` : 0)};\n ${({ hflex }) =>\n hflex &&\n `\n display: flex;\n align-items: center;\n `}\n\n ${({ center }) =>\n center &&\n `\n display: flex;\n justify-content: center;\n width:100%;\n\n `}\n ${({ selfcenter }) =>\n selfcenter &&\n `\n align-self: center;\n width:100%;\n\n `}\n ${({ column }) =>\n column &&\n `\n display: flex;\n flex-direction:column;\n `}\n`\nexport const BorderSection = styled(Section)`\n width: 100%;\n background: #ffffff;\n border: 1px solid #e8e9ed;\n border-radius: 16px;\n padding-top: 0.5rem;\n padding-bottom: 4rem;\n @media ${tablet} {\n padding-top: 4rem;\n height: 24.3rem;\n }\n`\n\nexport const GreySection = styled(Section)`\n width: 100%;\n height: 100vh;\n height: calc(var(--vh, 1vh) * 100);\n\n background: var(--color-grey-light);\n @media ${tablet} {\n height: 24.3rem;\n }\n`\n\nexport const FooterSection = styled.footer`\n ${baseFooterTextCss}\n text-align:center;\n`\n\nexport const CongratulationsSection = styled(Section)`\n padding: 2rem;\n @media ${tablet} {\n background-position: top -6rem center;\n background: url(${congratulations});\n background-repeat: no-repeat;\n padding-bottom: 4rem;\n padding-top: 4rem;\n }\n`\n\nexport const HeroSection = styled(Container)`\n height: 100vh;\n height: calc(var(--vh, 1vh) * 100);\n overflow-y: hidden;\n @media ${tablet} {\n overflow-y: auto;\n min-height: 100vh;\n }\n`\n\nexport const LoginSection = styled(Container)`\n background: url(${login}) var(--color-black);\n background-repeat: no-repeat;\n background-position: calc(50% - 10px) 19.4rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n min-height: 100vh;\n @media ${tablet} {\n justify-content: center;\n }\n`\nexport const GreyHeroSection = styled(HeroSection)`\n background: var(--color-grey-light);\n`\n\nexport const Main = styled.main`\n position: relative;\n`\nexport const CenteredMain = styled(Main)`\n width: 68rem;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n`\nexport const ContentWrapper = styled(Section)`\n width: 100%;\n @media ${tablet} {\n padding: 0 2rem;\n flex-direction: row;\n flex-wrap: wrap;\n padding: 3.8rem 5.6rem;\n justify-content: center;\n }\n`\n\nexport const Kpi = styled(Section)`\n padding: 3.2rem 3.2rem 4rem 3.2rem;\n width: 100%;\n background: #ffffff;\n border-radius: 16px;\n height: 21.2rem;\n border: 1px solid var(--color-grey-light);\n box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.04);\n border-radius: 16px;\n`\nexport const Row = styled(Container)`\n display: flex;\n flex-direction: column;\n @media ${tablet} {\n flex-direction: row;\n align-items: center;\n }\n`\n\nexport const KpiRow = styled(Row)`\n flex-direction: row;\n align-items: center;\n`\nexport const InputWrapper = styled(Container)``\n\nexport const SearchAndPaginateWrapper = styled(Container)`\n padding: 1.7rem 1rem 1.7rem 2.5rem;\n background: #ffffff;\n box-shadow: 0px 1px 0px var(--color-grey-light);\n border-top-left-radius: 16px;\n border-top-right-radius: 16px;\n border: 1px solid var(--color-grey-light);\n @media ${extraSmall} {\n padding: 1.7rem 0rem 1.7rem 0rem;\n }\n`\nexport const SearchAndPaginateLayout = styled(Section)`\n flex-direction: row;\n justify-content: space-between;\n`\n","import React, { ReactNode, CSSProperties } from 'react'\nimport Skeleton, { SkeletonTheme } from 'react-loading-skeleton'\nimport { MarginContainer } from 'common/style/components/Section'\n\ninterface MoonaSkeletonProps {}\n\ninterface BaseSkeletonProps {\n mx?: string\n my?: string\n mt?: string\n mb?: string\n center?: boolean\n selfcenter?: boolean\n count?: number\n duration?: number\n width?: string | number\n wrapper?: ReactNode\n height?: string | number\n circle?: boolean\n style?: CSSProperties\n className?: string\n}\nexport const BaseSkeleton: React.FC = ({\n mx,\n my,\n mt,\n mb,\n selfcenter = false,\n center = false,\n ...props\n}) => (\n \n \n \n \n \n)\n","import {\n LOGIN,\n LOGOUT,\n LOGGED_IN,\n LOGGABLE,\n LOGGABLE_SUCESS,\n LOGIN_FAIL,\n FORGOT_PASSWORD,\n FORGOT_PASSWORD_SUCCESS,\n FORGOT_PASSWORD_FAILURE,\n FORGOT_PASSWORD_ERROR,\n FORGOT_PASSWORD_RESET,\n FINALIZE_REGISTRATION_STATUS,\n BackMessages\n} from './types'\nimport { AppActions } from '../types'\n\nexport const loginRequest = (login: string, password: string): AppActions => {\n return {\n type: LOGIN,\n payload: {\n login,\n password\n }\n }\n}\n\nexport const logoutRequest = (): AppActions => {\n return {\n type: LOGOUT\n }\n}\n\nexport const loggedIn = (): AppActions => {\n return {\n type: LOGGED_IN\n }\n}\nexport const loginFail = (): AppActions => {\n return {\n type: LOGIN_FAIL\n }\n}\n\nexport const loggable = (userId: string): AppActions => {\n return {\n type: LOGGABLE,\n payload: {\n userId\n }\n }\n}\n\nexport const loggableSuccess = (loggable: boolean): AppActions => {\n return {\n type: LOGGABLE_SUCESS,\n payload: {\n loggable\n }\n }\n}\n\nexport const createForgotPasswordSuccess = (): AppActions => ({\n type: FORGOT_PASSWORD_SUCCESS\n})\nexport const createForgotPasswordFailure = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: FORGOT_PASSWORD_FAILURE,\n payload: {\n error\n }\n})\n\nexport const createForgotPasswordError = ({\n error\n}: {\n error: string\n}): AppActions => ({\n type: FORGOT_PASSWORD_ERROR,\n payload: {\n error\n }\n})\nexport const resetForgotPassword = (): AppActions => ({\n type: FORGOT_PASSWORD_RESET\n})\n\nexport const createForgotPasswordRequest = ({\n login,\n messages\n}: {\n login: string\n messages: BackMessages\n}): AppActions => ({\n type: FORGOT_PASSWORD,\n payload: {\n login,\n messages\n }\n})\n\nexport const setFinalizeRegistrationStatus = ({\n status\n}: {\n status: string\n}): AppActions => ({\n type: FINALIZE_REGISTRATION_STATUS,\n payload: {\n finalizeRegistrationStatus: status\n }\n})\n"],"sourceRoot":""}