@orderly.network/ui-connector 2.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,132 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _orderly_network_types from '@orderly.network/types';
3
+ import { AccountStatusEnum, NetworkId } from '@orderly.network/types';
4
+ import * as react from 'react';
5
+ import { PropsWithChildren, ReactElement } from 'react';
6
+ import { ButtonProps, DataTableProps } from '@orderly.network/ui';
7
+
8
+ type WalletConnectContentProps = {
9
+ initAccountState: AccountStatusEnum;
10
+ signIn: () => Promise<any>;
11
+ enableTrading: (remember: boolean) => Promise<any>;
12
+ enableTradingComplted?: () => Promise<void>;
13
+ onCompleted?: () => void;
14
+ close?: () => void;
15
+ refCode: string;
16
+ setRefCode: React.Dispatch<React.SetStateAction<string>>;
17
+ helpText?: string;
18
+ showRefCodeInput: boolean;
19
+ };
20
+ declare const WalletConnectContent: (props: WalletConnectContentProps) => react_jsx_runtime.JSX.Element;
21
+
22
+ declare const WalletConnectorModalId: "walletConnector";
23
+ declare const WalletConnectorSheetId: "walletConnectorSheet";
24
+ declare const WalletConnectorWidget: (props: any) => react_jsx_runtime.JSX.Element;
25
+
26
+ declare const useWalletConnectorBuilder: () => {
27
+ readonly enableTrading: (remember: boolean) => Promise<any>;
28
+ readonly initAccountState: _orderly_network_types.AccountStatusEnum;
29
+ readonly signIn: () => Promise<any>;
30
+ readonly enableTradingComplted: () => void;
31
+ readonly refCode: string;
32
+ readonly setRefCode: react.Dispatch<react.SetStateAction<string>>;
33
+ readonly helpText: string;
34
+ readonly showRefCodeInput: boolean;
35
+ };
36
+
37
+ type alertMessages = {
38
+ connectWallet?: string;
39
+ switchChain?: string;
40
+ enableTrading?: string;
41
+ signin?: string;
42
+ };
43
+
44
+ type AuthGuardProps$2 = React.ButtonHTMLAttributes<HTMLButtonElement> & {
45
+ fallback?: (props: {
46
+ validating: boolean;
47
+ status: AccountStatusEnum;
48
+ wrongNetwork: boolean;
49
+ }) => ReactElement;
50
+ /**
51
+ * Required state to be satisfied
52
+ * @default AccountStatusEnum.EnableTrading
53
+ */
54
+ status?: AccountStatusEnum;
55
+ bridgeLessOnly?: boolean;
56
+ buttonProps?: ButtonProps;
57
+ descriptions?: alertMessages;
58
+ labels?: alertMessages;
59
+ classNames?: {
60
+ root?: string;
61
+ description?: string;
62
+ };
63
+ networkId?: NetworkId;
64
+ };
65
+ declare const AuthGuard: {
66
+ (props: PropsWithChildren<AuthGuardProps$2>): react_jsx_runtime.JSX.Element;
67
+ displayName: string;
68
+ };
69
+
70
+ declare const AuthGuardDataTable: <RecordType extends unknown>(props: PropsWithChildren<DataTableProps<RecordType> & Omit<GuardViewProps, "status"> & {
71
+ status?: AccountStatusEnum | undefined;
72
+ classNames?: ({
73
+ root?: string | undefined;
74
+ header?: string | undefined;
75
+ body?: string | undefined;
76
+ footer?: string | undefined;
77
+ } & {
78
+ authGuardDescription?: string | undefined;
79
+ }) | undefined;
80
+ }>) => react_jsx_runtime.JSX.Element;
81
+ type GuardViewProps = {
82
+ status: AccountStatusEnum;
83
+ description?: alertMessages;
84
+ labels?: alertMessages;
85
+ className?: string;
86
+ visible?: boolean;
87
+ };
88
+
89
+ type AuthGuardProps$1 = {
90
+ /** default value is
91
+ * ```ts
92
+ * {
93
+ * connectWallet: "Please connect wallet before starting to trade",
94
+ * signIn: "Please sign in before starting to trade",
95
+ * enableTrading: "Please sign in before starting to trade",
96
+ * wrongNetwork: "Please switch to a supported network to continue.",
97
+ * }
98
+ * ```
99
+ */
100
+ hint?: {
101
+ connectWallet?: string;
102
+ signIn?: string;
103
+ enableTrading?: string;
104
+ wrongNetwork?: string;
105
+ };
106
+ status?: AccountStatusEnum;
107
+ };
108
+ declare const AuthGuardEmpty: {
109
+ (props: PropsWithChildren<AuthGuardProps$1>): react_jsx_runtime.JSX.Element;
110
+ displayName: string;
111
+ };
112
+
113
+ type AuthGuardProps = {
114
+ content?: string;
115
+ align?: "center" | "end" | "start";
116
+ alignOffset?: number;
117
+ side?: "top" | "right" | "bottom" | "left";
118
+ sideOffset?: number;
119
+ opactiy?: number;
120
+ tooltip?: {
121
+ connectWallet?: string;
122
+ signIn?: string;
123
+ enableTrading?: string;
124
+ wrongNetwork?: string;
125
+ };
126
+ };
127
+ declare const AuthGuardTooltip: {
128
+ (props: PropsWithChildren<AuthGuardProps>): react_jsx_runtime.JSX.Element;
129
+ displayName: string;
130
+ };
131
+
132
+ export { AuthGuard, AuthGuardDataTable, AuthGuardEmpty, AuthGuardTooltip, WalletConnectContent, type WalletConnectContentProps, WalletConnectorModalId, WalletConnectorSheetId, WalletConnectorWidget, useWalletConnectorBuilder };
@@ -0,0 +1,132 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _orderly_network_types from '@orderly.network/types';
3
+ import { AccountStatusEnum, NetworkId } from '@orderly.network/types';
4
+ import * as react from 'react';
5
+ import { PropsWithChildren, ReactElement } from 'react';
6
+ import { ButtonProps, DataTableProps } from '@orderly.network/ui';
7
+
8
+ type WalletConnectContentProps = {
9
+ initAccountState: AccountStatusEnum;
10
+ signIn: () => Promise<any>;
11
+ enableTrading: (remember: boolean) => Promise<any>;
12
+ enableTradingComplted?: () => Promise<void>;
13
+ onCompleted?: () => void;
14
+ close?: () => void;
15
+ refCode: string;
16
+ setRefCode: React.Dispatch<React.SetStateAction<string>>;
17
+ helpText?: string;
18
+ showRefCodeInput: boolean;
19
+ };
20
+ declare const WalletConnectContent: (props: WalletConnectContentProps) => react_jsx_runtime.JSX.Element;
21
+
22
+ declare const WalletConnectorModalId: "walletConnector";
23
+ declare const WalletConnectorSheetId: "walletConnectorSheet";
24
+ declare const WalletConnectorWidget: (props: any) => react_jsx_runtime.JSX.Element;
25
+
26
+ declare const useWalletConnectorBuilder: () => {
27
+ readonly enableTrading: (remember: boolean) => Promise<any>;
28
+ readonly initAccountState: _orderly_network_types.AccountStatusEnum;
29
+ readonly signIn: () => Promise<any>;
30
+ readonly enableTradingComplted: () => void;
31
+ readonly refCode: string;
32
+ readonly setRefCode: react.Dispatch<react.SetStateAction<string>>;
33
+ readonly helpText: string;
34
+ readonly showRefCodeInput: boolean;
35
+ };
36
+
37
+ type alertMessages = {
38
+ connectWallet?: string;
39
+ switchChain?: string;
40
+ enableTrading?: string;
41
+ signin?: string;
42
+ };
43
+
44
+ type AuthGuardProps$2 = React.ButtonHTMLAttributes<HTMLButtonElement> & {
45
+ fallback?: (props: {
46
+ validating: boolean;
47
+ status: AccountStatusEnum;
48
+ wrongNetwork: boolean;
49
+ }) => ReactElement;
50
+ /**
51
+ * Required state to be satisfied
52
+ * @default AccountStatusEnum.EnableTrading
53
+ */
54
+ status?: AccountStatusEnum;
55
+ bridgeLessOnly?: boolean;
56
+ buttonProps?: ButtonProps;
57
+ descriptions?: alertMessages;
58
+ labels?: alertMessages;
59
+ classNames?: {
60
+ root?: string;
61
+ description?: string;
62
+ };
63
+ networkId?: NetworkId;
64
+ };
65
+ declare const AuthGuard: {
66
+ (props: PropsWithChildren<AuthGuardProps$2>): react_jsx_runtime.JSX.Element;
67
+ displayName: string;
68
+ };
69
+
70
+ declare const AuthGuardDataTable: <RecordType extends unknown>(props: PropsWithChildren<DataTableProps<RecordType> & Omit<GuardViewProps, "status"> & {
71
+ status?: AccountStatusEnum | undefined;
72
+ classNames?: ({
73
+ root?: string | undefined;
74
+ header?: string | undefined;
75
+ body?: string | undefined;
76
+ footer?: string | undefined;
77
+ } & {
78
+ authGuardDescription?: string | undefined;
79
+ }) | undefined;
80
+ }>) => react_jsx_runtime.JSX.Element;
81
+ type GuardViewProps = {
82
+ status: AccountStatusEnum;
83
+ description?: alertMessages;
84
+ labels?: alertMessages;
85
+ className?: string;
86
+ visible?: boolean;
87
+ };
88
+
89
+ type AuthGuardProps$1 = {
90
+ /** default value is
91
+ * ```ts
92
+ * {
93
+ * connectWallet: "Please connect wallet before starting to trade",
94
+ * signIn: "Please sign in before starting to trade",
95
+ * enableTrading: "Please sign in before starting to trade",
96
+ * wrongNetwork: "Please switch to a supported network to continue.",
97
+ * }
98
+ * ```
99
+ */
100
+ hint?: {
101
+ connectWallet?: string;
102
+ signIn?: string;
103
+ enableTrading?: string;
104
+ wrongNetwork?: string;
105
+ };
106
+ status?: AccountStatusEnum;
107
+ };
108
+ declare const AuthGuardEmpty: {
109
+ (props: PropsWithChildren<AuthGuardProps$1>): react_jsx_runtime.JSX.Element;
110
+ displayName: string;
111
+ };
112
+
113
+ type AuthGuardProps = {
114
+ content?: string;
115
+ align?: "center" | "end" | "start";
116
+ alignOffset?: number;
117
+ side?: "top" | "right" | "bottom" | "left";
118
+ sideOffset?: number;
119
+ opactiy?: number;
120
+ tooltip?: {
121
+ connectWallet?: string;
122
+ signIn?: string;
123
+ enableTrading?: string;
124
+ wrongNetwork?: string;
125
+ };
126
+ };
127
+ declare const AuthGuardTooltip: {
128
+ (props: PropsWithChildren<AuthGuardProps>): react_jsx_runtime.JSX.Element;
129
+ displayName: string;
130
+ };
131
+
132
+ export { AuthGuard, AuthGuardDataTable, AuthGuardEmpty, AuthGuardTooltip, WalletConnectContent, type WalletConnectContentProps, WalletConnectorModalId, WalletConnectorSheetId, WalletConnectorWidget, useWalletConnectorBuilder };
package/dist/index.js ADDED
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var ui = require('@orderly.network/ui');
5
+ var types = require('@orderly.network/types');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var hooks = require('@orderly.network/hooks');
8
+ var reactApp = require('@orderly.network/react-app');
9
+ var uiChainSelector = require('@orderly.network/ui-chain-selector');
10
+
11
+ var z=e=>{let{title:t,description:n}=e;return jsxRuntime.jsxs(ui.Box,{position:"relative",className:"oui-pl-8",children:[jsxRuntime.jsxs(ui.Box,{children:[jsxRuntime.jsx(ui.Text,{as:"div",intensity:98,size:"sm",children:t}),jsxRuntime.jsx(ui.Text,{as:"div",intensity:54,size:"2xs",children:n})]}),jsxRuntime.jsx(ce,{...e})]})},ce=e=>{let{active:t,isLoading:n,isCompleted:s}=e;return jsxRuntime.jsx(ui.Match,{className:"oui-absolute oui-left-0 oui-top-1 oui-z-10",value:()=>s?"completed":n?"loading":t?"active":"normal",case:{loading:jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui.Spinner,{size:"sm",className:"oui-ml-1"})}),completed:jsxRuntime.jsx("div",{children:jsxRuntime.jsx(ui.CheckedCircleFillIcon,{opacity:1,className:"oui-text-[rgba(96,140,255,1)]"})})},default:jsxRuntime.jsx(ue,{active:!!t})})},ue=({active:e,className:t})=>jsxRuntime.jsx("div",{className:ui.cn("oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ml-2 oui-mt-1",t,e?"oui-bg-primary-light":"oui-bg-base-2")});var R=e=>{let{initAccountState:t=types.AccountStatusEnum.NotConnected}=e,[n,s]=react.useState(!0),{state:o}=hooks.useAccount(),[u,m]=react.useState(t),[a,f]=react.useState(0),[c,r]=react.useState(!1),[w]=hooks.useLocalStorage("oui-first-show-wallet-connector-dialog",void 0);react.useEffect(()=>()=>{localStorage.setItem("oui-first-show-wallet-connector-dialog","1");},[]),react.useEffect(()=>{m(o.status);},[o]);let y=react.useMemo(()=>{let i=[];return t<types.AccountStatusEnum.SignedIn&&i.push({key:"signIn",title:"Sign In",description:"Confirm you are the owner of this wallet"}),t<types.AccountStatusEnum.EnableTrading&&i.push({key:"enableTrading",title:"Enable Trading",description:"Enable secure access to our API for lightning fast trading"}),i},[]),W=()=>(r(!0),e.enableTrading(n).then(async i=>{r(!1),f(d=>d+1);try{await e.enableTradingComplted?.();}catch{}typeof e.onCompleted=="function"?e.onCompleted():typeof e.close=="function"&&e.close();},i=>{r(!1),i!==-1&&ui.toast.error(i.message??"User rejected the request");}).catch(i=>{r(!1);})),v=()=>(r(!0),e.signIn().then(i=>{f(d=>d+1),W();},i=>{r(!1),i!==-1&&ui.toast.error("User rejected the request");}).catch(i=>{r(!1);}));return jsxRuntime.jsxs(ui.Box,{id:"oui-wallet-connect-dialog-content",className:"oui-font-semibold",children:[jsxRuntime.jsx(ui.Text,{intensity:54,size:"xs",children:"Your previous access has expired, you will receive a signature request to enable trading. Signing is free and will not send a transaction."}),jsxRuntime.jsxs(ui.Box,{p:4,my:6,intensity:600,r:"lg",className:"oui-space-y-5",position:"relative",children:[y.map((i,d)=>jsxRuntime.jsx(z,{title:i.title,description:i.description,isCompleted:a>d,active:a===d,isLoading:c&&a===d},i.key)),y.length>1&&jsxRuntime.jsx(ui.Box,{position:"absolute",height:"38px",left:28,top:18,zIndex:0,children:jsxRuntime.jsx(ui.Divider,{lineStyle:"dashed",direction:"vertical",intensity:16,className:"oui-h-full"})})]}),e.showRefCodeInput&&y.length==2&&jsxRuntime.jsx(Te,{...e}),w&&jsxRuntime.jsxs(ui.Flex,{justify:"between",itemAlign:"center",children:[jsxRuntime.jsx(Se,{}),jsxRuntime.jsx(ui.Switch,{color:"primary",checked:n,onCheckedChange:s,disabled:c,className:"data-[state=checked]:oui-bg-[#3347FD]"})]}),jsxRuntime.jsx(ui.Flex,{justify:"center",mt:8,children:jsxRuntime.jsx(ui.Box,{width:"45%",children:jsxRuntime.jsx(xe,{state:u,signIn:v,enableTrading:W,loading:c,disabled:u>=types.AccountStatusEnum.EnableTrading})})})]})},xe=({state:e,signIn:t,enableTrading:n,loading:s,disabled:o})=>jsxRuntime.jsx(ui.Match,{value:()=>e<=types.AccountStatusEnum.NotSignedIn?"signIn":"enableTrading",case:{signIn:jsxRuntime.jsx(ui.Button,{fullWidth:!0,onClick:()=>t(),loading:s,disabled:o,children:"Sign In"}),enableTrading:jsxRuntime.jsx(ui.Button,{fullWidth:!0,onClick:()=>n(),loading:s,disabled:o,children:"Enable Trading"})}}),Te=e=>jsxRuntime.jsx(ui.TextField,{placeholder:"Referral code (Optional)",fullWidth:!0,label:"",value:e.refCode,onChange:t=>{e.setRefCode(t.target.value);},classNames:{label:"oui-text-base-contrast-54 oui-text-xs",input:"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm"},formatters:[ui.inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g)],onClear:()=>{e.setRefCode("");},autoComplete:"off",helpText:e.helpText,className:"oui-mb-4",color:e.helpText?"danger":void 0}),Se=()=>jsxRuntime.jsx(ui.Tooltip,{content:"Toggle this option to skip these steps next time you want to trade.",className:"oui-max-w-[300px]",children:jsxRuntime.jsx("button",{onClick:()=>{window.innerWidth>768||ui.modal.alert({title:"Remember me",message:jsxRuntime.jsx("span",{className:"oui-text-2xs oui-text-base-contrast/60",children:"Toggle this option to skip these steps next time you want to trade."})});},children:jsxRuntime.jsx(ui.Text,{intensity:54,size:"xs",className:"oui-underline oui-underline-offset-4 oui-decoration-dashed oui-decoration-base-contrast-36",children:"Remember me"})})});var B=()=>{let{account:e,state:t,createOrderlyKey:n,createAccount:s}=hooks.useAccount(),[o,u]=react.useState(""),[m,a]=react.useState(""),{trigger:f}=hooks.useLazyQuery(`/v1/public/referral/verify_ref_code?referral_code=${o}`);react.useEffect(()=>{let h=localStorage.getItem("referral_code");h!=null&&u(h);},[]);let{referral_code:c,isLoading:r}=hooks.useGetReferralCode(e.accountId),[w,{error:y,isMutating:W}]=hooks.useMutation("/v1/referral/bind","POST");react.useEffect(()=>{o.length===0&&a("");},[o]);let v=()=>{ui.toast.success("Wallet connected"),o.length>=4&&o.length<=10&&w({referral_code:o}).finally(()=>{localStorage.removeItem("referral_code");});},i=async()=>{if(o.length===0)return Promise.resolve(void 0);if(o.length>0&&(o.length<4||o.length>10))return Promise.resolve("The referral_code must be 4 to 10 characters long, only accept upper case roman characters and numbers");let{exist:h}=await f();return h===!1?Promise.resolve("This referral code does not exist."):Promise.resolve(void 0)},d=(c?.length||0)===0&&!r,re=async()=>{if(d){let h=await i();if(typeof h<"u")return a(h),Promise.reject(-1)}return a(""),s()};return {enableTrading:async h=>{if(d){let L=await i();if(typeof L<"u")return a(L),Promise.reject(-1)}return a(""),n(h)},initAccountState:t.status,signIn:re,enableTradingComplted:v,refCode:o,setRefCode:u,helpText:m,showRefCodeInput:d}};var A="walletConnector",k="walletConnectorSheet",G=e=>{let t=B();return jsxRuntime.jsx(R,{...t,...e})};ui.registerSimpleDialog(A,G,{size:"sm",title:"Connect wallet"});ui.registerSimpleSheet(k,G,{title:"Connect wallet"});var Y={connectWallet:"Connect wallet",switchChain:"Switch network",enableTrading:"Enable trading",signin:"Sign in"},Z={connectWallet:"Please Connect wallet before starting to trade",switchChain:"Please switch to a supported network to continue",enableTrading:"Please Enable trading before starting to trade",signin:"Please sign in before starting to trade"};var x=e=>{let{status:t=types.AccountStatusEnum.EnableTrading,buttonProps:n,fallback:s,descriptions:o,classNames:u,networkId:m,id:a,bridgeLessOnly:f}=e,{state:c}=hooks.useAccount(),{wrongNetwork:r}=reactApp.useAppContext(),w={...Y,...e.labels},y=react.useMemo(()=>typeof s<"u"?s({validating:c.validating,status:c.status,wrongNetwork:r}):c.validating?jsxRuntime.jsx(S,{angle:45,disabled:!0,loading:!0,description:o?.connectWallet,id:a,type:"button",...n,children:w.connectWallet}):jsxRuntime.jsx(He,{bridgeLessOnly:f,status:c.status,buttonProps:{...n,id:a,type:"button"},wrongNetwork:r,networkId:e.networkId,labels:w,descriptions:o}),[c.status,c.validating,n,r]);return jsxRuntime.jsx(ui.Either,{value:c.status>=t&&!r,left:y,children:e.children})},He=e=>{let{buttonProps:t,labels:n,descriptions:s}=e,{connectWallet:o}=reactApp.useAppContext(),{account:u}=hooks.useAccount(),m=hooks.useMediaQuery(types.MEDIA_TABLET),a=()=>{ui.modal.show(m?k:A).then(r=>{},r=>{});},f=async()=>{let r=await o();r&&(r.wrongNetwork?c():(r?.status??types.AccountStatusEnum.NotConnected)<types.AccountStatusEnum.EnableTrading&&a());},c=()=>{u.once("validate:end",r=>{r<types.AccountStatusEnum.EnableTrading?a():ui.toast.success("Wallet connected");}),ui.modal.show(uiChainSelector.ChainSelectorId,{networkId:e.networkId,bridgeLessOnly:e.bridgeLessOnly}).then(r=>{r.wrongNetwork||e.status>=types.AccountStatusEnum.Connected&&(e.status<types.AccountStatusEnum.EnableTrading?a():ui.toast.success("Wallet connected"));},r=>{});};return e.wrongNetwork?jsxRuntime.jsx(S,{color:"warning",onClick:()=>{c();},description:s?.switchChain,...t,children:n.switchChain}):jsxRuntime.jsx(ui.Match,{value:e.status,case:r=>{if(r<=types.AccountStatusEnum.NotConnected)return jsxRuntime.jsx(S,{size:"lg",onClick:()=>{f();},variant:"gradient",angle:45,description:s?.connectWallet,...t,children:n.connectWallet});if(r<=types.AccountStatusEnum.NotSignedIn)return jsxRuntime.jsx(S,{size:"lg",onClick:()=>{a();},angle:45,description:s?.signin,...t,children:n.signin})},default:jsxRuntime.jsx(S,{size:"lg",description:s?.enableTrading,...t,onClick:()=>a(),children:n.enableTrading})})};x.displayName="AuthGuard";var S=e=>{let{description:t,...n}=e;return jsxRuntime.jsxs(ui.Flex,{direction:"column",children:[jsxRuntime.jsx(ui.Button,{...n}),!!t&&jsxRuntime.jsx(ui.Box,{mt:4,className:"oui-leading-none",style:{lineHeight:0},children:jsxRuntime.jsx(ui.Text,{size:"2xs",intensity:36,children:t})})]})};var je=e=>{let{status:t=types.AccountStatusEnum.EnableTrading,labels:n,description:s,dataSource:o,...u}=e,m=reactApp.useDataTap(o,{accountStatus:t}),{state:a}=hooks.useAccount(),{wrongNetwork:f}=reactApp.useAppContext();return jsxRuntime.jsx(ui.DataTable,{...u,dataSource:m,ignoreLoadingCheck:f||a.status<t||e.ignoreLoadingCheck,emptyView:jsxRuntime.jsx(Je,{status:t,description:s,labels:n,className:e.classNames?.authGuardDescription,visible:!a.validating})})},Je=e=>{let t={...Z,...e.description};return e.visible?jsxRuntime.jsx(ui.Flex,{py:8,children:jsxRuntime.jsx(x,{status:e.status,labels:e.labels,descriptions:t,buttonProps:{size:"md"},children:jsxRuntime.jsx(ui.ExtensionSlot,{position:"emptyDataState"})})}):null};var ee=e=>{let{hint:t={connectWallet:"Please connect wallet before starting to trade",signIn:"Please sign in before starting to trade",enableTrading:"Please sign in before starting to trade",wrongNetwork:"Please switch to a supported network to continue."},status:n}=e;return jsxRuntime.jsx(ui.Box,{my:8,children:jsxRuntime.jsx(x,{status:n,descriptions:{...t,switchChain:t.wrongNetwork},children:e.children||jsxRuntime.jsx(ui.EmptyDataState,{})})})};ee.displayName="AuthGuardEmpty";var oe=e=>{let{opactiy:t=90,tooltip:n={connectWallet:"Please connect wallet before set up",signIn:"Please sign in before set up",enableTrading:"Please enable trading before set up",wrongNetwork:"Please switch to a supported network to set up"}}=e,{state:s}=hooks.useAccount(),o=!0,{wrongNetwork:u}=reactApp.useAppContext(),m=react.useMemo(()=>{if(u)return n?.wrongNetwork;switch(s.status){case types.AccountStatusEnum.NotConnected:return n?.connectWallet;case types.AccountStatusEnum.NotSignedIn:return n?.signIn;case types.AccountStatusEnum.DisabledTrading:return n?.enableTrading;case types.AccountStatusEnum.EnableTrading:return "";default:return e.content}},[e.content,s,o,n]),a=react.useMemo(()=>{switch(s.status){case types.AccountStatusEnum.NotConnected:case types.AccountStatusEnum.NotSignedIn:return t;case types.AccountStatusEnum.EnableTrading:return void 0;default:return}},[e.opactiy,s,o]);return jsxRuntime.jsx(ui.Tooltip,{content:m,className:"oui-text-2xs",align:e.align,alignOffset:e.alignOffset,side:e.side,sideOffset:e.sideOffset,children:jsxRuntime.jsx("div",{style:{opacity:a},children:e.children})})};oe.displayName="AuthGuardTooltip";
12
+
13
+ exports.AuthGuard = x;
14
+ exports.AuthGuardDataTable = je;
15
+ exports.AuthGuardEmpty = ee;
16
+ exports.AuthGuardTooltip = oe;
17
+ exports.WalletConnectContent = R;
18
+ exports.WalletConnectorModalId = A;
19
+ exports.WalletConnectorSheetId = k;
20
+ exports.WalletConnectorWidget = G;
21
+ exports.useWalletConnectorBuilder = B;
22
+ //# sourceMappingURL=out.js.map
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/component/walletConnectorContent.tsx","../src/component/step.tsx","../src/component/walletConnector.tsx","../src/component/useWalletConnectorBuilder.ts","../src/component/authGuard.tsx","../src/constants/message.ts","../src/component/authGuardDataTable.tsx","../src/component/authGuardEmpty.tsx","../src/component/authGuardTooltip.tsx"],"names":["useEffect","useMemo","useState","Box","Button","Divider","Flex","inputFormatter","Match","modal","Switch","Text","TextField","toast","Tooltip","AccountStatusEnum","CheckedCircleFillIcon","cn","Spinner","jsx","jsxs","StepItem","props","title","description","Identifier","active","isLoading","isCompleted","Dot","className","useAccount","useLocalStorage","WalletConnectContent","initAccountState","remember","setRemember","accountState","state","setState","activeStep","setActiveStep","loading","setLoading","firstShowDialog","steps","onEnableTrading","res","step","reject","e","onSignIn","index","ReferralCode","RememberMe","ActionButton","signIn","enableTrading","disabled","registerSimpleDialog","registerSimpleSheet","useGetReferralCode","useLazyQuery","useMutation","useWalletConnectorBuilder","account","createOrderlyKey","createAccount","refCode","setRefCode","helpText","setHelpText","verifyRefCode","referral_code","bindRefCode","updateOrderError","updateMutating","enableTradingComplted","checkRefCode","exist","showRefCodeInput","info","WalletConnectorModalId","WalletConnectorSheetId","WalletConnectorWidget","useMediaQuery","MEDIA_TABLET","Either","useAppContext","ChainSelectorId","LABELS","DESCRIPTIONS","AuthGuard","status","buttonProps","fallback","descriptions","classNames","networkId","id","bridgeLessOnly","wrongNetwork","labels","Left","StatusInfo","DefaultFallback","connectWallet","matches","onConnectOrderly","error","onConnectWallet","switchChain","value","DataTable","ExtensionSlot","useDataTap","AuthGuardDataTable","dataSource","rest","data","GuardView","EmptyDataState","AuthGuardEmpty","hint","AuthGuardTooltip","opactiy","tooltip","isSupport","newOpacity"],"mappings":"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","sourcesContent":["import { FC, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n Button,\n cn,\n Divider,\n Flex,\n Input,\n inputFormatter,\n Match,\n modal,\n Switch,\n Text,\n TextField,\n toast,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { StepItem } from \"./step\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\n\nexport type WalletConnectContentProps = {\n initAccountState: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: (remember: boolean) => Promise<any>;\n enableTradingComplted?: () => Promise<void>;\n onCompleted?: () => void;\n close?: () => void;\n refCode: string;\n setRefCode: React.Dispatch<React.SetStateAction<string>>;\n helpText?: string;\n showRefCodeInput: boolean;\n};\n\nexport const WalletConnectContent = (props: WalletConnectContentProps) => {\n const { initAccountState = AccountStatusEnum.NotConnected } = props;\n const [remember, setRemember] = useState(true);\n\n const { state: accountState } = useAccount();\n const [state, setState] = useState(initAccountState);\n const [activeStep, setActiveStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [firstShowDialog] = useLocalStorage(\n \"oui-first-show-wallet-connector-dialog\",\n undefined\n );\n useEffect(() => {\n return () => {\n localStorage.setItem(\"oui-first-show-wallet-connector-dialog\", \"1\");\n };\n }, []);\n\n useEffect(() => {\n setState(accountState.status);\n }, [accountState]);\n\n const steps = useMemo(() => {\n const steps = [];\n if (initAccountState < AccountStatusEnum.SignedIn) {\n steps.push({\n key: \"signIn\",\n title: \"Sign In\",\n description: \"Confirm you are the owner of this wallet\",\n });\n }\n\n if (initAccountState < AccountStatusEnum.EnableTrading) {\n steps.push({\n key: \"enableTrading\",\n title: \"Enable Trading\",\n description:\n \"Enable secure access to our API for lightning fast trading\",\n });\n }\n\n return steps;\n }, []);\n\n const onEnableTrading = () => {\n setLoading(true);\n return props\n .enableTrading(remember)\n .then(\n async (res) => {\n console.log(res);\n setLoading(false);\n setActiveStep((step) => step + 1);\n try {\n await props.enableTradingComplted?.();\n } catch (e) {}\n if (typeof props.onCompleted === \"function\") {\n props.onCompleted();\n } else if (typeof props.close === \"function\") {\n props.close();\n }\n // props.onCompleted?.();\n },\n (reject) => {\n console.log(\"enable trading reject\", reject);\n setLoading(false);\n if (reject === -1) return;\n toast.error(reject.message ?? \"User rejected the request\");\n }\n )\n .catch((e) => {\n console.log(\"enable trading catch error\", e);\n setLoading(false);\n });\n };\n\n const onSignIn = () => {\n setLoading(true);\n return props\n .signIn()\n .then(\n (res) => {\n setActiveStep((step) => step + 1);\n onEnableTrading();\n },\n (reject) => {\n setLoading(false);\n if (reject === -1) return;\n toast.error(\"User rejected the request\");\n }\n )\n .catch((e) => {\n setLoading(false);\n });\n };\n\n console.log(\"state\", state);\n\n return (\n <Box id=\"oui-wallet-connect-dialog-content\" className=\"oui-font-semibold\">\n <Text intensity={54} size=\"xs\">\n Your previous access has expired, you will receive a signature request\n to enable trading. Signing is free and will not send a transaction.\n </Text>\n <Box\n p={4}\n my={6}\n intensity={600}\n r=\"lg\"\n className=\"oui-space-y-5\"\n position={\"relative\"}\n >\n {steps.map((step, index) => {\n return (\n <StepItem\n title={step.title}\n description={step.description}\n isCompleted={activeStep > index}\n key={step.key}\n active={activeStep === index}\n isLoading={loading && activeStep === index}\n />\n );\n })}\n {steps.length > 1 && (\n <Box\n position={\"absolute\"}\n height={\"38px\"}\n left={28}\n top={18}\n zIndex={0}\n >\n <Divider\n lineStyle={\"dashed\"}\n direction={\"vertical\"}\n intensity={16}\n className=\"oui-h-full\"\n />\n </Box>\n )}\n </Box>\n {props.showRefCodeInput && steps.length == 2 && (\n <ReferralCode {...props} />\n )}\n {firstShowDialog && (\n <Flex justify={\"between\"} itemAlign={\"center\"}>\n <RememberMe />\n <Switch\n color={\"primary\"}\n checked={remember}\n onCheckedChange={setRemember}\n disabled={loading}\n className=\"data-[state=checked]:oui-bg-[#3347FD]\"\n />\n </Flex>\n )}\n <Flex justify={\"center\"} mt={8}>\n <Box width={\"45%\"}>\n <ActionButton\n state={state}\n signIn={onSignIn}\n enableTrading={onEnableTrading}\n loading={loading}\n disabled={state >= AccountStatusEnum.EnableTrading}\n />\n </Box>\n </Flex>\n </Box>\n );\n};\n\nconst ActionButton: FC<{\n state: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: () => Promise<any>;\n loading: boolean;\n disabled?: boolean;\n}> = ({ state, signIn, enableTrading, loading, disabled }) => {\n return (\n <Match\n value={() => {\n if (state <= AccountStatusEnum.NotSignedIn) {\n return \"signIn\";\n }\n return \"enableTrading\";\n }}\n case={{\n signIn: (\n <Button\n fullWidth\n onClick={() => signIn()}\n loading={loading}\n disabled={disabled}\n >\n Sign In\n </Button>\n ),\n enableTrading: (\n <Button\n fullWidth\n onClick={() => enableTrading()}\n loading={loading}\n disabled={disabled}\n >\n Enable Trading\n </Button>\n ),\n }}\n />\n );\n};\n\nconst ReferralCode: FC<WalletConnectContentProps> = (props) => {\n return (\n <TextField\n placeholder=\"Referral code (Optional)\"\n fullWidth\n // label={\"Referral code (optional)\"}\n label=\"\"\n value={props.refCode}\n onChange={(e) => {\n props.setRefCode(e.target.value);\n }}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n formatters={[inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g)]}\n onClear={() => {\n props.setRefCode(\"\");\n }}\n autoComplete=\"off\"\n helpText={props.helpText}\n className=\"oui-mb-4\"\n color={props.helpText ? \"danger\" : undefined}\n />\n );\n};\n\nconst RememberMe = () => {\n const showRememberHint = () => {\n if (window.innerWidth > 768) return;\n modal.alert({\n title: \"Remember me\",\n message: (\n <span className=\"oui-text-2xs oui-text-base-contrast/60\">\n Toggle this option to skip these steps next time you want to trade.\n </span>\n ),\n });\n };\n return (\n <Tooltip\n content={\n \"Toggle this option to skip these steps next time you want to trade.\"\n }\n className=\"oui-max-w-[300px]\"\n >\n <button onClick={showRememberHint}>\n <Text\n intensity={54}\n size={\"xs\"}\n className={\n \"oui-underline oui-underline-offset-4 oui-decoration-dashed oui-decoration-base-contrast-36\"\n }\n >\n Remember me\n </Text>\n </button>\n </Tooltip>\n );\n};\n","import { FC } from \"react\";\nimport {\n Box,\n CheckedCircleFillIcon,\n cn,\n Match,\n Spinner,\n Text,\n} from \"@orderly.network/ui\";\n\ntype StepItemProps = {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n title: string;\n description: string;\n};\n\nexport const StepItem = (props: StepItemProps) => {\n const { title, description } = props;\n\n // console.log(props);\n\n return (\n <Box position=\"relative\" className=\"oui-pl-8\">\n <Box>\n <Text as=\"div\" intensity={98} size={\"sm\"}>\n {title}\n </Text>\n <Text as=\"div\" intensity={54} size={\"2xs\"}>\n {description}\n </Text>\n </Box>\n <Identifier {...props} />\n </Box>\n );\n};\n\nconst Identifier = (props: {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n}) => {\n const { active, isLoading, isCompleted } = props;\n\n return (\n <Match\n className={\"oui-absolute oui-left-0 oui-top-1 oui-z-10\"}\n value={() => {\n if (isCompleted) {\n return \"completed\";\n }\n if (isLoading) {\n return \"loading\";\n }\n\n if (active) {\n return \"active\";\n }\n\n return \"normal\";\n }}\n case={{\n loading: (\n <div>\n <Spinner size={\"sm\"} className={\"oui-ml-1\"} />\n </div>\n ),\n completed: (\n <div>\n <CheckedCircleFillIcon opacity={1} className=\"oui-text-[rgba(96,140,255,1)]\"/>\n </div>\n ),\n }}\n default={<Dot active={!!active} />}\n />\n );\n};\n\nconst Dot: FC<{ active: boolean; className?: string }> = ({\n active,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ml-2 oui-mt-1\",\n className,\n active ? \"oui-bg-primary-light\" : \"oui-bg-base-2\"\n )}\n />\n );\n};\n","import { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\n\nimport { useWalletConnectorBuilder } from \"./useWalletConnectorBuilder\";\nimport { WalletConnectContent } from \"./walletConnectorContent\";\n\nexport const WalletConnectorModalId = \"walletConnector\" as const;\nexport const WalletConnectorSheetId = \"walletConnectorSheet\" as const;\n\nexport const WalletConnectorWidget = (props: any) => {\n const state = useWalletConnectorBuilder();\n return <WalletConnectContent {...state} {...props} />;\n};\n\nregisterSimpleDialog(WalletConnectorModalId, WalletConnectorWidget, {\n size: \"sm\",\n title: \"Connect wallet\",\n});\n\nregisterSimpleSheet(WalletConnectorSheetId, WalletConnectorWidget, {\n title: \"Connect wallet\",\n});\n","import {\n useAccount,\n useCheckReferralCode,\n useGetReferralCode,\n useLazyQuery,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nexport const useWalletConnectorBuilder = () => {\n const { account, state, createOrderlyKey, createAccount } = useAccount();\n const [refCode, setRefCode] = useState(\"\");\n const [helpText, setHelpText] = useState(\"\");\n\n const { trigger: verifyRefCode } = useLazyQuery(\n `/v1/public/referral/verify_ref_code?referral_code=${refCode}`\n );\n\n useEffect(() => {\n const refCode = localStorage.getItem(\"referral_code\");\n if (refCode != null) {\n setRefCode(refCode);\n }\n }, []);\n\n const { referral_code, isLoading } = useGetReferralCode(account.accountId);\n\n const [bindRefCode, { error: updateOrderError, isMutating: updateMutating }] =\n useMutation(\"/v1/referral/bind\", \"POST\");\n\n useEffect(() => {\n if (refCode.length === 0) {\n setHelpText(\"\");\n }\n }, [refCode]);\n\n const enableTradingComplted = () => {\n toast.success(\"Wallet connected\");\n // validate ref code and bind referral code\n if (refCode.length >= 4 && refCode.length <= 10)\n bindRefCode({ referral_code: refCode }).finally(() => {\n localStorage.removeItem(\"referral_code\");\n });\n };\n\n const checkRefCode = async (): Promise<string | undefined> => {\n if (refCode.length === 0) return Promise.resolve(undefined);\n\n if (refCode.length > 0 && (refCode.length < 4 || refCode.length > 10)) {\n return Promise.resolve(\n \"The referral_code must be 4 to 10 characters long, only accept upper case roman characters and numbers\"\n );\n }\n\n const { exist } = await verifyRefCode();\n \n\n if (exist === false) {\n return Promise.resolve(\"This referral code does not exist.\");\n }\n\n return Promise.resolve(undefined);\n };\n\n\n const showRefCodeInput = (referral_code?.length || 0) === 0 && !isLoading;\n\n\n const signIn = async () => {\n if (showRefCodeInput) {\n const info = await checkRefCode();\n if (typeof info !== \"undefined\") {\n setHelpText(info);\n return Promise.reject(-1);\n }\n }\n setHelpText(\"\");\n return createAccount();\n };\n\n const enableTrading = async (remember: boolean) => {\n if (showRefCodeInput) {\n const info = await checkRefCode();\n if (typeof info !== \"undefined\") {\n setHelpText(info);\n return Promise.reject(-1);\n }\n }\n setHelpText(\"\");\n return createOrderlyKey(remember);\n };\n\n return {\n enableTrading,\n initAccountState: state.status,\n signIn,\n enableTradingComplted,\n refCode,\n setRefCode,\n helpText,\n showRefCodeInput,\n } as const;\n};\n","import { useAccount, useMediaQuery } from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n MEDIA_TABLET,\n NetworkId,\n} from \"@orderly.network/types\";\nimport {\n Button,\n Either,\n Match,\n modal,\n Text,\n toast,\n type ButtonProps,\n} from \"@orderly.network/ui\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { PropsWithChildren, ReactElement, useMemo } from \"react\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"./walletConnector\";\nimport { ChainSelectorId } from \"@orderly.network/ui-chain-selector\";\nimport { alertMessages, DESCRIPTIONS, LABELS } from \"../constants/message\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { Box } from \"@orderly.network/ui\";\n\nexport type AuthGuardProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n fallback?: (props: {\n validating: boolean;\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n }) => ReactElement;\n // indicator?: ReactElement;\n /**\n * Required state to be satisfied\n * @default AccountStatusEnum.EnableTrading\n */\n status?: AccountStatusEnum;\n\n bridgeLessOnly?: boolean;\n\n buttonProps?: ButtonProps;\n\n descriptions?: alertMessages;\n\n labels?: alertMessages;\n\n classNames?: {\n root?: string;\n description?: string;\n // button?: string;\n };\n\n networkId?: NetworkId;\n\n // validatingIndicator?: ReactElement;\n};\n\nconst AuthGuard = (props: PropsWithChildren<AuthGuardProps>) => {\n const {\n status = AccountStatusEnum.EnableTrading,\n buttonProps,\n fallback,\n descriptions,\n classNames,\n networkId,\n id,\n bridgeLessOnly,\n // ...rest\n } = props;\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n const labels = { ...LABELS, ...props.labels };\n\n // return Match(state.status)\n // .with(AccountStatusEnum.EnableTrading, () => props.children)\n // .with(AccountStatusEnum.DisableTrading, () => props.fallback)\n // .with(AccountStatusEnum.Validating, () => props.validatingIndicator)\n // .otherwise(() => props.fallback);\n //\n\n const Left = useMemo<ReactElement>(() => {\n if (typeof fallback !== \"undefined\") {\n return fallback({\n validating: state.validating,\n status: state.status,\n wrongNetwork,\n });\n }\n\n if (state.validating) {\n return (\n <StatusInfo\n // variant={\"gradient\"}\n angle={45}\n // fullWidth\n disabled\n loading\n description={descriptions?.connectWallet}\n id={id}\n type=\"button\"\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n\n return (\n <DefaultFallback\n bridgeLessOnly={bridgeLessOnly}\n status={state.status}\n buttonProps={{ ...buttonProps, id, type: \"button\" }}\n wrongNetwork={wrongNetwork}\n networkId={props.networkId}\n labels={labels}\n descriptions={descriptions}\n />\n );\n }, [state.status, state.validating, buttonProps, wrongNetwork]);\n\n /**\n * **Important: The chldren component will be rendered only if the status is equal to the required status and the network is correct.**\n */\n\n return (\n <Either value={state.status >= status && !wrongNetwork} left={Left}>\n {props.children}\n </Either>\n );\n};\n\nconst DefaultFallback = (props: {\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n buttonProps?: ButtonProps;\n networkId?: NetworkId;\n labels: alertMessages;\n bridgeLessOnly?: boolean;\n\n descriptions?: alertMessages;\n}) => {\n const { buttonProps, labels, descriptions } = props;\n const { connectWallet } = useAppContext();\n const { account } = useAccount();\n const matches = useMediaQuery(MEDIA_TABLET);\n // const { connect } = useWalletConnector();\n const onConnectOrderly = () => {\n modal.show(matches ? WalletConnectorSheetId : WalletConnectorModalId).then(\n (r) => console.log(r),\n (error) => console.log(error)\n );\n };\n\n const onConnectWallet = async () => {\n const res = await connectWallet();\n\n if (!res) return;\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n if (\n (res?.status ?? AccountStatusEnum.NotConnected) <\n AccountStatusEnum.EnableTrading\n ) {\n onConnectOrderly();\n }\n }\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n onConnectOrderly();\n } else {\n toast.success(\"Wallet connected\");\n }\n });\n\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorId, {\n networkId: props.networkId,\n bridgeLessOnly: props.bridgeLessOnly,\n })\n .then(\n (r) => {\n if (!r.wrongNetwork) {\n if (props.status >= AccountStatusEnum.Connected) {\n if (props.status < AccountStatusEnum.EnableTrading) {\n onConnectOrderly();\n } else {\n toast.success(\"Wallet connected\");\n }\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n };\n\n if (props.wrongNetwork) {\n return (\n <StatusInfo\n color=\"warning\"\n // size=\"md\"\n // fullWidth\n onClick={() => {\n switchChain();\n }}\n description={descriptions?.switchChain}\n {...buttonProps}\n >\n {labels.switchChain}\n </StatusInfo>\n );\n }\n\n return (\n <Match\n value={props.status}\n case={(value: AccountStatusEnum) => {\n if (value <= AccountStatusEnum.NotConnected) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectWallet();\n }}\n // fullWidth\n variant={\"gradient\"}\n angle={45}\n description={descriptions?.connectWallet}\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n if (value <= AccountStatusEnum.NotSignedIn) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectOrderly();\n }}\n // fullWidth\n angle={45}\n description={descriptions?.signin}\n {...buttonProps}\n >\n {labels.signin}\n </StatusInfo>\n );\n }\n }}\n default={\n <StatusInfo\n size=\"lg\"\n // fullWidth\n description={descriptions?.enableTrading}\n {...buttonProps}\n onClick={() => onConnectOrderly()}\n >\n {labels.enableTrading}\n </StatusInfo>\n }\n />\n );\n};\n\nAuthGuard.displayName = \"AuthGuard\";\n\nconst StatusInfo = (\n props: ButtonProps & {\n description?: string;\n }\n) => {\n const { description, ...buttonProps } = props;\n return (\n <Flex direction={\"column\"}>\n <Button {...buttonProps}></Button>\n {!!description && (\n <Box mt={4} className=\"oui-leading-none\" style={{ lineHeight: 0 }}>\n <Text size=\"2xs\" intensity={36}>\n {description}\n </Text>\n </Box>\n )}\n </Flex>\n );\n};\n\nexport { AuthGuard };\n","export type alertMessages = {\n connectWallet?: string;\n switchChain?: string;\n enableTrading?: string;\n signin?: string;\n};\n\nexport const LABELS = {\n connectWallet: \"Connect wallet\",\n switchChain: \"Switch network\",\n enableTrading: \"Enable trading\",\n signin: \"Sign in\",\n};\n\nexport const DESCRIPTIONS: alertMessages = {\n connectWallet: \"Please Connect wallet before starting to trade\",\n switchChain: \"Please switch to a supported network to continue\",\n enableTrading: \"Please Enable trading before starting to trade\",\n signin: \"Please sign in before starting to trade\",\n};\n","import { PropsWithChildren } from \"react\";\nimport { DataTable, DataTableProps, ExtensionSlot } from \"@orderly.network/ui\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { alertMessages, DESCRIPTIONS } from \"../constants/message\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"./authGuard\";\nimport { useAccount } from \"@orderly.network/hooks\";\n\nexport const AuthGuardDataTable = <RecordType extends unknown>(\n props: PropsWithChildren<\n DataTableProps<RecordType> &\n Omit<GuardViewProps, \"status\"> & {\n status?: AccountStatusEnum;\n classNames?: DataTableProps<RecordType>[\"classNames\"] & {\n authGuardDescription?: string;\n };\n }\n >\n) => {\n const {\n status = AccountStatusEnum.EnableTrading,\n // message,\n labels,\n description,\n dataSource,\n ...rest\n } = props;\n const data = useDataTap(dataSource, {\n accountStatus: status,\n });\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n return (\n <DataTable\n {...rest}\n dataSource={data}\n ignoreLoadingCheck={\n wrongNetwork || state.status < status || props.ignoreLoadingCheck\n }\n emptyView={\n <GuardView\n status={status}\n description={description}\n labels={labels}\n className={props.classNames?.authGuardDescription}\n visible={!state.validating}\n />\n }\n />\n );\n};\n\ntype GuardViewProps = {\n status: AccountStatusEnum;\n description?: alertMessages;\n labels?: alertMessages;\n className?: string;\n visible?: boolean;\n};\n\nconst GuardView = (props: GuardViewProps) => {\n const descriptions = { ...DESCRIPTIONS, ...props.description };\n if (!props.visible) return null;\n return (\n <Flex py={8}>\n <AuthGuard\n status={props.status}\n labels={props.labels}\n descriptions={descriptions}\n buttonProps={{\n size: \"md\",\n }}\n >\n <ExtensionSlot position={\"emptyDataState\"} />\n </AuthGuard>\n </Flex>\n );\n};\n","import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Box,\n EmptyDataState,\n} from \"@orderly.network/ui\";\nimport { PropsWithChildren } from \"react\";\nimport { AuthGuard } from \"./authGuard\";\n\ntype AuthGuardProps = {\n /** default value is\n * ```ts\n * {\n * connectWallet: \"Please connect wallet before starting to trade\",\n * signIn: \"Please sign in before starting to trade\",\n * enableTrading: \"Please sign in before starting to trade\",\n * wrongNetwork: \"Please switch to a supported network to continue.\",\n * }\n * ```\n */\n hint?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n status?: AccountStatusEnum;\n};\n\nconst AuthGuardEmpty = (props: PropsWithChildren<AuthGuardProps>) => {\n const {\n hint = {\n connectWallet: \"Please connect wallet before starting to trade\",\n signIn: \"Please sign in before starting to trade\",\n enableTrading: \"Please sign in before starting to trade\",\n wrongNetwork: \"Please switch to a supported network to continue.\",\n },\n status,\n } = props;\n\n return (\n <Box my={8}>\n <AuthGuard status={status} descriptions={{...hint, switchChain: hint.wrongNetwork}}>\n {props.children || <EmptyDataState />}\n </AuthGuard>\n </Box>\n );\n};\n\nAuthGuardEmpty.displayName = \"AuthGuardEmpty\";\n\nexport { AuthGuardEmpty };\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Tooltip } from \"@orderly.network/ui\";\nimport { PropsWithChildren, useMemo } from \"react\";\n\ntype AuthGuardProps = {\n content?: string;\n align?: \"center\" | \"end\" | \"start\";\n alignOffset?: number;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n opactiy?: number;\n tooltip?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n};\n\nconst AuthGuardTooltip = (props: PropsWithChildren<AuthGuardProps>) => {\n const {\n opactiy = 90,\n tooltip = {\n connectWallet: \"Please connect wallet before set up\",\n signIn: \"Please sign in before set up\",\n enableTrading: \"Please enable trading before set up\",\n wrongNetwork: \"Please switch to a supported network to set up\",\n },\n } = props;\n const { state } = useAccount();\n const isSupport = true;\n const { wrongNetwork } = useAppContext();\n\n const hint = useMemo(() => {\n if (wrongNetwork) {\n return tooltip?.wrongNetwork;\n }\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return tooltip?.connectWallet;\n case AccountStatusEnum.NotSignedIn:\n return tooltip?.signIn;\n case AccountStatusEnum.DisabledTrading:\n return tooltip?.enableTrading;\n case AccountStatusEnum.EnableTrading: {\n if (!isSupport) return tooltip?.wrongNetwork;\n return \"\";\n }\n default:\n return props.content;\n }\n }, [props.content, state, isSupport, tooltip]);\n\n const newOpacity = useMemo(() => {\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n case AccountStatusEnum.NotSignedIn:\n return opactiy;\n case AccountStatusEnum.EnableTrading: {\n if (!isSupport) return opactiy;\n return undefined;\n }\n default:\n return undefined;\n }\n }, [props.opactiy, state, isSupport]);\n\n return (\n <Tooltip\n content={hint}\n className=\"oui-text-2xs\"\n align={props.align}\n alignOffset={props.alignOffset}\n side={props.side}\n sideOffset={props.sideOffset}\n >\n <div\n style={{\n opacity: newOpacity,\n }}\n >\n {props.children}\n </div>\n </Tooltip>\n );\n};\n\nAuthGuardTooltip.displayName = \"AuthGuardTooltip\";\n\nexport { AuthGuardTooltip };\n"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,13 @@
1
+ import { useState, useEffect, useMemo } from 'react';
2
+ import { registerSimpleDialog, registerSimpleSheet, Box, Text, Divider, Flex, Switch, Match, Button, TextField, inputFormatter, Tooltip, modal, Either, DataTable, ExtensionSlot, EmptyDataState, Spinner, CheckedCircleFillIcon, cn, toast } from '@orderly.network/ui';
3
+ import { AccountStatusEnum, MEDIA_TABLET } from '@orderly.network/types';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+ import { useAccount, useLocalStorage, useLazyQuery, useGetReferralCode, useMutation, useMediaQuery } from '@orderly.network/hooks';
6
+ import { useAppContext, useDataTap } from '@orderly.network/react-app';
7
+ import { ChainSelectorId } from '@orderly.network/ui-chain-selector';
8
+
9
+ var z=e=>{let{title:t,description:n}=e;return jsxs(Box,{position:"relative",className:"oui-pl-8",children:[jsxs(Box,{children:[jsx(Text,{as:"div",intensity:98,size:"sm",children:t}),jsx(Text,{as:"div",intensity:54,size:"2xs",children:n})]}),jsx(ce,{...e})]})},ce=e=>{let{active:t,isLoading:n,isCompleted:s}=e;return jsx(Match,{className:"oui-absolute oui-left-0 oui-top-1 oui-z-10",value:()=>s?"completed":n?"loading":t?"active":"normal",case:{loading:jsx("div",{children:jsx(Spinner,{size:"sm",className:"oui-ml-1"})}),completed:jsx("div",{children:jsx(CheckedCircleFillIcon,{opacity:1,className:"oui-text-[rgba(96,140,255,1)]"})})},default:jsx(ue,{active:!!t})})},ue=({active:e,className:t})=>jsx("div",{className:cn("oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ml-2 oui-mt-1",t,e?"oui-bg-primary-light":"oui-bg-base-2")});var R=e=>{let{initAccountState:t=AccountStatusEnum.NotConnected}=e,[n,s]=useState(!0),{state:o}=useAccount(),[u,m]=useState(t),[a,f]=useState(0),[c,r]=useState(!1),[w]=useLocalStorage("oui-first-show-wallet-connector-dialog",void 0);useEffect(()=>()=>{localStorage.setItem("oui-first-show-wallet-connector-dialog","1");},[]),useEffect(()=>{m(o.status);},[o]);let y=useMemo(()=>{let i=[];return t<AccountStatusEnum.SignedIn&&i.push({key:"signIn",title:"Sign In",description:"Confirm you are the owner of this wallet"}),t<AccountStatusEnum.EnableTrading&&i.push({key:"enableTrading",title:"Enable Trading",description:"Enable secure access to our API for lightning fast trading"}),i},[]),W=()=>(r(!0),e.enableTrading(n).then(async i=>{r(!1),f(d=>d+1);try{await e.enableTradingComplted?.();}catch{}typeof e.onCompleted=="function"?e.onCompleted():typeof e.close=="function"&&e.close();},i=>{r(!1),i!==-1&&toast.error(i.message??"User rejected the request");}).catch(i=>{r(!1);})),v=()=>(r(!0),e.signIn().then(i=>{f(d=>d+1),W();},i=>{r(!1),i!==-1&&toast.error("User rejected the request");}).catch(i=>{r(!1);}));return jsxs(Box,{id:"oui-wallet-connect-dialog-content",className:"oui-font-semibold",children:[jsx(Text,{intensity:54,size:"xs",children:"Your previous access has expired, you will receive a signature request to enable trading. Signing is free and will not send a transaction."}),jsxs(Box,{p:4,my:6,intensity:600,r:"lg",className:"oui-space-y-5",position:"relative",children:[y.map((i,d)=>jsx(z,{title:i.title,description:i.description,isCompleted:a>d,active:a===d,isLoading:c&&a===d},i.key)),y.length>1&&jsx(Box,{position:"absolute",height:"38px",left:28,top:18,zIndex:0,children:jsx(Divider,{lineStyle:"dashed",direction:"vertical",intensity:16,className:"oui-h-full"})})]}),e.showRefCodeInput&&y.length==2&&jsx(Te,{...e}),w&&jsxs(Flex,{justify:"between",itemAlign:"center",children:[jsx(Se,{}),jsx(Switch,{color:"primary",checked:n,onCheckedChange:s,disabled:c,className:"data-[state=checked]:oui-bg-[#3347FD]"})]}),jsx(Flex,{justify:"center",mt:8,children:jsx(Box,{width:"45%",children:jsx(xe,{state:u,signIn:v,enableTrading:W,loading:c,disabled:u>=AccountStatusEnum.EnableTrading})})})]})},xe=({state:e,signIn:t,enableTrading:n,loading:s,disabled:o})=>jsx(Match,{value:()=>e<=AccountStatusEnum.NotSignedIn?"signIn":"enableTrading",case:{signIn:jsx(Button,{fullWidth:!0,onClick:()=>t(),loading:s,disabled:o,children:"Sign In"}),enableTrading:jsx(Button,{fullWidth:!0,onClick:()=>n(),loading:s,disabled:o,children:"Enable Trading"})}}),Te=e=>jsx(TextField,{placeholder:"Referral code (Optional)",fullWidth:!0,label:"",value:e.refCode,onChange:t=>{e.setRefCode(t.target.value);},classNames:{label:"oui-text-base-contrast-54 oui-text-xs",input:"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm"},formatters:[inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g)],onClear:()=>{e.setRefCode("");},autoComplete:"off",helpText:e.helpText,className:"oui-mb-4",color:e.helpText?"danger":void 0}),Se=()=>jsx(Tooltip,{content:"Toggle this option to skip these steps next time you want to trade.",className:"oui-max-w-[300px]",children:jsx("button",{onClick:()=>{window.innerWidth>768||modal.alert({title:"Remember me",message:jsx("span",{className:"oui-text-2xs oui-text-base-contrast/60",children:"Toggle this option to skip these steps next time you want to trade."})});},children:jsx(Text,{intensity:54,size:"xs",className:"oui-underline oui-underline-offset-4 oui-decoration-dashed oui-decoration-base-contrast-36",children:"Remember me"})})});var B=()=>{let{account:e,state:t,createOrderlyKey:n,createAccount:s}=useAccount(),[o,u]=useState(""),[m,a]=useState(""),{trigger:f}=useLazyQuery(`/v1/public/referral/verify_ref_code?referral_code=${o}`);useEffect(()=>{let h=localStorage.getItem("referral_code");h!=null&&u(h);},[]);let{referral_code:c,isLoading:r}=useGetReferralCode(e.accountId),[w,{error:y,isMutating:W}]=useMutation("/v1/referral/bind","POST");useEffect(()=>{o.length===0&&a("");},[o]);let v=()=>{toast.success("Wallet connected"),o.length>=4&&o.length<=10&&w({referral_code:o}).finally(()=>{localStorage.removeItem("referral_code");});},i=async()=>{if(o.length===0)return Promise.resolve(void 0);if(o.length>0&&(o.length<4||o.length>10))return Promise.resolve("The referral_code must be 4 to 10 characters long, only accept upper case roman characters and numbers");let{exist:h}=await f();return h===!1?Promise.resolve("This referral code does not exist."):Promise.resolve(void 0)},d=(c?.length||0)===0&&!r,re=async()=>{if(d){let h=await i();if(typeof h<"u")return a(h),Promise.reject(-1)}return a(""),s()};return {enableTrading:async h=>{if(d){let L=await i();if(typeof L<"u")return a(L),Promise.reject(-1)}return a(""),n(h)},initAccountState:t.status,signIn:re,enableTradingComplted:v,refCode:o,setRefCode:u,helpText:m,showRefCodeInput:d}};var A="walletConnector",k="walletConnectorSheet",G=e=>{let t=B();return jsx(R,{...t,...e})};registerSimpleDialog(A,G,{size:"sm",title:"Connect wallet"});registerSimpleSheet(k,G,{title:"Connect wallet"});var Y={connectWallet:"Connect wallet",switchChain:"Switch network",enableTrading:"Enable trading",signin:"Sign in"},Z={connectWallet:"Please Connect wallet before starting to trade",switchChain:"Please switch to a supported network to continue",enableTrading:"Please Enable trading before starting to trade",signin:"Please sign in before starting to trade"};var x=e=>{let{status:t=AccountStatusEnum.EnableTrading,buttonProps:n,fallback:s,descriptions:o,classNames:u,networkId:m,id:a,bridgeLessOnly:f}=e,{state:c}=useAccount(),{wrongNetwork:r}=useAppContext(),w={...Y,...e.labels},y=useMemo(()=>typeof s<"u"?s({validating:c.validating,status:c.status,wrongNetwork:r}):c.validating?jsx(S,{angle:45,disabled:!0,loading:!0,description:o?.connectWallet,id:a,type:"button",...n,children:w.connectWallet}):jsx(He,{bridgeLessOnly:f,status:c.status,buttonProps:{...n,id:a,type:"button"},wrongNetwork:r,networkId:e.networkId,labels:w,descriptions:o}),[c.status,c.validating,n,r]);return jsx(Either,{value:c.status>=t&&!r,left:y,children:e.children})},He=e=>{let{buttonProps:t,labels:n,descriptions:s}=e,{connectWallet:o}=useAppContext(),{account:u}=useAccount(),m=useMediaQuery(MEDIA_TABLET),a=()=>{modal.show(m?k:A).then(r=>{},r=>{});},f=async()=>{let r=await o();r&&(r.wrongNetwork?c():(r?.status??AccountStatusEnum.NotConnected)<AccountStatusEnum.EnableTrading&&a());},c=()=>{u.once("validate:end",r=>{r<AccountStatusEnum.EnableTrading?a():toast.success("Wallet connected");}),modal.show(ChainSelectorId,{networkId:e.networkId,bridgeLessOnly:e.bridgeLessOnly}).then(r=>{r.wrongNetwork||e.status>=AccountStatusEnum.Connected&&(e.status<AccountStatusEnum.EnableTrading?a():toast.success("Wallet connected"));},r=>{});};return e.wrongNetwork?jsx(S,{color:"warning",onClick:()=>{c();},description:s?.switchChain,...t,children:n.switchChain}):jsx(Match,{value:e.status,case:r=>{if(r<=AccountStatusEnum.NotConnected)return jsx(S,{size:"lg",onClick:()=>{f();},variant:"gradient",angle:45,description:s?.connectWallet,...t,children:n.connectWallet});if(r<=AccountStatusEnum.NotSignedIn)return jsx(S,{size:"lg",onClick:()=>{a();},angle:45,description:s?.signin,...t,children:n.signin})},default:jsx(S,{size:"lg",description:s?.enableTrading,...t,onClick:()=>a(),children:n.enableTrading})})};x.displayName="AuthGuard";var S=e=>{let{description:t,...n}=e;return jsxs(Flex,{direction:"column",children:[jsx(Button,{...n}),!!t&&jsx(Box,{mt:4,className:"oui-leading-none",style:{lineHeight:0},children:jsx(Text,{size:"2xs",intensity:36,children:t})})]})};var je=e=>{let{status:t=AccountStatusEnum.EnableTrading,labels:n,description:s,dataSource:o,...u}=e,m=useDataTap(o,{accountStatus:t}),{state:a}=useAccount(),{wrongNetwork:f}=useAppContext();return jsx(DataTable,{...u,dataSource:m,ignoreLoadingCheck:f||a.status<t||e.ignoreLoadingCheck,emptyView:jsx(Je,{status:t,description:s,labels:n,className:e.classNames?.authGuardDescription,visible:!a.validating})})},Je=e=>{let t={...Z,...e.description};return e.visible?jsx(Flex,{py:8,children:jsx(x,{status:e.status,labels:e.labels,descriptions:t,buttonProps:{size:"md"},children:jsx(ExtensionSlot,{position:"emptyDataState"})})}):null};var ee=e=>{let{hint:t={connectWallet:"Please connect wallet before starting to trade",signIn:"Please sign in before starting to trade",enableTrading:"Please sign in before starting to trade",wrongNetwork:"Please switch to a supported network to continue."},status:n}=e;return jsx(Box,{my:8,children:jsx(x,{status:n,descriptions:{...t,switchChain:t.wrongNetwork},children:e.children||jsx(EmptyDataState,{})})})};ee.displayName="AuthGuardEmpty";var oe=e=>{let{opactiy:t=90,tooltip:n={connectWallet:"Please connect wallet before set up",signIn:"Please sign in before set up",enableTrading:"Please enable trading before set up",wrongNetwork:"Please switch to a supported network to set up"}}=e,{state:s}=useAccount(),o=!0,{wrongNetwork:u}=useAppContext(),m=useMemo(()=>{if(u)return n?.wrongNetwork;switch(s.status){case AccountStatusEnum.NotConnected:return n?.connectWallet;case AccountStatusEnum.NotSignedIn:return n?.signIn;case AccountStatusEnum.DisabledTrading:return n?.enableTrading;case AccountStatusEnum.EnableTrading:return "";default:return e.content}},[e.content,s,o,n]),a=useMemo(()=>{switch(s.status){case AccountStatusEnum.NotConnected:case AccountStatusEnum.NotSignedIn:return t;case AccountStatusEnum.EnableTrading:return void 0;default:return}},[e.opactiy,s,o]);return jsx(Tooltip,{content:m,className:"oui-text-2xs",align:e.align,alignOffset:e.alignOffset,side:e.side,sideOffset:e.sideOffset,children:jsx("div",{style:{opacity:a},children:e.children})})};oe.displayName="AuthGuardTooltip";
10
+
11
+ export { x as AuthGuard, je as AuthGuardDataTable, ee as AuthGuardEmpty, oe as AuthGuardTooltip, R as WalletConnectContent, A as WalletConnectorModalId, k as WalletConnectorSheetId, G as WalletConnectorWidget, B as useWalletConnectorBuilder };
12
+ //# sourceMappingURL=out.js.map
13
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/component/walletConnectorContent.tsx","../src/component/step.tsx","../src/component/walletConnector.tsx","../src/component/useWalletConnectorBuilder.ts","../src/component/authGuard.tsx","../src/constants/message.ts","../src/component/authGuardDataTable.tsx","../src/component/authGuardEmpty.tsx","../src/component/authGuardTooltip.tsx"],"names":["useEffect","useMemo","useState","Box","Button","Divider","Flex","inputFormatter","Match","modal","Switch","Text","TextField","toast","Tooltip","AccountStatusEnum","CheckedCircleFillIcon","cn","Spinner","jsx","jsxs","StepItem","props","title","description","Identifier","active","isLoading","isCompleted","Dot","className","useAccount","useLocalStorage","WalletConnectContent","initAccountState","remember","setRemember","accountState","state","setState","activeStep","setActiveStep","loading","setLoading","firstShowDialog","steps","onEnableTrading","res","step","reject","e","onSignIn","index","ReferralCode","RememberMe","ActionButton","signIn","enableTrading","disabled","registerSimpleDialog","registerSimpleSheet","useGetReferralCode","useLazyQuery","useMutation","useWalletConnectorBuilder","account","createOrderlyKey","createAccount","refCode","setRefCode","helpText","setHelpText","verifyRefCode","referral_code","bindRefCode","updateOrderError","updateMutating","enableTradingComplted","checkRefCode","exist","showRefCodeInput","info","WalletConnectorModalId","WalletConnectorSheetId","WalletConnectorWidget","useMediaQuery","MEDIA_TABLET","Either","useAppContext","ChainSelectorId","LABELS","DESCRIPTIONS","AuthGuard","status","buttonProps","fallback","descriptions","classNames","networkId","id","bridgeLessOnly","wrongNetwork","labels","Left","StatusInfo","DefaultFallback","connectWallet","matches","onConnectOrderly","error","onConnectWallet","switchChain","value","DataTable","ExtensionSlot","useDataTap","AuthGuardDataTable","dataSource","rest","data","GuardView","EmptyDataState","AuthGuardEmpty","hint","AuthGuardTooltip","opactiy","tooltip","isSupport","newOpacity"],"mappings":"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","sourcesContent":["import { FC, useEffect, useMemo, useState } from \"react\";\nimport {\n Box,\n Button,\n cn,\n Divider,\n Flex,\n Input,\n inputFormatter,\n Match,\n modal,\n Switch,\n Text,\n TextField,\n toast,\n Tooltip,\n} from \"@orderly.network/ui\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { StepItem } from \"./step\";\nimport { useAccount, useLocalStorage } from \"@orderly.network/hooks\";\n\nexport type WalletConnectContentProps = {\n initAccountState: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: (remember: boolean) => Promise<any>;\n enableTradingComplted?: () => Promise<void>;\n onCompleted?: () => void;\n close?: () => void;\n refCode: string;\n setRefCode: React.Dispatch<React.SetStateAction<string>>;\n helpText?: string;\n showRefCodeInput: boolean;\n};\n\nexport const WalletConnectContent = (props: WalletConnectContentProps) => {\n const { initAccountState = AccountStatusEnum.NotConnected } = props;\n const [remember, setRemember] = useState(true);\n\n const { state: accountState } = useAccount();\n const [state, setState] = useState(initAccountState);\n const [activeStep, setActiveStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [firstShowDialog] = useLocalStorage(\n \"oui-first-show-wallet-connector-dialog\",\n undefined\n );\n useEffect(() => {\n return () => {\n localStorage.setItem(\"oui-first-show-wallet-connector-dialog\", \"1\");\n };\n }, []);\n\n useEffect(() => {\n setState(accountState.status);\n }, [accountState]);\n\n const steps = useMemo(() => {\n const steps = [];\n if (initAccountState < AccountStatusEnum.SignedIn) {\n steps.push({\n key: \"signIn\",\n title: \"Sign In\",\n description: \"Confirm you are the owner of this wallet\",\n });\n }\n\n if (initAccountState < AccountStatusEnum.EnableTrading) {\n steps.push({\n key: \"enableTrading\",\n title: \"Enable Trading\",\n description:\n \"Enable secure access to our API for lightning fast trading\",\n });\n }\n\n return steps;\n }, []);\n\n const onEnableTrading = () => {\n setLoading(true);\n return props\n .enableTrading(remember)\n .then(\n async (res) => {\n console.log(res);\n setLoading(false);\n setActiveStep((step) => step + 1);\n try {\n await props.enableTradingComplted?.();\n } catch (e) {}\n if (typeof props.onCompleted === \"function\") {\n props.onCompleted();\n } else if (typeof props.close === \"function\") {\n props.close();\n }\n // props.onCompleted?.();\n },\n (reject) => {\n console.log(\"enable trading reject\", reject);\n setLoading(false);\n if (reject === -1) return;\n toast.error(reject.message ?? \"User rejected the request\");\n }\n )\n .catch((e) => {\n console.log(\"enable trading catch error\", e);\n setLoading(false);\n });\n };\n\n const onSignIn = () => {\n setLoading(true);\n return props\n .signIn()\n .then(\n (res) => {\n setActiveStep((step) => step + 1);\n onEnableTrading();\n },\n (reject) => {\n setLoading(false);\n if (reject === -1) return;\n toast.error(\"User rejected the request\");\n }\n )\n .catch((e) => {\n setLoading(false);\n });\n };\n\n console.log(\"state\", state);\n\n return (\n <Box id=\"oui-wallet-connect-dialog-content\" className=\"oui-font-semibold\">\n <Text intensity={54} size=\"xs\">\n Your previous access has expired, you will receive a signature request\n to enable trading. Signing is free and will not send a transaction.\n </Text>\n <Box\n p={4}\n my={6}\n intensity={600}\n r=\"lg\"\n className=\"oui-space-y-5\"\n position={\"relative\"}\n >\n {steps.map((step, index) => {\n return (\n <StepItem\n title={step.title}\n description={step.description}\n isCompleted={activeStep > index}\n key={step.key}\n active={activeStep === index}\n isLoading={loading && activeStep === index}\n />\n );\n })}\n {steps.length > 1 && (\n <Box\n position={\"absolute\"}\n height={\"38px\"}\n left={28}\n top={18}\n zIndex={0}\n >\n <Divider\n lineStyle={\"dashed\"}\n direction={\"vertical\"}\n intensity={16}\n className=\"oui-h-full\"\n />\n </Box>\n )}\n </Box>\n {props.showRefCodeInput && steps.length == 2 && (\n <ReferralCode {...props} />\n )}\n {firstShowDialog && (\n <Flex justify={\"between\"} itemAlign={\"center\"}>\n <RememberMe />\n <Switch\n color={\"primary\"}\n checked={remember}\n onCheckedChange={setRemember}\n disabled={loading}\n className=\"data-[state=checked]:oui-bg-[#3347FD]\"\n />\n </Flex>\n )}\n <Flex justify={\"center\"} mt={8}>\n <Box width={\"45%\"}>\n <ActionButton\n state={state}\n signIn={onSignIn}\n enableTrading={onEnableTrading}\n loading={loading}\n disabled={state >= AccountStatusEnum.EnableTrading}\n />\n </Box>\n </Flex>\n </Box>\n );\n};\n\nconst ActionButton: FC<{\n state: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: () => Promise<any>;\n loading: boolean;\n disabled?: boolean;\n}> = ({ state, signIn, enableTrading, loading, disabled }) => {\n return (\n <Match\n value={() => {\n if (state <= AccountStatusEnum.NotSignedIn) {\n return \"signIn\";\n }\n return \"enableTrading\";\n }}\n case={{\n signIn: (\n <Button\n fullWidth\n onClick={() => signIn()}\n loading={loading}\n disabled={disabled}\n >\n Sign In\n </Button>\n ),\n enableTrading: (\n <Button\n fullWidth\n onClick={() => enableTrading()}\n loading={loading}\n disabled={disabled}\n >\n Enable Trading\n </Button>\n ),\n }}\n />\n );\n};\n\nconst ReferralCode: FC<WalletConnectContentProps> = (props) => {\n return (\n <TextField\n placeholder=\"Referral code (Optional)\"\n fullWidth\n // label={\"Referral code (optional)\"}\n label=\"\"\n value={props.refCode}\n onChange={(e) => {\n props.setRefCode(e.target.value);\n }}\n classNames={{\n label: \"oui-text-base-contrast-54 oui-text-xs\",\n input: \"placeholder:oui-text-base-contrast-20 placeholder:oui-text-sm\",\n }}\n formatters={[inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g)]}\n onClear={() => {\n props.setRefCode(\"\");\n }}\n autoComplete=\"off\"\n helpText={props.helpText}\n className=\"oui-mb-4\"\n color={props.helpText ? \"danger\" : undefined}\n />\n );\n};\n\nconst RememberMe = () => {\n const showRememberHint = () => {\n if (window.innerWidth > 768) return;\n modal.alert({\n title: \"Remember me\",\n message: (\n <span className=\"oui-text-2xs oui-text-base-contrast/60\">\n Toggle this option to skip these steps next time you want to trade.\n </span>\n ),\n });\n };\n return (\n <Tooltip\n content={\n \"Toggle this option to skip these steps next time you want to trade.\"\n }\n className=\"oui-max-w-[300px]\"\n >\n <button onClick={showRememberHint}>\n <Text\n intensity={54}\n size={\"xs\"}\n className={\n \"oui-underline oui-underline-offset-4 oui-decoration-dashed oui-decoration-base-contrast-36\"\n }\n >\n Remember me\n </Text>\n </button>\n </Tooltip>\n );\n};\n","import { FC } from \"react\";\nimport {\n Box,\n CheckedCircleFillIcon,\n cn,\n Match,\n Spinner,\n Text,\n} from \"@orderly.network/ui\";\n\ntype StepItemProps = {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n title: string;\n description: string;\n};\n\nexport const StepItem = (props: StepItemProps) => {\n const { title, description } = props;\n\n // console.log(props);\n\n return (\n <Box position=\"relative\" className=\"oui-pl-8\">\n <Box>\n <Text as=\"div\" intensity={98} size={\"sm\"}>\n {title}\n </Text>\n <Text as=\"div\" intensity={54} size={\"2xs\"}>\n {description}\n </Text>\n </Box>\n <Identifier {...props} />\n </Box>\n );\n};\n\nconst Identifier = (props: {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n}) => {\n const { active, isLoading, isCompleted } = props;\n\n return (\n <Match\n className={\"oui-absolute oui-left-0 oui-top-1 oui-z-10\"}\n value={() => {\n if (isCompleted) {\n return \"completed\";\n }\n if (isLoading) {\n return \"loading\";\n }\n\n if (active) {\n return \"active\";\n }\n\n return \"normal\";\n }}\n case={{\n loading: (\n <div>\n <Spinner size={\"sm\"} className={\"oui-ml-1\"} />\n </div>\n ),\n completed: (\n <div>\n <CheckedCircleFillIcon opacity={1} className=\"oui-text-[rgba(96,140,255,1)]\"/>\n </div>\n ),\n }}\n default={<Dot active={!!active} />}\n />\n );\n};\n\nconst Dot: FC<{ active: boolean; className?: string }> = ({\n active,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ml-2 oui-mt-1\",\n className,\n active ? \"oui-bg-primary-light\" : \"oui-bg-base-2\"\n )}\n />\n );\n};\n","import { registerSimpleDialog, registerSimpleSheet } from \"@orderly.network/ui\";\n\nimport { useWalletConnectorBuilder } from \"./useWalletConnectorBuilder\";\nimport { WalletConnectContent } from \"./walletConnectorContent\";\n\nexport const WalletConnectorModalId = \"walletConnector\" as const;\nexport const WalletConnectorSheetId = \"walletConnectorSheet\" as const;\n\nexport const WalletConnectorWidget = (props: any) => {\n const state = useWalletConnectorBuilder();\n return <WalletConnectContent {...state} {...props} />;\n};\n\nregisterSimpleDialog(WalletConnectorModalId, WalletConnectorWidget, {\n size: \"sm\",\n title: \"Connect wallet\",\n});\n\nregisterSimpleSheet(WalletConnectorSheetId, WalletConnectorWidget, {\n title: \"Connect wallet\",\n});\n","import {\n useAccount,\n useCheckReferralCode,\n useGetReferralCode,\n useLazyQuery,\n useMutation,\n} from \"@orderly.network/hooks\";\nimport { toast } from \"@orderly.network/ui\";\nimport { useEffect, useMemo, useState } from \"react\";\n\nexport const useWalletConnectorBuilder = () => {\n const { account, state, createOrderlyKey, createAccount } = useAccount();\n const [refCode, setRefCode] = useState(\"\");\n const [helpText, setHelpText] = useState(\"\");\n\n const { trigger: verifyRefCode } = useLazyQuery(\n `/v1/public/referral/verify_ref_code?referral_code=${refCode}`\n );\n\n useEffect(() => {\n const refCode = localStorage.getItem(\"referral_code\");\n if (refCode != null) {\n setRefCode(refCode);\n }\n }, []);\n\n const { referral_code, isLoading } = useGetReferralCode(account.accountId);\n\n const [bindRefCode, { error: updateOrderError, isMutating: updateMutating }] =\n useMutation(\"/v1/referral/bind\", \"POST\");\n\n useEffect(() => {\n if (refCode.length === 0) {\n setHelpText(\"\");\n }\n }, [refCode]);\n\n const enableTradingComplted = () => {\n toast.success(\"Wallet connected\");\n // validate ref code and bind referral code\n if (refCode.length >= 4 && refCode.length <= 10)\n bindRefCode({ referral_code: refCode }).finally(() => {\n localStorage.removeItem(\"referral_code\");\n });\n };\n\n const checkRefCode = async (): Promise<string | undefined> => {\n if (refCode.length === 0) return Promise.resolve(undefined);\n\n if (refCode.length > 0 && (refCode.length < 4 || refCode.length > 10)) {\n return Promise.resolve(\n \"The referral_code must be 4 to 10 characters long, only accept upper case roman characters and numbers\"\n );\n }\n\n const { exist } = await verifyRefCode();\n \n\n if (exist === false) {\n return Promise.resolve(\"This referral code does not exist.\");\n }\n\n return Promise.resolve(undefined);\n };\n\n\n const showRefCodeInput = (referral_code?.length || 0) === 0 && !isLoading;\n\n\n const signIn = async () => {\n if (showRefCodeInput) {\n const info = await checkRefCode();\n if (typeof info !== \"undefined\") {\n setHelpText(info);\n return Promise.reject(-1);\n }\n }\n setHelpText(\"\");\n return createAccount();\n };\n\n const enableTrading = async (remember: boolean) => {\n if (showRefCodeInput) {\n const info = await checkRefCode();\n if (typeof info !== \"undefined\") {\n setHelpText(info);\n return Promise.reject(-1);\n }\n }\n setHelpText(\"\");\n return createOrderlyKey(remember);\n };\n\n return {\n enableTrading,\n initAccountState: state.status,\n signIn,\n enableTradingComplted,\n refCode,\n setRefCode,\n helpText,\n showRefCodeInput,\n } as const;\n};\n","import { useAccount, useMediaQuery } from \"@orderly.network/hooks\";\nimport {\n AccountStatusEnum,\n MEDIA_TABLET,\n NetworkId,\n} from \"@orderly.network/types\";\nimport {\n Button,\n Either,\n Match,\n modal,\n Text,\n toast,\n type ButtonProps,\n} from \"@orderly.network/ui\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { PropsWithChildren, ReactElement, useMemo } from \"react\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"./walletConnector\";\nimport { ChainSelectorId } from \"@orderly.network/ui-chain-selector\";\nimport { alertMessages, DESCRIPTIONS, LABELS } from \"../constants/message\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { Box } from \"@orderly.network/ui\";\n\nexport type AuthGuardProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n fallback?: (props: {\n validating: boolean;\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n }) => ReactElement;\n // indicator?: ReactElement;\n /**\n * Required state to be satisfied\n * @default AccountStatusEnum.EnableTrading\n */\n status?: AccountStatusEnum;\n\n bridgeLessOnly?: boolean;\n\n buttonProps?: ButtonProps;\n\n descriptions?: alertMessages;\n\n labels?: alertMessages;\n\n classNames?: {\n root?: string;\n description?: string;\n // button?: string;\n };\n\n networkId?: NetworkId;\n\n // validatingIndicator?: ReactElement;\n};\n\nconst AuthGuard = (props: PropsWithChildren<AuthGuardProps>) => {\n const {\n status = AccountStatusEnum.EnableTrading,\n buttonProps,\n fallback,\n descriptions,\n classNames,\n networkId,\n id,\n bridgeLessOnly,\n // ...rest\n } = props;\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n const labels = { ...LABELS, ...props.labels };\n\n // return Match(state.status)\n // .with(AccountStatusEnum.EnableTrading, () => props.children)\n // .with(AccountStatusEnum.DisableTrading, () => props.fallback)\n // .with(AccountStatusEnum.Validating, () => props.validatingIndicator)\n // .otherwise(() => props.fallback);\n //\n\n const Left = useMemo<ReactElement>(() => {\n if (typeof fallback !== \"undefined\") {\n return fallback({\n validating: state.validating,\n status: state.status,\n wrongNetwork,\n });\n }\n\n if (state.validating) {\n return (\n <StatusInfo\n // variant={\"gradient\"}\n angle={45}\n // fullWidth\n disabled\n loading\n description={descriptions?.connectWallet}\n id={id}\n type=\"button\"\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n\n return (\n <DefaultFallback\n bridgeLessOnly={bridgeLessOnly}\n status={state.status}\n buttonProps={{ ...buttonProps, id, type: \"button\" }}\n wrongNetwork={wrongNetwork}\n networkId={props.networkId}\n labels={labels}\n descriptions={descriptions}\n />\n );\n }, [state.status, state.validating, buttonProps, wrongNetwork]);\n\n /**\n * **Important: The chldren component will be rendered only if the status is equal to the required status and the network is correct.**\n */\n\n return (\n <Either value={state.status >= status && !wrongNetwork} left={Left}>\n {props.children}\n </Either>\n );\n};\n\nconst DefaultFallback = (props: {\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n buttonProps?: ButtonProps;\n networkId?: NetworkId;\n labels: alertMessages;\n bridgeLessOnly?: boolean;\n\n descriptions?: alertMessages;\n}) => {\n const { buttonProps, labels, descriptions } = props;\n const { connectWallet } = useAppContext();\n const { account } = useAccount();\n const matches = useMediaQuery(MEDIA_TABLET);\n // const { connect } = useWalletConnector();\n const onConnectOrderly = () => {\n modal.show(matches ? WalletConnectorSheetId : WalletConnectorModalId).then(\n (r) => console.log(r),\n (error) => console.log(error)\n );\n };\n\n const onConnectWallet = async () => {\n const res = await connectWallet();\n\n if (!res) return;\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n if (\n (res?.status ?? AccountStatusEnum.NotConnected) <\n AccountStatusEnum.EnableTrading\n ) {\n onConnectOrderly();\n }\n }\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n onConnectOrderly();\n } else {\n toast.success(\"Wallet connected\");\n }\n });\n\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorId, {\n networkId: props.networkId,\n bridgeLessOnly: props.bridgeLessOnly,\n })\n .then(\n (r) => {\n if (!r.wrongNetwork) {\n if (props.status >= AccountStatusEnum.Connected) {\n if (props.status < AccountStatusEnum.EnableTrading) {\n onConnectOrderly();\n } else {\n toast.success(\"Wallet connected\");\n }\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n };\n\n if (props.wrongNetwork) {\n return (\n <StatusInfo\n color=\"warning\"\n // size=\"md\"\n // fullWidth\n onClick={() => {\n switchChain();\n }}\n description={descriptions?.switchChain}\n {...buttonProps}\n >\n {labels.switchChain}\n </StatusInfo>\n );\n }\n\n return (\n <Match\n value={props.status}\n case={(value: AccountStatusEnum) => {\n if (value <= AccountStatusEnum.NotConnected) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectWallet();\n }}\n // fullWidth\n variant={\"gradient\"}\n angle={45}\n description={descriptions?.connectWallet}\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n if (value <= AccountStatusEnum.NotSignedIn) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectOrderly();\n }}\n // fullWidth\n angle={45}\n description={descriptions?.signin}\n {...buttonProps}\n >\n {labels.signin}\n </StatusInfo>\n );\n }\n }}\n default={\n <StatusInfo\n size=\"lg\"\n // fullWidth\n description={descriptions?.enableTrading}\n {...buttonProps}\n onClick={() => onConnectOrderly()}\n >\n {labels.enableTrading}\n </StatusInfo>\n }\n />\n );\n};\n\nAuthGuard.displayName = \"AuthGuard\";\n\nconst StatusInfo = (\n props: ButtonProps & {\n description?: string;\n }\n) => {\n const { description, ...buttonProps } = props;\n return (\n <Flex direction={\"column\"}>\n <Button {...buttonProps}></Button>\n {!!description && (\n <Box mt={4} className=\"oui-leading-none\" style={{ lineHeight: 0 }}>\n <Text size=\"2xs\" intensity={36}>\n {description}\n </Text>\n </Box>\n )}\n </Flex>\n );\n};\n\nexport { AuthGuard };\n","export type alertMessages = {\n connectWallet?: string;\n switchChain?: string;\n enableTrading?: string;\n signin?: string;\n};\n\nexport const LABELS = {\n connectWallet: \"Connect wallet\",\n switchChain: \"Switch network\",\n enableTrading: \"Enable trading\",\n signin: \"Sign in\",\n};\n\nexport const DESCRIPTIONS: alertMessages = {\n connectWallet: \"Please Connect wallet before starting to trade\",\n switchChain: \"Please switch to a supported network to continue\",\n enableTrading: \"Please Enable trading before starting to trade\",\n signin: \"Please sign in before starting to trade\",\n};\n","import { PropsWithChildren } from \"react\";\nimport { DataTable, DataTableProps, ExtensionSlot } from \"@orderly.network/ui\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { alertMessages, DESCRIPTIONS } from \"../constants/message\";\nimport { useAppContext, useDataTap } from \"@orderly.network/react-app\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { AuthGuard } from \"./authGuard\";\nimport { useAccount } from \"@orderly.network/hooks\";\n\nexport const AuthGuardDataTable = <RecordType extends unknown>(\n props: PropsWithChildren<\n DataTableProps<RecordType> &\n Omit<GuardViewProps, \"status\"> & {\n status?: AccountStatusEnum;\n classNames?: DataTableProps<RecordType>[\"classNames\"] & {\n authGuardDescription?: string;\n };\n }\n >\n) => {\n const {\n status = AccountStatusEnum.EnableTrading,\n // message,\n labels,\n description,\n dataSource,\n ...rest\n } = props;\n const data = useDataTap(dataSource, {\n accountStatus: status,\n });\n const { state } = useAccount();\n const { wrongNetwork } = useAppContext();\n\n return (\n <DataTable\n {...rest}\n dataSource={data}\n ignoreLoadingCheck={\n wrongNetwork || state.status < status || props.ignoreLoadingCheck\n }\n emptyView={\n <GuardView\n status={status}\n description={description}\n labels={labels}\n className={props.classNames?.authGuardDescription}\n visible={!state.validating}\n />\n }\n />\n );\n};\n\ntype GuardViewProps = {\n status: AccountStatusEnum;\n description?: alertMessages;\n labels?: alertMessages;\n className?: string;\n visible?: boolean;\n};\n\nconst GuardView = (props: GuardViewProps) => {\n const descriptions = { ...DESCRIPTIONS, ...props.description };\n if (!props.visible) return null;\n return (\n <Flex py={8}>\n <AuthGuard\n status={props.status}\n labels={props.labels}\n descriptions={descriptions}\n buttonProps={{\n size: \"md\",\n }}\n >\n <ExtensionSlot position={\"emptyDataState\"} />\n </AuthGuard>\n </Flex>\n );\n};\n","import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Box,\n EmptyDataState,\n} from \"@orderly.network/ui\";\nimport { PropsWithChildren } from \"react\";\nimport { AuthGuard } from \"./authGuard\";\n\ntype AuthGuardProps = {\n /** default value is\n * ```ts\n * {\n * connectWallet: \"Please connect wallet before starting to trade\",\n * signIn: \"Please sign in before starting to trade\",\n * enableTrading: \"Please sign in before starting to trade\",\n * wrongNetwork: \"Please switch to a supported network to continue.\",\n * }\n * ```\n */\n hint?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n status?: AccountStatusEnum;\n};\n\nconst AuthGuardEmpty = (props: PropsWithChildren<AuthGuardProps>) => {\n const {\n hint = {\n connectWallet: \"Please connect wallet before starting to trade\",\n signIn: \"Please sign in before starting to trade\",\n enableTrading: \"Please sign in before starting to trade\",\n wrongNetwork: \"Please switch to a supported network to continue.\",\n },\n status,\n } = props;\n\n return (\n <Box my={8}>\n <AuthGuard status={status} descriptions={{...hint, switchChain: hint.wrongNetwork}}>\n {props.children || <EmptyDataState />}\n </AuthGuard>\n </Box>\n );\n};\n\nAuthGuardEmpty.displayName = \"AuthGuardEmpty\";\n\nexport { AuthGuardEmpty };\n","import { useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { Tooltip } from \"@orderly.network/ui\";\nimport { PropsWithChildren, useMemo } from \"react\";\n\ntype AuthGuardProps = {\n content?: string;\n align?: \"center\" | \"end\" | \"start\";\n alignOffset?: number;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n sideOffset?: number;\n opactiy?: number;\n tooltip?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n};\n\nconst AuthGuardTooltip = (props: PropsWithChildren<AuthGuardProps>) => {\n const {\n opactiy = 90,\n tooltip = {\n connectWallet: \"Please connect wallet before set up\",\n signIn: \"Please sign in before set up\",\n enableTrading: \"Please enable trading before set up\",\n wrongNetwork: \"Please switch to a supported network to set up\",\n },\n } = props;\n const { state } = useAccount();\n const isSupport = true;\n const { wrongNetwork } = useAppContext();\n\n const hint = useMemo(() => {\n if (wrongNetwork) {\n return tooltip?.wrongNetwork;\n }\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n return tooltip?.connectWallet;\n case AccountStatusEnum.NotSignedIn:\n return tooltip?.signIn;\n case AccountStatusEnum.DisabledTrading:\n return tooltip?.enableTrading;\n case AccountStatusEnum.EnableTrading: {\n if (!isSupport) return tooltip?.wrongNetwork;\n return \"\";\n }\n default:\n return props.content;\n }\n }, [props.content, state, isSupport, tooltip]);\n\n const newOpacity = useMemo(() => {\n switch (state.status) {\n case AccountStatusEnum.NotConnected:\n case AccountStatusEnum.NotSignedIn:\n return opactiy;\n case AccountStatusEnum.EnableTrading: {\n if (!isSupport) return opactiy;\n return undefined;\n }\n default:\n return undefined;\n }\n }, [props.opactiy, state, isSupport]);\n\n return (\n <Tooltip\n content={hint}\n className=\"oui-text-2xs\"\n align={props.align}\n alignOffset={props.alignOffset}\n side={props.side}\n sideOffset={props.sideOffset}\n >\n <div\n style={{\n opacity: newOpacity,\n }}\n >\n {props.children}\n </div>\n </Tooltip>\n );\n};\n\nAuthGuardTooltip.displayName = \"AuthGuardTooltip\";\n\nexport { AuthGuardTooltip };\n"]}
@@ -0,0 +1 @@
1
+ .oui-absolute{position:absolute}.oui-left-0{left:0}.oui-top-1{top:.25rem}.oui-z-10{z-index:10}.oui-mb-4{margin-bottom:1rem}.oui-ml-1{margin-left:.25rem}.oui-ml-2{margin-left:.5rem}.oui-mt-1{margin-top:.25rem}.oui-h-\[8\.3px\]{height:8.3px}.oui-h-full{height:100%}.oui-w-\[8\.3px\]{width:8.3px}.oui-max-w-\[300px\]{max-width:300px}.oui-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.25rem*var(--tw-space-y-reverse));margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)))}.oui-rounded-full{border-radius:9999px}.oui-bg-base-2{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-base-2)/var(--tw-bg-opacity))}.oui-bg-primary-light{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-primary-light)/var(--tw-bg-opacity))}.oui-pl-8{padding-left:2rem}.oui-text-2xs{font-size:var(--oui-font-size-2xs,.75rem);line-height:1.125rem}.oui-text-xs{font-size:var(--oui-font-size-xs,calc(.875rem - 1px));line-height:1.25rem}.oui-font-semibold{font-weight:600}.oui-text-\[rgba\(96\,140\,255\,1\)\]{color:#608cff}.oui-text-base-contrast-54{color:rgb(var(--oui-color-base-foreground)/.54)}.oui-text-base-contrast\/60{color:rgb(var(--oui-color-base-foreground)/.6)}.oui-underline{text-decoration-line:underline}.oui-decoration-base-contrast-36{text-decoration-color:rgb(var(--oui-color-base-foreground)/.36)}.oui-decoration-dashed{text-decoration-style:dashed}.oui-underline-offset-4{text-underline-offset:4px}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.placeholder\:oui-text-sm::-moz-placeholder{font-size:var(--oui-font-size-sm,.875rem);line-height:1.25rem}.placeholder\:oui-text-sm::placeholder{font-size:var(--oui-font-size-sm,.875rem);line-height:1.25rem}.placeholder\:oui-text-base-contrast-20::-moz-placeholder{color:rgb(var(--oui-color-base-foreground)/.2)}.placeholder\:oui-text-base-contrast-20::placeholder{color:rgb(var(--oui-color-base-foreground)/.2)}.data-\[state\=checked\]\:oui-bg-\[\#3347FD\][data-state=checked]{--tw-bg-opacity:1;background-color:rgb(51 71 253/var(--tw-bg-opacity))}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@orderly.network/ui-connector",
3
+ "version": "2.0.0-alpha.1",
4
+ "description": "",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "keywords": [
8
+ "Orderly",
9
+ "UI",
10
+ "Exchange",
11
+ "DApp"
12
+ ],
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "dependencies": {
20
+ "@orderly.network/ui": "2.0.0-alpha.1",
21
+ "@orderly.network/hooks": "2.0.0-alpha.1",
22
+ "@orderly.network/types": "2.0.0-alpha.1",
23
+ "@orderly.network/react-app": "2.0.0-alpha.1",
24
+ "@orderly.network/ui-chain-selector": "2.0.0-alpha.1"
25
+ },
26
+ "devDependencies": {
27
+ "@types/react": "^18.3.2",
28
+ "@types/react-dom": "^18.3.0",
29
+ "react": "^18.3.1",
30
+ "react-dom": "^18.2.0",
31
+ "tailwindcss": "^3.4.4",
32
+ "tsup": "^7.3.0",
33
+ "tsconfig": "0.3.12"
34
+ },
35
+ "peerDependencies": {
36
+ "react": "^18.3.1",
37
+ "react-dom": "^18.2.0",
38
+ "@orderly.network/ui": "2.0.0-alpha.1"
39
+ },
40
+ "scripts": {
41
+ "build": "tsup && pnpm run build:css",
42
+ "build:css": "tailwindcss build src/tailwind.css -o dist/styles.css --minify",
43
+ "test": "echo \"Error: no test specified\" && exit 1"
44
+ }
45
+ }