@kodiak-finance/orderly-ui-connector 2.9.2-alpha.1 → 2.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -12,27 +12,37 @@ var orderlyUiChainSelector = require('@kodiak-finance/orderly-ui-chain-selector'
12
12
  // src/component/walletConnectorContent.tsx
13
13
  var StepItem = (props) => {
14
14
  const { title, description, showDivider } = props;
15
- return /* @__PURE__ */ jsxRuntime.jsxs(orderlyUi.Box, { position: "relative", className: "oui-pl-8", children: [
15
+ return /* @__PURE__ */ jsxRuntime.jsxs(orderlyUi.Box, { position: "relative", className: "oui-ps-8", children: [
16
16
  /* @__PURE__ */ jsxRuntime.jsxs(orderlyUi.Box, { children: [
17
17
  /* @__PURE__ */ jsxRuntime.jsx(orderlyUi.Text, { as: "div", intensity: 98, size: "sm", children: title }),
18
18
  /* @__PURE__ */ jsxRuntime.jsx(orderlyUi.Text, { as: "div", intensity: 54, size: "2xs", children: description })
19
19
  ] }),
20
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oui-absolute oui-left-0 oui-top-1 oui-z-10", children: /* @__PURE__ */ jsxRuntime.jsx(Identifier, { ...props }) }),
21
- showDivider && /* @__PURE__ */ jsxRuntime.jsx(orderlyUi.Box, { position: "absolute", left: 12, top: 23, bottom: -21, zIndex: 0, children: /* @__PURE__ */ jsxRuntime.jsx(
22
- orderlyUi.Divider,
20
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "oui-absolute oui-start-0 oui-top-1 oui-z-10", children: /* @__PURE__ */ jsxRuntime.jsx(Identifier, { ...props }) }),
21
+ showDivider && /* @__PURE__ */ jsxRuntime.jsx(
22
+ orderlyUi.Box,
23
23
  {
24
- lineStyle: "dashed",
25
- direction: "vertical",
26
- intensity: 16,
27
- className: "oui-h-full"
24
+ position: "absolute",
25
+ className: "oui-start-3",
26
+ top: 23,
27
+ bottom: -21,
28
+ zIndex: 0,
29
+ children: /* @__PURE__ */ jsxRuntime.jsx(
30
+ orderlyUi.Divider,
31
+ {
32
+ lineStyle: "dashed",
33
+ direction: "vertical",
34
+ intensity: 16,
35
+ className: "oui-h-full"
36
+ }
37
+ )
28
38
  }
29
- ) })
39
+ )
30
40
  ] });
31
41
  };
32
42
  var Identifier = (props) => {
33
43
  const { active, isLoading, isCompleted } = props;
34
44
  if (isLoading) {
35
- return /* @__PURE__ */ jsxRuntime.jsx(orderlyUi.Spinner, { size: "sm", className: "oui-ml-1" });
45
+ return /* @__PURE__ */ jsxRuntime.jsx(orderlyUi.Spinner, { size: "sm", className: "oui-ms-1" });
36
46
  }
37
47
  if (isCompleted) {
38
48
  return /* @__PURE__ */ jsxRuntime.jsx(orderlyUi.CheckedCircleFillIcon, { opacity: 1, className: "oui-text-primary" });
@@ -47,7 +57,7 @@ var Dot = ({
47
57
  "div",
48
58
  {
49
59
  className: orderlyUi.cn(
50
- "oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ml-2 oui-mt-1",
60
+ "oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ms-2 oui-mt-1",
51
61
  className,
52
62
  active ? "oui-bg-primary-light" : "oui-bg-base-2"
53
63
  )
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/walletConnectorContent.tsx","../src/component/step.tsx","../src/component/walletConnector.tsx","../src/component/useWalletConnectorBuilder.ts","../src/component/useAuthGuard.ts","../src/component/authGuard.tsx","../src/component/authGuardDataTable.tsx","../src/component/authGuardEmpty.tsx","../src/component/authGuardTooltip.tsx","../src/hooks/useAuthStatus.tsx","../src/component/featureFlag.tsx"],"names":["Box","Text","jsx","jsxs","steps","i18n","useEffect","useState","useAccount","useTranslation","toast","refCode","useMemo","AccountStatusEnum","useAppContext","Button","modal","Flex","Tooltip","AuthStatusEnum"],"mappings":"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","sourcesContent":["import { FC, ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n LedgerWalletKey,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n Button,\n capitalizeFirstLetter,\n Divider,\n Flex,\n inputFormatter,\n modal,\n Switch,\n Text,\n TextField,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { StepItem } from \"./step\";\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 const ee = useEventEmitter();\n const { t } = useTranslation();\n const { disconnect, namespace } = useWalletConnector();\n\n const { state: accountState, account } = useAccount();\n const [state, setState] = useState(initAccountState);\n const [activeStep, setActiveStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [showLedgerButton, setShowLedgerButton] = useState(false);\n const { ledgerWallet, setLedgerAddress } = useStorageLedgerAddress();\n const handleRef = useRef(0);\n const [firstShowDialog] = useLocalStorage(\n \"orderly-first-show-wallet-connector-dialog\",\n undefined,\n );\n useEffect(() => {\n return () => {\n localStorage.setItem(\"orderly-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: t(\"connector.createAccount\"),\n description: t(\"connector.createAccount.description\"),\n });\n }\n\n if (initAccountState < AccountStatusEnum.EnableTrading) {\n steps.push({\n key: \"enableTrading\",\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.enableTrading.description\"),\n });\n }\n\n return steps;\n }, [initAccountState, t]);\n\n useEffect(() => {\n if (namespace != ChainNamespace.solana) {\n setShowLedgerButton(false);\n return;\n }\n if (!ledgerWallet) {\n setShowLedgerButton(true);\n return;\n }\n if (ledgerWallet && account.address) {\n if (!ledgerWallet.includes(account.address)) {\n setShowLedgerButton(true);\n return;\n }\n }\n setShowLedgerButton(false);\n }, [namespace, account.address, ledgerWallet]);\n\n const onEnableTrading = () => {\n setLoading(true);\n return props\n .enableTrading(remember)\n .then(\n async (res) => {\n handleRef.current++;\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 setLoading(false);\n if (reject === -1) {\n return;\n }\n\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n console.log(\"enable trading catch error\", e);\n setLoading(false);\n });\n };\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n disconnect({\n label: (state as unknown as any).connectWallet?.name,\n }).then(() => {\n account.disconnect();\n if (typeof props.close === \"function\") {\n props.close();\n }\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\n if (reject === -1) {\n return;\n }\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n setLoading(false);\n });\n };\n\n return (\n <Box id=\"oui-wallet-connect-dialog-content\" className=\"oui-font-semibold\">\n <Text intensity={54} size=\"xs\">\n {t(\"connector.expired\")}\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 const isLast = index === steps.length - 1;\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 showDivider={!isLast}\n />\n );\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-primary-darken\"\n />\n </Flex>\n )}\n <Flex justify={\"center\"} mt={8} className=\"oui-w-full\">\n <Box className=\"oui-w-full\">\n <ActionButton\n state={state}\n signIn={onSignIn}\n enableTrading={onEnableTrading}\n loading={loading}\n disabled={state >= AccountStatusEnum.EnableTrading}\n showLedgerButton={showLedgerButton}\n />\n </Box>\n </Flex>\n {state > AccountStatusEnum.NotConnected && (\n <Flex\n justify={\"center\"}\n mt={4}\n gap={1}\n className=\"oui-w-full oui-cursor-pointer\"\n onClick={onDisconnect}\n >\n <DisconnectIcon />\n <Text className=\"oui-text-base-contrast-80 oui-text-sm\">\n {t(\"connector.disconnectWallet\")}\n </Text>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst DisconnectIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M2.24219 5.24316C2.24219 3.58641 3.58536 2.24316 5.24219 2.24316H8.24219C9.89894 2.24316 11.2422 3.58641 11.2422 5.24316C11.2422 5.65716 10.9062 5.99316 10.4922 5.99316C10.0782 5.99316 9.74219 5.65716 9.74219 5.24316C9.74219 4.41441 9.07094 3.74316 8.24219 3.74316H5.24219C4.41374 3.74316 3.74219 4.41441 3.74219 5.24316V12.7432C3.74219 13.5719 4.41374 14.2432 5.24219 14.2432H8.24219C9.07094 14.2432 9.74219 13.5719 9.74219 12.7432C9.74219 12.3292 10.0782 11.9932 10.4922 11.9932C10.9062 11.9932 11.2422 12.3292 11.2422 12.7432C11.2422 14.3999 9.89894 15.7432 8.24219 15.7432H5.24219C3.58536 15.7432 2.24219 14.3999 2.24219 12.7432V5.24316ZM7.49219 8.99316C7.49219 8.57916 7.82819 8.24316 8.24219 8.24316H13.9144L12.4377 6.74316L13.4922 5.68866L16.2814 8.45391C16.5739 8.74716 16.5739 9.23915 16.2814 9.5324L13.4922 12.2977L12.4377 11.2432L13.9144 9.74316H8.24219C7.82819 9.74316 7.49219 9.40716 7.49219 8.99316Z\"\n className=\"oui-fill-base-contrast-80\"\n />\n </svg>\n );\n};\n\nconst ActionButton: FC<{\n state: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: () => Promise<any>;\n loading: boolean;\n showLedgerButton?: boolean;\n disabled?: boolean;\n}> = ({\n state,\n signIn,\n enableTrading,\n loading,\n disabled,\n showLedgerButton,\n}) => {\n const { t } = useTranslation();\n\n if (state <= AccountStatusEnum.NotSignedIn) {\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => signIn()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.createAccount\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => signIn()}\n content={t(\"connector.createAccountWithLedger\")}\n />\n )}\n </Flex>\n );\n }\n\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => enableTrading()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => enableTrading()}\n disabled={disabled}\n content={t(\"connector.enableTradingWithLedger\")}\n />\n )}\n </Flex>\n );\n\n // return (\n // <Match\n // value={() => {\n // if (state <= AccountStatusEnum.NotSignedIn) {\n // return \"signIn\";\n // }\n // return \"enableTrading\";\n // }}\n // case={{\n // signIn: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => signIn()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.createAccount\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => signIn()}\n // content={t(\"connector.createAccountWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // enableTrading: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => enableTrading()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.enableTrading\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => enableTrading()}\n // disabled={disabled}\n // content={t(\"connector.enableTradingWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // }}\n // />\n // );\n};\n\nconst WithLedgerButton = ({\n onClick,\n disabled,\n content,\n}: {\n onClick: () => void;\n disabled?: boolean;\n content: ReactNode;\n}) => {\n const { t } = useTranslation();\n const { state } = useAccount();\n const address = state.address;\n const { setLedgerAddress } = useStorageLedgerAddress();\n if (!address) {\n return null;\n }\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n fullWidth\n onClick={() => {\n setLedgerAddress(address);\n onClick();\n }}\n disabled={disabled}\n className=\"oui-w-full\"\n >\n {content}\n </Button>\n );\n};\n\nconst ReferralCode: FC<WalletConnectContentProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <TextField\n placeholder={t(\"connector.referralCode.placeholder\")}\n fullWidth\n label=\"\"\n value={props.refCode}\n onChange={(e) => {\n const _value = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\n props.setRefCode(_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={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\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 { t } = useTranslation();\n\n const showRememberHint = () => {\n if (window.innerWidth > 1024) {\n return;\n }\n modal.alert({\n title: t(\"connector.rememberMe\"),\n message: (\n <span className=\"oui-text-2xs oui-text-base-contrast/60\">\n {t(\"connector.rememberMe.description\")}\n </span>\n ),\n });\n };\n return (\n <Tooltip\n content={t(\"connector.rememberMe.description\")}\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 {t(\"connector.rememberMe\")}\n </Text>\n </button>\n </Tooltip>\n );\n};\n\nfunction paseErrorMsg(reject: any): string {\n console.log(\"wallet callback error\", reject);\n console.log(\"message *** \", \"reject keys\", Object.keys(reject));\n Object.keys(reject).forEach((key) => {\n console.log(\"key\", key, \"-\", reject[key]);\n });\n let msg = i18n.t(\"connector.somethingWentWrong\");\n\n // if (typeof reject?.info?.error === \"object\" && \"message\" in reject?.info?.error) {\n // msg = reject?.info?.error?.message;\n // }\n\n // if (typeof reject?.shortMessage === 'string') {\n // msg = reject.shortMessage;\n // }\n\n if (reject.toString().includes(\"rejected\")) {\n msg = i18n.t(\"connector.userRejected\");\n }\n\n return capitalizeFirstLetter(msg) ?? msg;\n}\n","import { FC } from \"react\";\nimport {\n Box,\n CheckedCircleFillIcon,\n cn,\n Divider,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype StepItemProps = {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n title: string;\n description: string;\n showDivider?: boolean;\n};\n\nexport const StepItem = (props: StepItemProps) => {\n const { title, description, showDivider } = props;\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 <div className=\"oui-absolute oui-left-0 oui-top-1 oui-z-10\">\n <Identifier {...props} />\n </div>\n {showDivider && (\n <Box position={\"absolute\"} left={12} top={23} bottom={-21} zIndex={0}>\n <Divider\n lineStyle={\"dashed\"}\n direction={\"vertical\"}\n intensity={16}\n className=\"oui-h-full\"\n />\n </Box>\n )}\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 if (isLoading) {\n return <Spinner size={\"sm\"} className={\"oui-ml-1\"} />;\n }\n\n if (isCompleted) {\n return <CheckedCircleFillIcon opacity={1} className=\"oui-text-primary\" />;\n }\n\n return <Dot active={!!active} />;\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-primary\" />\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 React from \"react\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@kodiak-finance/orderly-ui\";\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: React.FC<any> = (props) => {\n const state = useWalletConnectorBuilder();\n return <WalletConnectContent {...state} {...props} />;\n};\n\nregisterSimpleDialog(WalletConnectorModalId, WalletConnectorWidget, {\n size: \"sm\",\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n\nregisterSimpleSheet(WalletConnectorSheetId, WalletConnectorWidget, {\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n","import { useEffect, useState } from \"react\";\nimport {\n useAccount,\n useGetReferralCode,\n useLazyQuery,\n useMutation,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\n\nexport const useWalletConnectorBuilder = () => {\n const { state, createOrderlyKey, createAccount } = useAccount();\n const [refCode, setRefCode] = useState(\"\");\n const [helpText, setHelpText] = useState(\"\");\n const { t } = useTranslation();\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(state.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(t(\"connector.walletConnected\"));\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 () => {\n if (refCode.length === 0) {\n return Promise.resolve(undefined);\n }\n\n if (refCode.length > 0 && (refCode.length < 4 || refCode.length > 10)) {\n return Promise.resolve(t(\"connector.referralCode.invalid\"));\n }\n\n const { exist } = await verifyRefCode();\n\n if (exist === false) {\n return Promise.resolve(t(\"connector.referralCode.notExist\"));\n }\n\n return Promise.resolve(undefined);\n };\n\n const showRefCodeInput = (referral_code?.length || 0) === 0 && !isLoading;\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 { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\n/**\n * Hook to check if the user is authenticated and authorized\n * @param status - Required account status to be satisfied. If not provided, defaults to EnableTrading or EnableTradingWithoutConnected based on current state\n * @returns boolean indicating if the user meets the authentication requirements\n */\nexport const useAuthGuard = (status?: AccountStatusEnum): boolean => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n return useMemo(() => {\n return state.status >= _status && !wrongNetwork && !disabledConnect;\n }, [state.status, _status, wrongNetwork, disabledConnect]);\n};\n","import React, { ReactElement, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, NetworkId } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Either,\n modal,\n Text,\n toast,\n useScreen,\n type ButtonProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"./walletConnector\";\n\ntype ChainProps = {\n networkId?: NetworkId;\n bridgeLessOnly?: boolean;\n};\n\nexport type alertMessages = {\n connectWallet?: string;\n switchChain?: string;\n enableTrading?: string;\n signin?: string;\n};\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\nexport const AuthGuard: React.FC<React.PropsWithChildren<AuthGuardProps>> = (\n props,\n) => {\n const {\n status,\n buttonProps,\n fallback,\n descriptions,\n classNames,\n networkId,\n id,\n bridgeLessOnly,\n // ...rest\n } = props;\n const { t } = useTranslation();\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const labels = {\n connectWallet: t(\"connector.connectWallet\"),\n switchChain: t(\"connector.wrongNetwork\"),\n enableTrading: t(\"connector.enableTrading\"),\n signin: t(\"connector.createAccount\"),\n ...props.labels,\n };\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 && !disabledConnect) {\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 disabledConnect={disabledConnect}\n />\n );\n }, [\n state.status,\n state.validating,\n buttonProps,\n wrongNetwork,\n labels,\n descriptions,\n ]);\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\n value={state.status >= _status && !wrongNetwork && !disabledConnect}\n left={Left}\n >\n {props.children}\n </Either>\n );\n};\n\nconst ModalTitle: React.FC = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nconst DefaultFallback: React.FC<{\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n buttonProps?: ButtonProps;\n networkId?: NetworkId;\n labels: alertMessages;\n bridgeLessOnly?: boolean;\n descriptions?: alertMessages;\n disabledConnect?: boolean;\n}> = (props) => {\n const { buttonProps, labels, descriptions } = props;\n const { t } = useTranslation();\n const { connectWallet } = useAppContext();\n const { account } = useAccount();\n const { isMobile } = useScreen();\n\n const onConnectOrderly = () => {\n modal\n .show(isMobile ? WalletConnectorSheetId : WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .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) {\n return;\n }\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(t(\"connector.walletConnected\"));\n }\n });\n\n modal\n .show<{ wrongNetwork: boolean }>(\n isMobile ? ChainSelectorSheetId : ChainSelectorDialogId,\n {\n networkId: props.networkId,\n bridgeLessOnly: props.bridgeLessOnly,\n },\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(t(\"connector.walletConnected\"));\n }\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n if (props.wrongNetwork && !props.disabledConnect) {\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 if (props.status <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectWallet();\n }}\n // fullWidth\n variant={props.disabledConnect ? undefined : \"gradient\"}\n angle={45}\n description={descriptions?.connectWallet}\n disabled={props.disabledConnect}\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n\n if (props.status <= 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 return (\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 // return (\n // <Match\n // value={props.status}\n // case={(value: AccountStatusEnum) => {\n // if (value <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n // return (\n // <StatusInfo\n // size=\"lg\"\n // onClick={() => {\n // onConnectWallet();\n // }}\n // // fullWidth\n // variant={props.disabledConnect ? undefined : \"gradient\"}\n // angle={45}\n // description={descriptions?.connectWallet}\n // disabled={props.disabledConnect}\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: React.FC<ButtonProps & { description?: string }> = (\n props,\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","import React, { PropsWithChildren, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n InjectableEmptyDataState,\n DataTable,\n DataTableProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { alertMessages, AuthGuard } from \"./authGuard\";\n\nexport const AuthGuardDataTable = <RecordType,>(\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,\n // message,\n labels,\n description,\n dataSource,\n children,\n ...rest\n } = props;\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const data = useDataTap(dataSource, {\n accountStatus: _status,\n });\n\n const ignoreLoadingCheck =\n wrongNetwork ||\n disabledConnect ||\n state.status < _status ||\n props.ignoreLoadingCheck;\n\n return (\n <DataTable\n dataSource={data}\n ignoreLoadingCheck={ignoreLoadingCheck}\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 manualPagination\n {...rest}\n >\n {children}\n </DataTable>\n );\n};\n\ntype GuardViewProps = {\n status: AccountStatusEnum;\n description?: alertMessages;\n labels?: alertMessages;\n className?: string;\n visible?: boolean;\n};\n\nconst GuardView: React.FC<GuardViewProps> = (props) => {\n const { t } = useTranslation();\n\n const DESCRIPTIONS: alertMessages = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n switchChain: t(\"connector.wrongNetwork.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n signin: t(\"connector.trade.createAccount.tooltip\"),\n };\n\n const descriptions = { ...DESCRIPTIONS, ...props.description };\n if (!props.visible) {\n return null;\n }\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 <InjectableEmptyDataState />\n </AuthGuard>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Box, EmptyDataState } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"./authGuard\";\n\ntype AuthGuardProps = {\n hint?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n status?: AccountStatusEnum;\n};\n\nexport const AuthGuardEmpty: React.FC<\n React.PropsWithChildren<AuthGuardProps>\n> = (props) => {\n const { t } = useTranslation();\n const {\n hint = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n signIn: t(\"connector.trade.createAccount.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n status,\n } = props;\n\n return (\n <Box my={8}>\n <AuthGuard\n status={status}\n descriptions={{ ...hint, switchChain: hint.wrongNetwork }}\n buttonProps={{\n size: \"md\",\n }}\n >\n {props.children || <EmptyDataState />}\n </AuthGuard>\n </Box>\n );\n};\n\nAuthGuardEmpty.displayName = \"AuthGuardEmpty\";\n","import { PropsWithChildren, useMemo, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Tooltip } from \"@kodiak-finance/orderly-ui\";\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 { t } = useTranslation();\n\n const {\n opactiy = 90,\n tooltip = {\n connectWallet: t(\"connector.setUp.connectWallet.tooltip\"),\n signIn: t(\"connector.setUp.createAccount.tooltip\"),\n enableTrading: t(\"connector.setUp.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n } = props;\n\n const [open, setOpen] = useState(false);\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 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 return undefined;\n }\n default:\n return undefined;\n }\n }, [props.opactiy, state, isSupport]);\n\n return (\n <Tooltip\n open={hint ? open : false}\n onOpenChange={setOpen}\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 style={{ opacity: newOpacity }}>{props.children}</div>\n </Tooltip>\n );\n};\n\nAuthGuardTooltip.displayName = \"AuthGuardTooltip\";\n\nexport { AuthGuardTooltip };\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport enum AuthStatusEnum {\n WrongNetwork,\n ConnectWallet,\n CreateAccount,\n EnableTrading,\n}\n\nexport const useAuthStatus = () => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork && !disabledConnect) {\n return AuthStatusEnum.WrongNetwork;\n }\n\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return AuthStatusEnum.EnableTrading;\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabledConnect) {\n return AuthStatusEnum.ConnectWallet;\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return AuthStatusEnum.CreateAccount;\n }\n\n return AuthStatusEnum.EnableTrading;\n }, [state.status, wrongNetwork, disabledConnect]);\n};\n","import { memo } from \"react\";\nimport { FlagKeys, useFeatureFlag } from \"@kodiak-finance/orderly-hooks\";\n\n/**\n * Props for the FeatureFlag component\n */\nexport type FeatureFlagProps = {\n /** Content to render when the feature flag is enabled */\n whenEnabled?: React.ReactNode;\n /** Content to render when the feature flag is disabled */\n whenDisabled?: React.ReactNode;\n /** The feature flag key to check */\n flagKey: FlagKeys;\n};\n\n/**\n * FeatureFlag component that conditionally renders content based on feature flag status\n *\n * @example\n * ```tsx\n * // Only show when enabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewIsolatedMarginView />}\n * />\n *\n * // Only show when disabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenDisabled={<OldMarginView />}\n * />\n *\n * // Show different content based on flag status\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewView />}\n * whenDisabled={<OldView />}\n * />\n * ```\n */\nconst FeatureFlag = memo((props: FeatureFlagProps) => {\n const { whenEnabled, whenDisabled, flagKey } = props;\n const { enabled } = useFeatureFlag(flagKey);\n\n return enabled ? (whenEnabled ?? null) : (whenDisabled ?? null);\n});\n\nFeatureFlag.displayName = \"FeatureFlag\";\n\nexport { FeatureFlag };\n"]}
1
+ {"version":3,"sources":["../src/component/walletConnectorContent.tsx","../src/component/step.tsx","../src/component/walletConnector.tsx","../src/component/useWalletConnectorBuilder.ts","../src/component/useAuthGuard.ts","../src/component/authGuard.tsx","../src/component/authGuardDataTable.tsx","../src/component/authGuardEmpty.tsx","../src/component/authGuardTooltip.tsx","../src/hooks/useAuthStatus.tsx","../src/component/featureFlag.tsx"],"names":["Box","Text","jsx","jsxs","steps","i18n","useEffect","useState","useAccount","useTranslation","toast","refCode","useMemo","AccountStatusEnum","useAppContext","Button","modal","Flex","Tooltip","AuthStatusEnum"],"mappings":"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","sourcesContent":["import { FC, ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n LedgerWalletKey,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n Button,\n capitalizeFirstLetter,\n Divider,\n Flex,\n inputFormatter,\n modal,\n Switch,\n Text,\n TextField,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { StepItem } from \"./step\";\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 const ee = useEventEmitter();\n const { t } = useTranslation();\n const { disconnect, namespace } = useWalletConnector();\n\n const { state: accountState, account } = useAccount();\n const [state, setState] = useState(initAccountState);\n const [activeStep, setActiveStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [showLedgerButton, setShowLedgerButton] = useState(false);\n const { ledgerWallet, setLedgerAddress } = useStorageLedgerAddress();\n const handleRef = useRef(0);\n const [firstShowDialog] = useLocalStorage(\n \"orderly-first-show-wallet-connector-dialog\",\n undefined,\n );\n useEffect(() => {\n return () => {\n localStorage.setItem(\"orderly-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: t(\"connector.createAccount\"),\n description: t(\"connector.createAccount.description\"),\n });\n }\n\n if (initAccountState < AccountStatusEnum.EnableTrading) {\n steps.push({\n key: \"enableTrading\",\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.enableTrading.description\"),\n });\n }\n\n return steps;\n }, [initAccountState, t]);\n\n useEffect(() => {\n if (namespace != ChainNamespace.solana) {\n setShowLedgerButton(false);\n return;\n }\n if (!ledgerWallet) {\n setShowLedgerButton(true);\n return;\n }\n if (ledgerWallet && account.address) {\n if (!ledgerWallet.includes(account.address)) {\n setShowLedgerButton(true);\n return;\n }\n }\n setShowLedgerButton(false);\n }, [namespace, account.address, ledgerWallet]);\n\n const onEnableTrading = () => {\n setLoading(true);\n return props\n .enableTrading(remember)\n .then(\n async (res) => {\n handleRef.current++;\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 setLoading(false);\n if (reject === -1) {\n return;\n }\n\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n console.log(\"enable trading catch error\", e);\n setLoading(false);\n });\n };\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n disconnect({\n label: (state as unknown as any).connectWallet?.name,\n }).then(() => {\n account.disconnect();\n if (typeof props.close === \"function\") {\n props.close();\n }\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\n if (reject === -1) {\n return;\n }\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n setLoading(false);\n });\n };\n\n return (\n <Box id=\"oui-wallet-connect-dialog-content\" className=\"oui-font-semibold\">\n <Text intensity={54} size=\"xs\">\n {t(\"connector.expired\")}\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 const isLast = index === steps.length - 1;\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 showDivider={!isLast}\n />\n );\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-primary-darken\"\n />\n </Flex>\n )}\n <Flex justify={\"center\"} mt={8} className=\"oui-w-full\">\n <Box className=\"oui-w-full\">\n <ActionButton\n state={state}\n signIn={onSignIn}\n enableTrading={onEnableTrading}\n loading={loading}\n disabled={state >= AccountStatusEnum.EnableTrading}\n showLedgerButton={showLedgerButton}\n />\n </Box>\n </Flex>\n {state > AccountStatusEnum.NotConnected && (\n <Flex\n justify={\"center\"}\n mt={4}\n gap={1}\n className=\"oui-w-full oui-cursor-pointer\"\n onClick={onDisconnect}\n >\n <DisconnectIcon />\n <Text className=\"oui-text-base-contrast-80 oui-text-sm\">\n {t(\"connector.disconnectWallet\")}\n </Text>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst DisconnectIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M2.24219 5.24316C2.24219 3.58641 3.58536 2.24316 5.24219 2.24316H8.24219C9.89894 2.24316 11.2422 3.58641 11.2422 5.24316C11.2422 5.65716 10.9062 5.99316 10.4922 5.99316C10.0782 5.99316 9.74219 5.65716 9.74219 5.24316C9.74219 4.41441 9.07094 3.74316 8.24219 3.74316H5.24219C4.41374 3.74316 3.74219 4.41441 3.74219 5.24316V12.7432C3.74219 13.5719 4.41374 14.2432 5.24219 14.2432H8.24219C9.07094 14.2432 9.74219 13.5719 9.74219 12.7432C9.74219 12.3292 10.0782 11.9932 10.4922 11.9932C10.9062 11.9932 11.2422 12.3292 11.2422 12.7432C11.2422 14.3999 9.89894 15.7432 8.24219 15.7432H5.24219C3.58536 15.7432 2.24219 14.3999 2.24219 12.7432V5.24316ZM7.49219 8.99316C7.49219 8.57916 7.82819 8.24316 8.24219 8.24316H13.9144L12.4377 6.74316L13.4922 5.68866L16.2814 8.45391C16.5739 8.74716 16.5739 9.23915 16.2814 9.5324L13.4922 12.2977L12.4377 11.2432L13.9144 9.74316H8.24219C7.82819 9.74316 7.49219 9.40716 7.49219 8.99316Z\"\n className=\"oui-fill-base-contrast-80\"\n />\n </svg>\n );\n};\n\nconst ActionButton: FC<{\n state: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: () => Promise<any>;\n loading: boolean;\n showLedgerButton?: boolean;\n disabled?: boolean;\n}> = ({\n state,\n signIn,\n enableTrading,\n loading,\n disabled,\n showLedgerButton,\n}) => {\n const { t } = useTranslation();\n\n if (state <= AccountStatusEnum.NotSignedIn) {\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => signIn()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.createAccount\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => signIn()}\n content={t(\"connector.createAccountWithLedger\")}\n />\n )}\n </Flex>\n );\n }\n\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => enableTrading()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => enableTrading()}\n disabled={disabled}\n content={t(\"connector.enableTradingWithLedger\")}\n />\n )}\n </Flex>\n );\n\n // return (\n // <Match\n // value={() => {\n // if (state <= AccountStatusEnum.NotSignedIn) {\n // return \"signIn\";\n // }\n // return \"enableTrading\";\n // }}\n // case={{\n // signIn: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => signIn()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.createAccount\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => signIn()}\n // content={t(\"connector.createAccountWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // enableTrading: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => enableTrading()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.enableTrading\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => enableTrading()}\n // disabled={disabled}\n // content={t(\"connector.enableTradingWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // }}\n // />\n // );\n};\n\nconst WithLedgerButton = ({\n onClick,\n disabled,\n content,\n}: {\n onClick: () => void;\n disabled?: boolean;\n content: ReactNode;\n}) => {\n const { t } = useTranslation();\n const { state } = useAccount();\n const address = state.address;\n const { setLedgerAddress } = useStorageLedgerAddress();\n if (!address) {\n return null;\n }\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n fullWidth\n onClick={() => {\n setLedgerAddress(address);\n onClick();\n }}\n disabled={disabled}\n className=\"oui-w-full\"\n >\n {content}\n </Button>\n );\n};\n\nconst ReferralCode: FC<WalletConnectContentProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <TextField\n placeholder={t(\"connector.referralCode.placeholder\")}\n fullWidth\n label=\"\"\n value={props.refCode}\n onChange={(e) => {\n const _value = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\n props.setRefCode(_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={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\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 { t } = useTranslation();\n\n const showRememberHint = () => {\n if (window.innerWidth > 1024) {\n return;\n }\n modal.alert({\n title: t(\"connector.rememberMe\"),\n message: (\n <span className=\"oui-text-2xs oui-text-base-contrast/60\">\n {t(\"connector.rememberMe.description\")}\n </span>\n ),\n });\n };\n return (\n <Tooltip\n content={t(\"connector.rememberMe.description\")}\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 {t(\"connector.rememberMe\")}\n </Text>\n </button>\n </Tooltip>\n );\n};\n\nfunction paseErrorMsg(reject: any): string {\n console.log(\"wallet callback error\", reject);\n console.log(\"message *** \", \"reject keys\", Object.keys(reject));\n Object.keys(reject).forEach((key) => {\n console.log(\"key\", key, \"-\", reject[key]);\n });\n let msg = i18n.t(\"connector.somethingWentWrong\");\n\n // if (typeof reject?.info?.error === \"object\" && \"message\" in reject?.info?.error) {\n // msg = reject?.info?.error?.message;\n // }\n\n // if (typeof reject?.shortMessage === 'string') {\n // msg = reject.shortMessage;\n // }\n\n if (reject.toString().includes(\"rejected\")) {\n msg = i18n.t(\"connector.userRejected\");\n }\n\n return capitalizeFirstLetter(msg) ?? msg;\n}\n","import { FC } from \"react\";\nimport {\n Box,\n CheckedCircleFillIcon,\n cn,\n Divider,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype StepItemProps = {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n title: string;\n description: string;\n showDivider?: boolean;\n};\n\nexport const StepItem = (props: StepItemProps) => {\n const { title, description, showDivider } = props;\n return (\n <Box position=\"relative\" className=\"oui-ps-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 <div className=\"oui-absolute oui-start-0 oui-top-1 oui-z-10\">\n <Identifier {...props} />\n </div>\n {showDivider && (\n <Box\n position={\"absolute\"}\n className=\"oui-start-3\"\n top={23}\n bottom={-21}\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 );\n};\n\nconst Identifier = (props: {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n}) => {\n const { active, isLoading, isCompleted } = props;\n\n if (isLoading) {\n return <Spinner size={\"sm\"} className={\"oui-ms-1\"} />;\n }\n\n if (isCompleted) {\n return <CheckedCircleFillIcon opacity={1} className=\"oui-text-primary\" />;\n }\n\n return <Dot active={!!active} />;\n\n // return (\n // <Match\n // className={\"oui-absolute oui-start-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-ms-1\"} />\n // </div>\n // ),\n // completed: (\n // <div>\n // <CheckedCircleFillIcon opacity={1} className=\"oui-text-primary\" />\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-ms-2 oui-mt-1\",\n className,\n active ? \"oui-bg-primary-light\" : \"oui-bg-base-2\",\n )}\n />\n );\n};\n","import React from \"react\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@kodiak-finance/orderly-ui\";\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: React.FC<any> = (props) => {\n const state = useWalletConnectorBuilder();\n return <WalletConnectContent {...state} {...props} />;\n};\n\nregisterSimpleDialog(WalletConnectorModalId, WalletConnectorWidget, {\n size: \"sm\",\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n\nregisterSimpleSheet(WalletConnectorSheetId, WalletConnectorWidget, {\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n","import { useEffect, useState } from \"react\";\nimport {\n useAccount,\n useGetReferralCode,\n useLazyQuery,\n useMutation,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\n\nexport const useWalletConnectorBuilder = () => {\n const { state, createOrderlyKey, createAccount } = useAccount();\n const [refCode, setRefCode] = useState(\"\");\n const [helpText, setHelpText] = useState(\"\");\n const { t } = useTranslation();\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(state.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(t(\"connector.walletConnected\"));\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 () => {\n if (refCode.length === 0) {\n return Promise.resolve(undefined);\n }\n\n if (refCode.length > 0 && (refCode.length < 4 || refCode.length > 10)) {\n return Promise.resolve(t(\"connector.referralCode.invalid\"));\n }\n\n const { exist } = await verifyRefCode();\n\n if (exist === false) {\n return Promise.resolve(t(\"connector.referralCode.notExist\"));\n }\n\n return Promise.resolve(undefined);\n };\n\n const showRefCodeInput = (referral_code?.length || 0) === 0 && !isLoading;\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 { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\n/**\n * Hook to check if the user is authenticated and authorized\n * @param status - Required account status to be satisfied. If not provided, defaults to EnableTrading or EnableTradingWithoutConnected based on current state\n * @returns boolean indicating if the user meets the authentication requirements\n */\nexport const useAuthGuard = (status?: AccountStatusEnum): boolean => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n return useMemo(() => {\n return state.status >= _status && !wrongNetwork && !disabledConnect;\n }, [state.status, _status, wrongNetwork, disabledConnect]);\n};\n","import React, { ReactElement, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, NetworkId } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Either,\n modal,\n Text,\n toast,\n useScreen,\n type ButtonProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"./walletConnector\";\n\ntype ChainProps = {\n networkId?: NetworkId;\n bridgeLessOnly?: boolean;\n};\n\nexport type alertMessages = {\n connectWallet?: string;\n switchChain?: string;\n enableTrading?: string;\n signin?: string;\n};\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\nexport const AuthGuard: React.FC<React.PropsWithChildren<AuthGuardProps>> = (\n props,\n) => {\n const {\n status,\n buttonProps,\n fallback,\n descriptions,\n classNames,\n networkId,\n id,\n bridgeLessOnly,\n // ...rest\n } = props;\n const { t } = useTranslation();\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const labels = {\n connectWallet: t(\"connector.connectWallet\"),\n switchChain: t(\"connector.wrongNetwork\"),\n enableTrading: t(\"connector.enableTrading\"),\n signin: t(\"connector.createAccount\"),\n ...props.labels,\n };\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 && !disabledConnect) {\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 disabledConnect={disabledConnect}\n />\n );\n }, [\n state.status,\n state.validating,\n buttonProps,\n wrongNetwork,\n labels,\n descriptions,\n ]);\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\n value={state.status >= _status && !wrongNetwork && !disabledConnect}\n left={Left}\n >\n {props.children}\n </Either>\n );\n};\n\nconst ModalTitle: React.FC = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nconst DefaultFallback: React.FC<{\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n buttonProps?: ButtonProps;\n networkId?: NetworkId;\n labels: alertMessages;\n bridgeLessOnly?: boolean;\n descriptions?: alertMessages;\n disabledConnect?: boolean;\n}> = (props) => {\n const { buttonProps, labels, descriptions } = props;\n const { t } = useTranslation();\n const { connectWallet } = useAppContext();\n const { account } = useAccount();\n const { isMobile } = useScreen();\n\n const onConnectOrderly = () => {\n modal\n .show(isMobile ? WalletConnectorSheetId : WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .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) {\n return;\n }\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(t(\"connector.walletConnected\"));\n }\n });\n\n modal\n .show<{ wrongNetwork: boolean }>(\n isMobile ? ChainSelectorSheetId : ChainSelectorDialogId,\n {\n networkId: props.networkId,\n bridgeLessOnly: props.bridgeLessOnly,\n },\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(t(\"connector.walletConnected\"));\n }\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n if (props.wrongNetwork && !props.disabledConnect) {\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 if (props.status <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectWallet();\n }}\n // fullWidth\n variant={props.disabledConnect ? undefined : \"gradient\"}\n angle={45}\n description={descriptions?.connectWallet}\n disabled={props.disabledConnect}\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n\n if (props.status <= 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 return (\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 // return (\n // <Match\n // value={props.status}\n // case={(value: AccountStatusEnum) => {\n // if (value <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n // return (\n // <StatusInfo\n // size=\"lg\"\n // onClick={() => {\n // onConnectWallet();\n // }}\n // // fullWidth\n // variant={props.disabledConnect ? undefined : \"gradient\"}\n // angle={45}\n // description={descriptions?.connectWallet}\n // disabled={props.disabledConnect}\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: React.FC<ButtonProps & { description?: string }> = (\n props,\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","import React, { PropsWithChildren, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n InjectableEmptyDataState,\n DataTable,\n DataTableProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { alertMessages, AuthGuard } from \"./authGuard\";\n\nexport const AuthGuardDataTable = <RecordType,>(\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,\n // message,\n labels,\n description,\n dataSource,\n children,\n ...rest\n } = props;\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const data = useDataTap(dataSource, {\n accountStatus: _status,\n });\n\n const ignoreLoadingCheck =\n wrongNetwork ||\n disabledConnect ||\n state.status < _status ||\n props.ignoreLoadingCheck;\n\n return (\n <DataTable\n dataSource={data}\n ignoreLoadingCheck={ignoreLoadingCheck}\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 manualPagination\n {...rest}\n >\n {children}\n </DataTable>\n );\n};\n\ntype GuardViewProps = {\n status: AccountStatusEnum;\n description?: alertMessages;\n labels?: alertMessages;\n className?: string;\n visible?: boolean;\n};\n\nconst GuardView: React.FC<GuardViewProps> = (props) => {\n const { t } = useTranslation();\n\n const DESCRIPTIONS: alertMessages = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n switchChain: t(\"connector.wrongNetwork.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n signin: t(\"connector.trade.createAccount.tooltip\"),\n };\n\n const descriptions = { ...DESCRIPTIONS, ...props.description };\n if (!props.visible) {\n return null;\n }\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 <InjectableEmptyDataState />\n </AuthGuard>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Box, EmptyDataState } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"./authGuard\";\n\ntype AuthGuardProps = {\n hint?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n status?: AccountStatusEnum;\n};\n\nexport const AuthGuardEmpty: React.FC<\n React.PropsWithChildren<AuthGuardProps>\n> = (props) => {\n const { t } = useTranslation();\n const {\n hint = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n signIn: t(\"connector.trade.createAccount.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n status,\n } = props;\n\n return (\n <Box my={8}>\n <AuthGuard\n status={status}\n descriptions={{ ...hint, switchChain: hint.wrongNetwork }}\n buttonProps={{\n size: \"md\",\n }}\n >\n {props.children || <EmptyDataState />}\n </AuthGuard>\n </Box>\n );\n};\n\nAuthGuardEmpty.displayName = \"AuthGuardEmpty\";\n","import { PropsWithChildren, useMemo, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Tooltip } from \"@kodiak-finance/orderly-ui\";\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 { t } = useTranslation();\n\n const {\n opactiy = 90,\n tooltip = {\n connectWallet: t(\"connector.setUp.connectWallet.tooltip\"),\n signIn: t(\"connector.setUp.createAccount.tooltip\"),\n enableTrading: t(\"connector.setUp.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n } = props;\n\n const [open, setOpen] = useState(false);\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 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 return undefined;\n }\n default:\n return undefined;\n }\n }, [props.opactiy, state, isSupport]);\n\n return (\n <Tooltip\n open={hint ? open : false}\n onOpenChange={setOpen}\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 style={{ opacity: newOpacity }}>{props.children}</div>\n </Tooltip>\n );\n};\n\nAuthGuardTooltip.displayName = \"AuthGuardTooltip\";\n\nexport { AuthGuardTooltip };\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport enum AuthStatusEnum {\n WrongNetwork,\n ConnectWallet,\n CreateAccount,\n EnableTrading,\n}\n\nexport const useAuthStatus = () => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork && !disabledConnect) {\n return AuthStatusEnum.WrongNetwork;\n }\n\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return AuthStatusEnum.EnableTrading;\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabledConnect) {\n return AuthStatusEnum.ConnectWallet;\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return AuthStatusEnum.CreateAccount;\n }\n\n return AuthStatusEnum.EnableTrading;\n }, [state.status, wrongNetwork, disabledConnect]);\n};\n","import { memo } from \"react\";\nimport { FlagKeys, useFeatureFlag } from \"@kodiak-finance/orderly-hooks\";\n\n/**\n * Props for the FeatureFlag component\n */\nexport type FeatureFlagProps = {\n /** Content to render when the feature flag is enabled */\n whenEnabled?: React.ReactNode;\n /** Content to render when the feature flag is disabled */\n whenDisabled?: React.ReactNode;\n /** The feature flag key to check */\n flagKey: FlagKeys;\n};\n\n/**\n * FeatureFlag component that conditionally renders content based on feature flag status\n *\n * @example\n * ```tsx\n * // Only show when enabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewIsolatedMarginView />}\n * />\n *\n * // Only show when disabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenDisabled={<OldMarginView />}\n * />\n *\n * // Show different content based on flag status\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewView />}\n * whenDisabled={<OldView />}\n * />\n * ```\n */\nconst FeatureFlag = memo((props: FeatureFlagProps) => {\n const { whenEnabled, whenDisabled, flagKey } = props;\n const { enabled } = useFeatureFlag(flagKey);\n\n return enabled ? (whenEnabled ?? null) : (whenDisabled ?? null);\n});\n\nFeatureFlag.displayName = \"FeatureFlag\";\n\nexport { FeatureFlag };\n"]}
package/dist/index.mjs CHANGED
@@ -10,27 +10,37 @@ import { ChainSelectorSheetId, ChainSelectorDialogId } from '@kodiak-finance/ord
10
10
  // src/component/walletConnectorContent.tsx
11
11
  var StepItem = (props) => {
12
12
  const { title, description, showDivider } = props;
13
- return /* @__PURE__ */ jsxs(Box, { position: "relative", className: "oui-pl-8", children: [
13
+ return /* @__PURE__ */ jsxs(Box, { position: "relative", className: "oui-ps-8", children: [
14
14
  /* @__PURE__ */ jsxs(Box, { children: [
15
15
  /* @__PURE__ */ jsx(Text, { as: "div", intensity: 98, size: "sm", children: title }),
16
16
  /* @__PURE__ */ jsx(Text, { as: "div", intensity: 54, size: "2xs", children: description })
17
17
  ] }),
18
- /* @__PURE__ */ jsx("div", { className: "oui-absolute oui-left-0 oui-top-1 oui-z-10", children: /* @__PURE__ */ jsx(Identifier, { ...props }) }),
19
- showDivider && /* @__PURE__ */ jsx(Box, { position: "absolute", left: 12, top: 23, bottom: -21, zIndex: 0, children: /* @__PURE__ */ jsx(
20
- Divider,
18
+ /* @__PURE__ */ jsx("div", { className: "oui-absolute oui-start-0 oui-top-1 oui-z-10", children: /* @__PURE__ */ jsx(Identifier, { ...props }) }),
19
+ showDivider && /* @__PURE__ */ jsx(
20
+ Box,
21
21
  {
22
- lineStyle: "dashed",
23
- direction: "vertical",
24
- intensity: 16,
25
- className: "oui-h-full"
22
+ position: "absolute",
23
+ className: "oui-start-3",
24
+ top: 23,
25
+ bottom: -21,
26
+ zIndex: 0,
27
+ children: /* @__PURE__ */ jsx(
28
+ Divider,
29
+ {
30
+ lineStyle: "dashed",
31
+ direction: "vertical",
32
+ intensity: 16,
33
+ className: "oui-h-full"
34
+ }
35
+ )
26
36
  }
27
- ) })
37
+ )
28
38
  ] });
29
39
  };
30
40
  var Identifier = (props) => {
31
41
  const { active, isLoading, isCompleted } = props;
32
42
  if (isLoading) {
33
- return /* @__PURE__ */ jsx(Spinner, { size: "sm", className: "oui-ml-1" });
43
+ return /* @__PURE__ */ jsx(Spinner, { size: "sm", className: "oui-ms-1" });
34
44
  }
35
45
  if (isCompleted) {
36
46
  return /* @__PURE__ */ jsx(CheckedCircleFillIcon, { opacity: 1, className: "oui-text-primary" });
@@ -45,7 +55,7 @@ var Dot = ({
45
55
  "div",
46
56
  {
47
57
  className: cn(
48
- "oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ml-2 oui-mt-1",
58
+ "oui-w-[8.3px] oui-h-[8.3px] oui-rounded-full oui-ms-2 oui-mt-1",
49
59
  className,
50
60
  active ? "oui-bg-primary-light" : "oui-bg-base-2"
51
61
  )
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/component/walletConnectorContent.tsx","../src/component/step.tsx","../src/component/walletConnector.tsx","../src/component/useWalletConnectorBuilder.ts","../src/component/useAuthGuard.ts","../src/component/authGuard.tsx","../src/component/authGuardDataTable.tsx","../src/component/authGuardEmpty.tsx","../src/component/authGuardTooltip.tsx","../src/hooks/useAuthStatus.tsx","../src/component/featureFlag.tsx"],"names":["Box","Text","jsx","jsxs","steps","i18n","useEffect","useState","useAccount","useTranslation","toast","refCode","useMemo","AccountStatusEnum","useAppContext","Button","modal","Flex","Tooltip","AuthStatusEnum"],"mappings":"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","sourcesContent":["import { FC, ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n LedgerWalletKey,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n Button,\n capitalizeFirstLetter,\n Divider,\n Flex,\n inputFormatter,\n modal,\n Switch,\n Text,\n TextField,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { StepItem } from \"./step\";\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 const ee = useEventEmitter();\n const { t } = useTranslation();\n const { disconnect, namespace } = useWalletConnector();\n\n const { state: accountState, account } = useAccount();\n const [state, setState] = useState(initAccountState);\n const [activeStep, setActiveStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [showLedgerButton, setShowLedgerButton] = useState(false);\n const { ledgerWallet, setLedgerAddress } = useStorageLedgerAddress();\n const handleRef = useRef(0);\n const [firstShowDialog] = useLocalStorage(\n \"orderly-first-show-wallet-connector-dialog\",\n undefined,\n );\n useEffect(() => {\n return () => {\n localStorage.setItem(\"orderly-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: t(\"connector.createAccount\"),\n description: t(\"connector.createAccount.description\"),\n });\n }\n\n if (initAccountState < AccountStatusEnum.EnableTrading) {\n steps.push({\n key: \"enableTrading\",\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.enableTrading.description\"),\n });\n }\n\n return steps;\n }, [initAccountState, t]);\n\n useEffect(() => {\n if (namespace != ChainNamespace.solana) {\n setShowLedgerButton(false);\n return;\n }\n if (!ledgerWallet) {\n setShowLedgerButton(true);\n return;\n }\n if (ledgerWallet && account.address) {\n if (!ledgerWallet.includes(account.address)) {\n setShowLedgerButton(true);\n return;\n }\n }\n setShowLedgerButton(false);\n }, [namespace, account.address, ledgerWallet]);\n\n const onEnableTrading = () => {\n setLoading(true);\n return props\n .enableTrading(remember)\n .then(\n async (res) => {\n handleRef.current++;\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 setLoading(false);\n if (reject === -1) {\n return;\n }\n\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n console.log(\"enable trading catch error\", e);\n setLoading(false);\n });\n };\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n disconnect({\n label: (state as unknown as any).connectWallet?.name,\n }).then(() => {\n account.disconnect();\n if (typeof props.close === \"function\") {\n props.close();\n }\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\n if (reject === -1) {\n return;\n }\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n setLoading(false);\n });\n };\n\n return (\n <Box id=\"oui-wallet-connect-dialog-content\" className=\"oui-font-semibold\">\n <Text intensity={54} size=\"xs\">\n {t(\"connector.expired\")}\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 const isLast = index === steps.length - 1;\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 showDivider={!isLast}\n />\n );\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-primary-darken\"\n />\n </Flex>\n )}\n <Flex justify={\"center\"} mt={8} className=\"oui-w-full\">\n <Box className=\"oui-w-full\">\n <ActionButton\n state={state}\n signIn={onSignIn}\n enableTrading={onEnableTrading}\n loading={loading}\n disabled={state >= AccountStatusEnum.EnableTrading}\n showLedgerButton={showLedgerButton}\n />\n </Box>\n </Flex>\n {state > AccountStatusEnum.NotConnected && (\n <Flex\n justify={\"center\"}\n mt={4}\n gap={1}\n className=\"oui-w-full oui-cursor-pointer\"\n onClick={onDisconnect}\n >\n <DisconnectIcon />\n <Text className=\"oui-text-base-contrast-80 oui-text-sm\">\n {t(\"connector.disconnectWallet\")}\n </Text>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst DisconnectIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M2.24219 5.24316C2.24219 3.58641 3.58536 2.24316 5.24219 2.24316H8.24219C9.89894 2.24316 11.2422 3.58641 11.2422 5.24316C11.2422 5.65716 10.9062 5.99316 10.4922 5.99316C10.0782 5.99316 9.74219 5.65716 9.74219 5.24316C9.74219 4.41441 9.07094 3.74316 8.24219 3.74316H5.24219C4.41374 3.74316 3.74219 4.41441 3.74219 5.24316V12.7432C3.74219 13.5719 4.41374 14.2432 5.24219 14.2432H8.24219C9.07094 14.2432 9.74219 13.5719 9.74219 12.7432C9.74219 12.3292 10.0782 11.9932 10.4922 11.9932C10.9062 11.9932 11.2422 12.3292 11.2422 12.7432C11.2422 14.3999 9.89894 15.7432 8.24219 15.7432H5.24219C3.58536 15.7432 2.24219 14.3999 2.24219 12.7432V5.24316ZM7.49219 8.99316C7.49219 8.57916 7.82819 8.24316 8.24219 8.24316H13.9144L12.4377 6.74316L13.4922 5.68866L16.2814 8.45391C16.5739 8.74716 16.5739 9.23915 16.2814 9.5324L13.4922 12.2977L12.4377 11.2432L13.9144 9.74316H8.24219C7.82819 9.74316 7.49219 9.40716 7.49219 8.99316Z\"\n className=\"oui-fill-base-contrast-80\"\n />\n </svg>\n );\n};\n\nconst ActionButton: FC<{\n state: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: () => Promise<any>;\n loading: boolean;\n showLedgerButton?: boolean;\n disabled?: boolean;\n}> = ({\n state,\n signIn,\n enableTrading,\n loading,\n disabled,\n showLedgerButton,\n}) => {\n const { t } = useTranslation();\n\n if (state <= AccountStatusEnum.NotSignedIn) {\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => signIn()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.createAccount\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => signIn()}\n content={t(\"connector.createAccountWithLedger\")}\n />\n )}\n </Flex>\n );\n }\n\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => enableTrading()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => enableTrading()}\n disabled={disabled}\n content={t(\"connector.enableTradingWithLedger\")}\n />\n )}\n </Flex>\n );\n\n // return (\n // <Match\n // value={() => {\n // if (state <= AccountStatusEnum.NotSignedIn) {\n // return \"signIn\";\n // }\n // return \"enableTrading\";\n // }}\n // case={{\n // signIn: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => signIn()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.createAccount\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => signIn()}\n // content={t(\"connector.createAccountWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // enableTrading: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => enableTrading()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.enableTrading\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => enableTrading()}\n // disabled={disabled}\n // content={t(\"connector.enableTradingWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // }}\n // />\n // );\n};\n\nconst WithLedgerButton = ({\n onClick,\n disabled,\n content,\n}: {\n onClick: () => void;\n disabled?: boolean;\n content: ReactNode;\n}) => {\n const { t } = useTranslation();\n const { state } = useAccount();\n const address = state.address;\n const { setLedgerAddress } = useStorageLedgerAddress();\n if (!address) {\n return null;\n }\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n fullWidth\n onClick={() => {\n setLedgerAddress(address);\n onClick();\n }}\n disabled={disabled}\n className=\"oui-w-full\"\n >\n {content}\n </Button>\n );\n};\n\nconst ReferralCode: FC<WalletConnectContentProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <TextField\n placeholder={t(\"connector.referralCode.placeholder\")}\n fullWidth\n label=\"\"\n value={props.refCode}\n onChange={(e) => {\n const _value = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\n props.setRefCode(_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={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\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 { t } = useTranslation();\n\n const showRememberHint = () => {\n if (window.innerWidth > 1024) {\n return;\n }\n modal.alert({\n title: t(\"connector.rememberMe\"),\n message: (\n <span className=\"oui-text-2xs oui-text-base-contrast/60\">\n {t(\"connector.rememberMe.description\")}\n </span>\n ),\n });\n };\n return (\n <Tooltip\n content={t(\"connector.rememberMe.description\")}\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 {t(\"connector.rememberMe\")}\n </Text>\n </button>\n </Tooltip>\n );\n};\n\nfunction paseErrorMsg(reject: any): string {\n console.log(\"wallet callback error\", reject);\n console.log(\"message *** \", \"reject keys\", Object.keys(reject));\n Object.keys(reject).forEach((key) => {\n console.log(\"key\", key, \"-\", reject[key]);\n });\n let msg = i18n.t(\"connector.somethingWentWrong\");\n\n // if (typeof reject?.info?.error === \"object\" && \"message\" in reject?.info?.error) {\n // msg = reject?.info?.error?.message;\n // }\n\n // if (typeof reject?.shortMessage === 'string') {\n // msg = reject.shortMessage;\n // }\n\n if (reject.toString().includes(\"rejected\")) {\n msg = i18n.t(\"connector.userRejected\");\n }\n\n return capitalizeFirstLetter(msg) ?? msg;\n}\n","import { FC } from \"react\";\nimport {\n Box,\n CheckedCircleFillIcon,\n cn,\n Divider,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype StepItemProps = {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n title: string;\n description: string;\n showDivider?: boolean;\n};\n\nexport const StepItem = (props: StepItemProps) => {\n const { title, description, showDivider } = props;\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 <div className=\"oui-absolute oui-left-0 oui-top-1 oui-z-10\">\n <Identifier {...props} />\n </div>\n {showDivider && (\n <Box position={\"absolute\"} left={12} top={23} bottom={-21} zIndex={0}>\n <Divider\n lineStyle={\"dashed\"}\n direction={\"vertical\"}\n intensity={16}\n className=\"oui-h-full\"\n />\n </Box>\n )}\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 if (isLoading) {\n return <Spinner size={\"sm\"} className={\"oui-ml-1\"} />;\n }\n\n if (isCompleted) {\n return <CheckedCircleFillIcon opacity={1} className=\"oui-text-primary\" />;\n }\n\n return <Dot active={!!active} />;\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-primary\" />\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 React from \"react\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@kodiak-finance/orderly-ui\";\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: React.FC<any> = (props) => {\n const state = useWalletConnectorBuilder();\n return <WalletConnectContent {...state} {...props} />;\n};\n\nregisterSimpleDialog(WalletConnectorModalId, WalletConnectorWidget, {\n size: \"sm\",\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n\nregisterSimpleSheet(WalletConnectorSheetId, WalletConnectorWidget, {\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n","import { useEffect, useState } from \"react\";\nimport {\n useAccount,\n useGetReferralCode,\n useLazyQuery,\n useMutation,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\n\nexport const useWalletConnectorBuilder = () => {\n const { state, createOrderlyKey, createAccount } = useAccount();\n const [refCode, setRefCode] = useState(\"\");\n const [helpText, setHelpText] = useState(\"\");\n const { t } = useTranslation();\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(state.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(t(\"connector.walletConnected\"));\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 () => {\n if (refCode.length === 0) {\n return Promise.resolve(undefined);\n }\n\n if (refCode.length > 0 && (refCode.length < 4 || refCode.length > 10)) {\n return Promise.resolve(t(\"connector.referralCode.invalid\"));\n }\n\n const { exist } = await verifyRefCode();\n\n if (exist === false) {\n return Promise.resolve(t(\"connector.referralCode.notExist\"));\n }\n\n return Promise.resolve(undefined);\n };\n\n const showRefCodeInput = (referral_code?.length || 0) === 0 && !isLoading;\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 { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\n/**\n * Hook to check if the user is authenticated and authorized\n * @param status - Required account status to be satisfied. If not provided, defaults to EnableTrading or EnableTradingWithoutConnected based on current state\n * @returns boolean indicating if the user meets the authentication requirements\n */\nexport const useAuthGuard = (status?: AccountStatusEnum): boolean => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n return useMemo(() => {\n return state.status >= _status && !wrongNetwork && !disabledConnect;\n }, [state.status, _status, wrongNetwork, disabledConnect]);\n};\n","import React, { ReactElement, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, NetworkId } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Either,\n modal,\n Text,\n toast,\n useScreen,\n type ButtonProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"./walletConnector\";\n\ntype ChainProps = {\n networkId?: NetworkId;\n bridgeLessOnly?: boolean;\n};\n\nexport type alertMessages = {\n connectWallet?: string;\n switchChain?: string;\n enableTrading?: string;\n signin?: string;\n};\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\nexport const AuthGuard: React.FC<React.PropsWithChildren<AuthGuardProps>> = (\n props,\n) => {\n const {\n status,\n buttonProps,\n fallback,\n descriptions,\n classNames,\n networkId,\n id,\n bridgeLessOnly,\n // ...rest\n } = props;\n const { t } = useTranslation();\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const labels = {\n connectWallet: t(\"connector.connectWallet\"),\n switchChain: t(\"connector.wrongNetwork\"),\n enableTrading: t(\"connector.enableTrading\"),\n signin: t(\"connector.createAccount\"),\n ...props.labels,\n };\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 && !disabledConnect) {\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 disabledConnect={disabledConnect}\n />\n );\n }, [\n state.status,\n state.validating,\n buttonProps,\n wrongNetwork,\n labels,\n descriptions,\n ]);\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\n value={state.status >= _status && !wrongNetwork && !disabledConnect}\n left={Left}\n >\n {props.children}\n </Either>\n );\n};\n\nconst ModalTitle: React.FC = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nconst DefaultFallback: React.FC<{\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n buttonProps?: ButtonProps;\n networkId?: NetworkId;\n labels: alertMessages;\n bridgeLessOnly?: boolean;\n descriptions?: alertMessages;\n disabledConnect?: boolean;\n}> = (props) => {\n const { buttonProps, labels, descriptions } = props;\n const { t } = useTranslation();\n const { connectWallet } = useAppContext();\n const { account } = useAccount();\n const { isMobile } = useScreen();\n\n const onConnectOrderly = () => {\n modal\n .show(isMobile ? WalletConnectorSheetId : WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .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) {\n return;\n }\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(t(\"connector.walletConnected\"));\n }\n });\n\n modal\n .show<{ wrongNetwork: boolean }>(\n isMobile ? ChainSelectorSheetId : ChainSelectorDialogId,\n {\n networkId: props.networkId,\n bridgeLessOnly: props.bridgeLessOnly,\n },\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(t(\"connector.walletConnected\"));\n }\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n if (props.wrongNetwork && !props.disabledConnect) {\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 if (props.status <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectWallet();\n }}\n // fullWidth\n variant={props.disabledConnect ? undefined : \"gradient\"}\n angle={45}\n description={descriptions?.connectWallet}\n disabled={props.disabledConnect}\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n\n if (props.status <= 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 return (\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 // return (\n // <Match\n // value={props.status}\n // case={(value: AccountStatusEnum) => {\n // if (value <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n // return (\n // <StatusInfo\n // size=\"lg\"\n // onClick={() => {\n // onConnectWallet();\n // }}\n // // fullWidth\n // variant={props.disabledConnect ? undefined : \"gradient\"}\n // angle={45}\n // description={descriptions?.connectWallet}\n // disabled={props.disabledConnect}\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: React.FC<ButtonProps & { description?: string }> = (\n props,\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","import React, { PropsWithChildren, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n InjectableEmptyDataState,\n DataTable,\n DataTableProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { alertMessages, AuthGuard } from \"./authGuard\";\n\nexport const AuthGuardDataTable = <RecordType,>(\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,\n // message,\n labels,\n description,\n dataSource,\n children,\n ...rest\n } = props;\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const data = useDataTap(dataSource, {\n accountStatus: _status,\n });\n\n const ignoreLoadingCheck =\n wrongNetwork ||\n disabledConnect ||\n state.status < _status ||\n props.ignoreLoadingCheck;\n\n return (\n <DataTable\n dataSource={data}\n ignoreLoadingCheck={ignoreLoadingCheck}\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 manualPagination\n {...rest}\n >\n {children}\n </DataTable>\n );\n};\n\ntype GuardViewProps = {\n status: AccountStatusEnum;\n description?: alertMessages;\n labels?: alertMessages;\n className?: string;\n visible?: boolean;\n};\n\nconst GuardView: React.FC<GuardViewProps> = (props) => {\n const { t } = useTranslation();\n\n const DESCRIPTIONS: alertMessages = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n switchChain: t(\"connector.wrongNetwork.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n signin: t(\"connector.trade.createAccount.tooltip\"),\n };\n\n const descriptions = { ...DESCRIPTIONS, ...props.description };\n if (!props.visible) {\n return null;\n }\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 <InjectableEmptyDataState />\n </AuthGuard>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Box, EmptyDataState } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"./authGuard\";\n\ntype AuthGuardProps = {\n hint?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n status?: AccountStatusEnum;\n};\n\nexport const AuthGuardEmpty: React.FC<\n React.PropsWithChildren<AuthGuardProps>\n> = (props) => {\n const { t } = useTranslation();\n const {\n hint = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n signIn: t(\"connector.trade.createAccount.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n status,\n } = props;\n\n return (\n <Box my={8}>\n <AuthGuard\n status={status}\n descriptions={{ ...hint, switchChain: hint.wrongNetwork }}\n buttonProps={{\n size: \"md\",\n }}\n >\n {props.children || <EmptyDataState />}\n </AuthGuard>\n </Box>\n );\n};\n\nAuthGuardEmpty.displayName = \"AuthGuardEmpty\";\n","import { PropsWithChildren, useMemo, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Tooltip } from \"@kodiak-finance/orderly-ui\";\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 { t } = useTranslation();\n\n const {\n opactiy = 90,\n tooltip = {\n connectWallet: t(\"connector.setUp.connectWallet.tooltip\"),\n signIn: t(\"connector.setUp.createAccount.tooltip\"),\n enableTrading: t(\"connector.setUp.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n } = props;\n\n const [open, setOpen] = useState(false);\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 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 return undefined;\n }\n default:\n return undefined;\n }\n }, [props.opactiy, state, isSupport]);\n\n return (\n <Tooltip\n open={hint ? open : false}\n onOpenChange={setOpen}\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 style={{ opacity: newOpacity }}>{props.children}</div>\n </Tooltip>\n );\n};\n\nAuthGuardTooltip.displayName = \"AuthGuardTooltip\";\n\nexport { AuthGuardTooltip };\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport enum AuthStatusEnum {\n WrongNetwork,\n ConnectWallet,\n CreateAccount,\n EnableTrading,\n}\n\nexport const useAuthStatus = () => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork && !disabledConnect) {\n return AuthStatusEnum.WrongNetwork;\n }\n\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return AuthStatusEnum.EnableTrading;\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabledConnect) {\n return AuthStatusEnum.ConnectWallet;\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return AuthStatusEnum.CreateAccount;\n }\n\n return AuthStatusEnum.EnableTrading;\n }, [state.status, wrongNetwork, disabledConnect]);\n};\n","import { memo } from \"react\";\nimport { FlagKeys, useFeatureFlag } from \"@kodiak-finance/orderly-hooks\";\n\n/**\n * Props for the FeatureFlag component\n */\nexport type FeatureFlagProps = {\n /** Content to render when the feature flag is enabled */\n whenEnabled?: React.ReactNode;\n /** Content to render when the feature flag is disabled */\n whenDisabled?: React.ReactNode;\n /** The feature flag key to check */\n flagKey: FlagKeys;\n};\n\n/**\n * FeatureFlag component that conditionally renders content based on feature flag status\n *\n * @example\n * ```tsx\n * // Only show when enabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewIsolatedMarginView />}\n * />\n *\n * // Only show when disabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenDisabled={<OldMarginView />}\n * />\n *\n * // Show different content based on flag status\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewView />}\n * whenDisabled={<OldView />}\n * />\n * ```\n */\nconst FeatureFlag = memo((props: FeatureFlagProps) => {\n const { whenEnabled, whenDisabled, flagKey } = props;\n const { enabled } = useFeatureFlag(flagKey);\n\n return enabled ? (whenEnabled ?? null) : (whenDisabled ?? null);\n});\n\nFeatureFlag.displayName = \"FeatureFlag\";\n\nexport { FeatureFlag };\n"]}
1
+ {"version":3,"sources":["../src/component/walletConnectorContent.tsx","../src/component/step.tsx","../src/component/walletConnector.tsx","../src/component/useWalletConnectorBuilder.ts","../src/component/useAuthGuard.ts","../src/component/authGuard.tsx","../src/component/authGuardDataTable.tsx","../src/component/authGuardEmpty.tsx","../src/component/authGuardTooltip.tsx","../src/hooks/useAuthStatus.tsx","../src/component/featureFlag.tsx"],"names":["Box","Text","jsx","jsxs","steps","i18n","useEffect","useState","useAccount","useTranslation","toast","refCode","useMemo","AccountStatusEnum","useAppContext","Button","modal","Flex","Tooltip","AuthStatusEnum"],"mappings":"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","sourcesContent":["import { FC, ReactNode, useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n useAccount,\n useEventEmitter,\n useLocalStorage,\n useStorageLedgerAddress,\n useWalletConnector,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { i18n, useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport {\n AccountStatusEnum,\n ChainNamespace,\n LedgerWalletKey,\n} from \"@kodiak-finance/orderly-types\";\nimport {\n Box,\n Button,\n capitalizeFirstLetter,\n Divider,\n Flex,\n inputFormatter,\n modal,\n Switch,\n Text,\n TextField,\n toast,\n Tooltip,\n} from \"@kodiak-finance/orderly-ui\";\nimport { StepItem } from \"./step\";\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 const ee = useEventEmitter();\n const { t } = useTranslation();\n const { disconnect, namespace } = useWalletConnector();\n\n const { state: accountState, account } = useAccount();\n const [state, setState] = useState(initAccountState);\n const [activeStep, setActiveStep] = useState(0);\n const [loading, setLoading] = useState(false);\n const [showLedgerButton, setShowLedgerButton] = useState(false);\n const { ledgerWallet, setLedgerAddress } = useStorageLedgerAddress();\n const handleRef = useRef(0);\n const [firstShowDialog] = useLocalStorage(\n \"orderly-first-show-wallet-connector-dialog\",\n undefined,\n );\n useEffect(() => {\n return () => {\n localStorage.setItem(\"orderly-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: t(\"connector.createAccount\"),\n description: t(\"connector.createAccount.description\"),\n });\n }\n\n if (initAccountState < AccountStatusEnum.EnableTrading) {\n steps.push({\n key: \"enableTrading\",\n title: t(\"connector.enableTrading\"),\n description: t(\"connector.enableTrading.description\"),\n });\n }\n\n return steps;\n }, [initAccountState, t]);\n\n useEffect(() => {\n if (namespace != ChainNamespace.solana) {\n setShowLedgerButton(false);\n return;\n }\n if (!ledgerWallet) {\n setShowLedgerButton(true);\n return;\n }\n if (ledgerWallet && account.address) {\n if (!ledgerWallet.includes(account.address)) {\n setShowLedgerButton(true);\n return;\n }\n }\n setShowLedgerButton(false);\n }, [namespace, account.address, ledgerWallet]);\n\n const onEnableTrading = () => {\n setLoading(true);\n return props\n .enableTrading(remember)\n .then(\n async (res) => {\n handleRef.current++;\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 setLoading(false);\n if (reject === -1) {\n return;\n }\n\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n console.log(\"enable trading catch error\", e);\n setLoading(false);\n });\n };\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n disconnect({\n label: (state as unknown as any).connectWallet?.name,\n }).then(() => {\n account.disconnect();\n if (typeof props.close === \"function\") {\n props.close();\n }\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\n if (reject === -1) {\n return;\n }\n if (\n reject.message.indexOf(\n \"Signing off chain messages with Ledger is not yet supported\",\n ) !== -1\n ) {\n ee.emit(\"wallet:sign-message-with-ledger-error\", {\n message: reject.message,\n userAddress: account.address,\n });\n return;\n }\n\n toast.error(paseErrorMsg(reject));\n },\n )\n .catch((e) => {\n setLoading(false);\n });\n };\n\n return (\n <Box id=\"oui-wallet-connect-dialog-content\" className=\"oui-font-semibold\">\n <Text intensity={54} size=\"xs\">\n {t(\"connector.expired\")}\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 const isLast = index === steps.length - 1;\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 showDivider={!isLast}\n />\n );\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-primary-darken\"\n />\n </Flex>\n )}\n <Flex justify={\"center\"} mt={8} className=\"oui-w-full\">\n <Box className=\"oui-w-full\">\n <ActionButton\n state={state}\n signIn={onSignIn}\n enableTrading={onEnableTrading}\n loading={loading}\n disabled={state >= AccountStatusEnum.EnableTrading}\n showLedgerButton={showLedgerButton}\n />\n </Box>\n </Flex>\n {state > AccountStatusEnum.NotConnected && (\n <Flex\n justify={\"center\"}\n mt={4}\n gap={1}\n className=\"oui-w-full oui-cursor-pointer\"\n onClick={onDisconnect}\n >\n <DisconnectIcon />\n <Text className=\"oui-text-base-contrast-80 oui-text-sm\">\n {t(\"connector.disconnectWallet\")}\n </Text>\n </Flex>\n )}\n </Box>\n );\n};\n\nconst DisconnectIcon = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n >\n <path\n d=\"M2.24219 5.24316C2.24219 3.58641 3.58536 2.24316 5.24219 2.24316H8.24219C9.89894 2.24316 11.2422 3.58641 11.2422 5.24316C11.2422 5.65716 10.9062 5.99316 10.4922 5.99316C10.0782 5.99316 9.74219 5.65716 9.74219 5.24316C9.74219 4.41441 9.07094 3.74316 8.24219 3.74316H5.24219C4.41374 3.74316 3.74219 4.41441 3.74219 5.24316V12.7432C3.74219 13.5719 4.41374 14.2432 5.24219 14.2432H8.24219C9.07094 14.2432 9.74219 13.5719 9.74219 12.7432C9.74219 12.3292 10.0782 11.9932 10.4922 11.9932C10.9062 11.9932 11.2422 12.3292 11.2422 12.7432C11.2422 14.3999 9.89894 15.7432 8.24219 15.7432H5.24219C3.58536 15.7432 2.24219 14.3999 2.24219 12.7432V5.24316ZM7.49219 8.99316C7.49219 8.57916 7.82819 8.24316 8.24219 8.24316H13.9144L12.4377 6.74316L13.4922 5.68866L16.2814 8.45391C16.5739 8.74716 16.5739 9.23915 16.2814 9.5324L13.4922 12.2977L12.4377 11.2432L13.9144 9.74316H8.24219C7.82819 9.74316 7.49219 9.40716 7.49219 8.99316Z\"\n className=\"oui-fill-base-contrast-80\"\n />\n </svg>\n );\n};\n\nconst ActionButton: FC<{\n state: AccountStatusEnum;\n signIn: () => Promise<any>;\n enableTrading: () => Promise<any>;\n loading: boolean;\n showLedgerButton?: boolean;\n disabled?: boolean;\n}> = ({\n state,\n signIn,\n enableTrading,\n loading,\n disabled,\n showLedgerButton,\n}) => {\n const { t } = useTranslation();\n\n if (state <= AccountStatusEnum.NotSignedIn) {\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => signIn()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.createAccount\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => signIn()}\n content={t(\"connector.createAccountWithLedger\")}\n />\n )}\n </Flex>\n );\n }\n\n return (\n <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n <Button\n fullWidth\n onClick={() => enableTrading()}\n loading={loading}\n disabled={disabled}\n >\n {t(\"connector.enableTrading\")}\n </Button>\n {showLedgerButton && (\n <WithLedgerButton\n onClick={() => enableTrading()}\n disabled={disabled}\n content={t(\"connector.enableTradingWithLedger\")}\n />\n )}\n </Flex>\n );\n\n // return (\n // <Match\n // value={() => {\n // if (state <= AccountStatusEnum.NotSignedIn) {\n // return \"signIn\";\n // }\n // return \"enableTrading\";\n // }}\n // case={{\n // signIn: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => signIn()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.createAccount\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => signIn()}\n // content={t(\"connector.createAccountWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // enableTrading: (\n // <Flex direction={\"column\"} gap={3} className=\"oui-w-full\">\n // <Button\n // fullWidth\n // onClick={() => enableTrading()}\n // loading={loading}\n // disabled={disabled}\n // >\n // {t(\"connector.enableTrading\")}\n // </Button>\n // {showLedgerButton && (\n // <WithLedgerButton\n // onClick={() => enableTrading()}\n // disabled={disabled}\n // content={t(\"connector.enableTradingWithLedger\")}\n // />\n // )}\n // </Flex>\n // ),\n // }}\n // />\n // );\n};\n\nconst WithLedgerButton = ({\n onClick,\n disabled,\n content,\n}: {\n onClick: () => void;\n disabled?: boolean;\n content: ReactNode;\n}) => {\n const { t } = useTranslation();\n const { state } = useAccount();\n const address = state.address;\n const { setLedgerAddress } = useStorageLedgerAddress();\n if (!address) {\n return null;\n }\n return (\n <Button\n variant=\"outlined\"\n color=\"primary\"\n fullWidth\n onClick={() => {\n setLedgerAddress(address);\n onClick();\n }}\n disabled={disabled}\n className=\"oui-w-full\"\n >\n {content}\n </Button>\n );\n};\n\nconst ReferralCode: FC<WalletConnectContentProps> = (props) => {\n const { t } = useTranslation();\n\n return (\n <TextField\n placeholder={t(\"connector.referralCode.placeholder\")}\n fullWidth\n label=\"\"\n value={props.refCode}\n onChange={(e) => {\n const _value = e.target.value.toUpperCase().replace(/[^A-Z0-9]/g, \"\");\n props.setRefCode(_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={[\n inputFormatter.createRegexInputFormatter((value: string | number) => {\n return String(value).replace(/[a-z]/g, (char: string) =>\n char.toUpperCase(),\n );\n }),\n inputFormatter.createRegexInputFormatter(/[^A-Z0-9]/g),\n ]}\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 { t } = useTranslation();\n\n const showRememberHint = () => {\n if (window.innerWidth > 1024) {\n return;\n }\n modal.alert({\n title: t(\"connector.rememberMe\"),\n message: (\n <span className=\"oui-text-2xs oui-text-base-contrast/60\">\n {t(\"connector.rememberMe.description\")}\n </span>\n ),\n });\n };\n return (\n <Tooltip\n content={t(\"connector.rememberMe.description\")}\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 {t(\"connector.rememberMe\")}\n </Text>\n </button>\n </Tooltip>\n );\n};\n\nfunction paseErrorMsg(reject: any): string {\n console.log(\"wallet callback error\", reject);\n console.log(\"message *** \", \"reject keys\", Object.keys(reject));\n Object.keys(reject).forEach((key) => {\n console.log(\"key\", key, \"-\", reject[key]);\n });\n let msg = i18n.t(\"connector.somethingWentWrong\");\n\n // if (typeof reject?.info?.error === \"object\" && \"message\" in reject?.info?.error) {\n // msg = reject?.info?.error?.message;\n // }\n\n // if (typeof reject?.shortMessage === 'string') {\n // msg = reject.shortMessage;\n // }\n\n if (reject.toString().includes(\"rejected\")) {\n msg = i18n.t(\"connector.userRejected\");\n }\n\n return capitalizeFirstLetter(msg) ?? msg;\n}\n","import { FC } from \"react\";\nimport {\n Box,\n CheckedCircleFillIcon,\n cn,\n Divider,\n Spinner,\n Text,\n} from \"@kodiak-finance/orderly-ui\";\n\ntype StepItemProps = {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n title: string;\n description: string;\n showDivider?: boolean;\n};\n\nexport const StepItem = (props: StepItemProps) => {\n const { title, description, showDivider } = props;\n return (\n <Box position=\"relative\" className=\"oui-ps-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 <div className=\"oui-absolute oui-start-0 oui-top-1 oui-z-10\">\n <Identifier {...props} />\n </div>\n {showDivider && (\n <Box\n position={\"absolute\"}\n className=\"oui-start-3\"\n top={23}\n bottom={-21}\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 );\n};\n\nconst Identifier = (props: {\n active?: boolean;\n isLoading?: boolean;\n isCompleted?: boolean;\n}) => {\n const { active, isLoading, isCompleted } = props;\n\n if (isLoading) {\n return <Spinner size={\"sm\"} className={\"oui-ms-1\"} />;\n }\n\n if (isCompleted) {\n return <CheckedCircleFillIcon opacity={1} className=\"oui-text-primary\" />;\n }\n\n return <Dot active={!!active} />;\n\n // return (\n // <Match\n // className={\"oui-absolute oui-start-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-ms-1\"} />\n // </div>\n // ),\n // completed: (\n // <div>\n // <CheckedCircleFillIcon opacity={1} className=\"oui-text-primary\" />\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-ms-2 oui-mt-1\",\n className,\n active ? \"oui-bg-primary-light\" : \"oui-bg-base-2\",\n )}\n />\n );\n};\n","import React from \"react\";\nimport { i18n } from \"@kodiak-finance/orderly-i18n\";\nimport { registerSimpleDialog, registerSimpleSheet } from \"@kodiak-finance/orderly-ui\";\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: React.FC<any> = (props) => {\n const state = useWalletConnectorBuilder();\n return <WalletConnectContent {...state} {...props} />;\n};\n\nregisterSimpleDialog(WalletConnectorModalId, WalletConnectorWidget, {\n size: \"sm\",\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n\nregisterSimpleSheet(WalletConnectorSheetId, WalletConnectorWidget, {\n title: () => i18n.t(\"connector.connectWallet\"),\n});\n","import { useEffect, useState } from \"react\";\nimport {\n useAccount,\n useGetReferralCode,\n useLazyQuery,\n useMutation,\n} from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { toast } from \"@kodiak-finance/orderly-ui\";\n\nexport const useWalletConnectorBuilder = () => {\n const { state, createOrderlyKey, createAccount } = useAccount();\n const [refCode, setRefCode] = useState(\"\");\n const [helpText, setHelpText] = useState(\"\");\n const { t } = useTranslation();\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(state.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(t(\"connector.walletConnected\"));\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 () => {\n if (refCode.length === 0) {\n return Promise.resolve(undefined);\n }\n\n if (refCode.length > 0 && (refCode.length < 4 || refCode.length > 10)) {\n return Promise.resolve(t(\"connector.referralCode.invalid\"));\n }\n\n const { exist } = await verifyRefCode();\n\n if (exist === false) {\n return Promise.resolve(t(\"connector.referralCode.notExist\"));\n }\n\n return Promise.resolve(undefined);\n };\n\n const showRefCodeInput = (referral_code?.length || 0) === 0 && !isLoading;\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 { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\n/**\n * Hook to check if the user is authenticated and authorized\n * @param status - Required account status to be satisfied. If not provided, defaults to EnableTrading or EnableTradingWithoutConnected based on current state\n * @returns boolean indicating if the user meets the authentication requirements\n */\nexport const useAuthGuard = (status?: AccountStatusEnum): boolean => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n return useMemo(() => {\n return state.status >= _status && !wrongNetwork && !disabledConnect;\n }, [state.status, _status, wrongNetwork, disabledConnect]);\n};\n","import React, { ReactElement, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum, NetworkId } from \"@kodiak-finance/orderly-types\";\nimport {\n Button,\n Either,\n modal,\n Text,\n toast,\n useScreen,\n type ButtonProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { Box } from \"@kodiak-finance/orderly-ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorSheetId,\n} from \"@kodiak-finance/orderly-ui-chain-selector\";\nimport {\n WalletConnectorModalId,\n WalletConnectorSheetId,\n} from \"./walletConnector\";\n\ntype ChainProps = {\n networkId?: NetworkId;\n bridgeLessOnly?: boolean;\n};\n\nexport type alertMessages = {\n connectWallet?: string;\n switchChain?: string;\n enableTrading?: string;\n signin?: string;\n};\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\nexport const AuthGuard: React.FC<React.PropsWithChildren<AuthGuardProps>> = (\n props,\n) => {\n const {\n status,\n buttonProps,\n fallback,\n descriptions,\n classNames,\n networkId,\n id,\n bridgeLessOnly,\n // ...rest\n } = props;\n const { t } = useTranslation();\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const labels = {\n connectWallet: t(\"connector.connectWallet\"),\n switchChain: t(\"connector.wrongNetwork\"),\n enableTrading: t(\"connector.enableTrading\"),\n signin: t(\"connector.createAccount\"),\n ...props.labels,\n };\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 && !disabledConnect) {\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 disabledConnect={disabledConnect}\n />\n );\n }, [\n state.status,\n state.validating,\n buttonProps,\n wrongNetwork,\n labels,\n descriptions,\n ]);\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\n value={state.status >= _status && !wrongNetwork && !disabledConnect}\n left={Left}\n >\n {props.children}\n </Either>\n );\n};\n\nconst ModalTitle: React.FC = () => {\n const { t } = useTranslation();\n const { state } = useAccount();\n if (state.status < AccountStatusEnum.SignedIn) {\n return <Text>{t(\"connector.createAccount\")}</Text>;\n }\n if (state.status < AccountStatusEnum.EnableTrading) {\n return <Text>{t(\"connector.enableTrading\")}</Text>;\n }\n return <Text>{t(\"connector.connectWallet\")}</Text>;\n};\n\nconst DefaultFallback: React.FC<{\n status: AccountStatusEnum;\n wrongNetwork: boolean;\n buttonProps?: ButtonProps;\n networkId?: NetworkId;\n labels: alertMessages;\n bridgeLessOnly?: boolean;\n descriptions?: alertMessages;\n disabledConnect?: boolean;\n}> = (props) => {\n const { buttonProps, labels, descriptions } = props;\n const { t } = useTranslation();\n const { connectWallet } = useAppContext();\n const { account } = useAccount();\n const { isMobile } = useScreen();\n\n const onConnectOrderly = () => {\n modal\n .show(isMobile ? WalletConnectorSheetId : WalletConnectorModalId, {\n title: <ModalTitle />,\n })\n .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) {\n return;\n }\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(t(\"connector.walletConnected\"));\n }\n });\n\n modal\n .show<{ wrongNetwork: boolean }>(\n isMobile ? ChainSelectorSheetId : ChainSelectorDialogId,\n {\n networkId: props.networkId,\n bridgeLessOnly: props.bridgeLessOnly,\n },\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(t(\"connector.walletConnected\"));\n }\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error),\n );\n };\n\n if (props.wrongNetwork && !props.disabledConnect) {\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 if (props.status <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n return (\n <StatusInfo\n size=\"lg\"\n onClick={() => {\n onConnectWallet();\n }}\n // fullWidth\n variant={props.disabledConnect ? undefined : \"gradient\"}\n angle={45}\n description={descriptions?.connectWallet}\n disabled={props.disabledConnect}\n {...buttonProps}\n >\n {labels.connectWallet}\n </StatusInfo>\n );\n }\n\n if (props.status <= 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 return (\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 // return (\n // <Match\n // value={props.status}\n // case={(value: AccountStatusEnum) => {\n // if (value <= AccountStatusEnum.NotConnected || props.disabledConnect) {\n // return (\n // <StatusInfo\n // size=\"lg\"\n // onClick={() => {\n // onConnectWallet();\n // }}\n // // fullWidth\n // variant={props.disabledConnect ? undefined : \"gradient\"}\n // angle={45}\n // description={descriptions?.connectWallet}\n // disabled={props.disabledConnect}\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: React.FC<ButtonProps & { description?: string }> = (\n props,\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","import React, { PropsWithChildren, useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext, useDataTap } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport {\n InjectableEmptyDataState,\n DataTable,\n DataTableProps,\n} from \"@kodiak-finance/orderly-ui\";\nimport { Flex } from \"@kodiak-finance/orderly-ui\";\nimport { alertMessages, AuthGuard } from \"./authGuard\";\n\nexport const AuthGuardDataTable = <RecordType,>(\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,\n // message,\n labels,\n description,\n dataSource,\n children,\n ...rest\n } = props;\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n const _status = useMemo(() => {\n if (status === undefined) {\n return state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ? AccountStatusEnum.EnableTradingWithoutConnected\n : AccountStatusEnum.EnableTrading;\n }\n return status;\n }, [status, state.status]);\n\n const data = useDataTap(dataSource, {\n accountStatus: _status,\n });\n\n const ignoreLoadingCheck =\n wrongNetwork ||\n disabledConnect ||\n state.status < _status ||\n props.ignoreLoadingCheck;\n\n return (\n <DataTable\n dataSource={data}\n ignoreLoadingCheck={ignoreLoadingCheck}\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 manualPagination\n {...rest}\n >\n {children}\n </DataTable>\n );\n};\n\ntype GuardViewProps = {\n status: AccountStatusEnum;\n description?: alertMessages;\n labels?: alertMessages;\n className?: string;\n visible?: boolean;\n};\n\nconst GuardView: React.FC<GuardViewProps> = (props) => {\n const { t } = useTranslation();\n\n const DESCRIPTIONS: alertMessages = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n switchChain: t(\"connector.wrongNetwork.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n signin: t(\"connector.trade.createAccount.tooltip\"),\n };\n\n const descriptions = { ...DESCRIPTIONS, ...props.description };\n if (!props.visible) {\n return null;\n }\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 <InjectableEmptyDataState />\n </AuthGuard>\n </Flex>\n );\n};\n","import React from \"react\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Box, EmptyDataState } from \"@kodiak-finance/orderly-ui\";\nimport { AuthGuard } from \"./authGuard\";\n\ntype AuthGuardProps = {\n hint?: {\n connectWallet?: string;\n signIn?: string;\n enableTrading?: string;\n wrongNetwork?: string;\n };\n status?: AccountStatusEnum;\n};\n\nexport const AuthGuardEmpty: React.FC<\n React.PropsWithChildren<AuthGuardProps>\n> = (props) => {\n const { t } = useTranslation();\n const {\n hint = {\n connectWallet: t(\"connector.trade.connectWallet.tooltip\"),\n signIn: t(\"connector.trade.createAccount.tooltip\"),\n enableTrading: t(\"connector.trade.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n status,\n } = props;\n\n return (\n <Box my={8}>\n <AuthGuard\n status={status}\n descriptions={{ ...hint, switchChain: hint.wrongNetwork }}\n buttonProps={{\n size: \"md\",\n }}\n >\n {props.children || <EmptyDataState />}\n </AuthGuard>\n </Box>\n );\n};\n\nAuthGuardEmpty.displayName = \"AuthGuardEmpty\";\n","import { PropsWithChildren, useMemo, useState } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useTranslation } from \"@kodiak-finance/orderly-i18n\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\nimport { Tooltip } from \"@kodiak-finance/orderly-ui\";\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 { t } = useTranslation();\n\n const {\n opactiy = 90,\n tooltip = {\n connectWallet: t(\"connector.setUp.connectWallet.tooltip\"),\n signIn: t(\"connector.setUp.createAccount.tooltip\"),\n enableTrading: t(\"connector.setUp.enableTrading.tooltip\"),\n wrongNetwork: t(\"connector.wrongNetwork.tooltip\"),\n },\n } = props;\n\n const [open, setOpen] = useState(false);\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 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 return undefined;\n }\n default:\n return undefined;\n }\n }, [props.opactiy, state, isSupport]);\n\n return (\n <Tooltip\n open={hint ? open : false}\n onOpenChange={setOpen}\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 style={{ opacity: newOpacity }}>{props.children}</div>\n </Tooltip>\n );\n};\n\nAuthGuardTooltip.displayName = \"AuthGuardTooltip\";\n\nexport { AuthGuardTooltip };\n","import { useMemo } from \"react\";\nimport { useAccount } from \"@kodiak-finance/orderly-hooks\";\nimport { useAppContext } from \"@kodiak-finance/orderly-react-app\";\nimport { AccountStatusEnum } from \"@kodiak-finance/orderly-types\";\n\nexport enum AuthStatusEnum {\n WrongNetwork,\n ConnectWallet,\n CreateAccount,\n EnableTrading,\n}\n\nexport const useAuthStatus = () => {\n const { state } = useAccount();\n const { wrongNetwork, disabledConnect } = useAppContext();\n\n return useMemo(() => {\n if (wrongNetwork && !disabledConnect) {\n return AuthStatusEnum.WrongNetwork;\n }\n\n if (state.status === AccountStatusEnum.EnableTradingWithoutConnected) {\n return AuthStatusEnum.EnableTrading;\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || disabledConnect) {\n return AuthStatusEnum.ConnectWallet;\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return AuthStatusEnum.CreateAccount;\n }\n\n return AuthStatusEnum.EnableTrading;\n }, [state.status, wrongNetwork, disabledConnect]);\n};\n","import { memo } from \"react\";\nimport { FlagKeys, useFeatureFlag } from \"@kodiak-finance/orderly-hooks\";\n\n/**\n * Props for the FeatureFlag component\n */\nexport type FeatureFlagProps = {\n /** Content to render when the feature flag is enabled */\n whenEnabled?: React.ReactNode;\n /** Content to render when the feature flag is disabled */\n whenDisabled?: React.ReactNode;\n /** The feature flag key to check */\n flagKey: FlagKeys;\n};\n\n/**\n * FeatureFlag component that conditionally renders content based on feature flag status\n *\n * @example\n * ```tsx\n * // Only show when enabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewIsolatedMarginView />}\n * />\n *\n * // Only show when disabled\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenDisabled={<OldMarginView />}\n * />\n *\n * // Show different content based on flag status\n * <FeatureFlag\n * flagKey={FlagKeys.IsolatedMargin}\n * whenEnabled={<NewView />}\n * whenDisabled={<OldView />}\n * />\n * ```\n */\nconst FeatureFlag = memo((props: FeatureFlagProps) => {\n const { whenEnabled, whenDisabled, flagKey } = props;\n const { enabled } = useFeatureFlag(flagKey);\n\n return enabled ? (whenEnabled ?? null) : (whenDisabled ?? null);\n});\n\nFeatureFlag.displayName = \"FeatureFlag\";\n\nexport { FeatureFlag };\n"]}
package/dist/styles.css CHANGED
@@ -1 +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-w-full{width:100%}.oui-max-w-\[300px\]{max-width:300px}.oui-cursor-pointer{cursor:pointer}.oui-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.oui-rounded-full{border-radius:var(--oui-rounded-full,9999px)}.oui-bg-base-2{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-base-2)/var(--tw-bg-opacity,1))}.oui-bg-primary-light{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-primary-light)/var(--tw-bg-opacity,1))}.oui-fill-base-contrast-80{fill:rgb(var(--oui-color-base-foreground)/.8)}.oui-pl-8{padding-left:2rem}.oui-text-2xs{font-size:var(--oui-font-size-2xs,.75rem);line-height:1.125rem}.oui-text-sm{font-size:var(--oui-font-size-sm,.875rem);line-height:1.25rem}.oui-text-xs{font-size:var(--oui-font-size-xs,calc(.875rem - 1px));line-height:1.25rem}.oui-font-semibold{font-weight:600}.oui-leading-none{line-height:1}.oui-text-base-contrast-54{color:rgb(var(--oui-color-base-foreground)/.54)}.oui-text-base-contrast-80{color:rgb(var(--oui-color-base-foreground)/.8)}.oui-text-base-contrast\/60{color:rgb(var(--oui-color-base-foreground)/.6)}.oui-text-primary{--tw-text-opacity:1;color:rgb(var(--oui-color-primary)/var(--tw-text-opacity,1))}.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-primary-darken[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-primary-darken)/var(--tw-bg-opacity,1))}
1
+ .oui-absolute{position:absolute}.oui-start-0{inset-inline-start:0}.oui-start-3{inset-inline-start:.75rem}.oui-top-1{top:.25rem}.oui-z-10{z-index:10}.oui-mb-4{margin-bottom:1rem}.oui-ms-1{margin-inline-start:.25rem}.oui-ms-2{margin-inline-start:.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-w-full{width:100%}.oui-max-w-\[300px\]{max-width:300px}.oui-cursor-pointer{cursor:pointer}.oui-space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.oui-rounded-full{border-radius:var(--oui-rounded-full,9999px)}.oui-bg-base-2{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-base-2)/var(--tw-bg-opacity,1))}.oui-bg-primary-light{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-primary-light)/var(--tw-bg-opacity,1))}.oui-fill-base-contrast-80{fill:rgb(var(--oui-color-base-foreground)/.8)}.oui-ps-8{padding-inline-start:2rem}.oui-text-2xs{font-size:var(--oui-font-size-2xs,.75rem);line-height:1.125rem}.oui-text-sm{font-size:var(--oui-font-size-sm,.875rem);line-height:1.25rem}.oui-text-xs{font-size:var(--oui-font-size-xs,calc(.875rem - 1px));line-height:1.25rem}.oui-font-semibold{font-weight:600}.oui-leading-none{line-height:1}.oui-text-base-contrast-54{color:rgb(var(--oui-color-base-foreground)/.54)}.oui-text-base-contrast-80{color:rgb(var(--oui-color-base-foreground)/.8)}.oui-text-base-contrast\/60{color:rgb(var(--oui-color-base-foreground)/.6)}.oui-text-primary{--tw-text-opacity:1;color:rgb(var(--oui-color-primary)/var(--tw-text-opacity,1))}.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-primary-darken[data-state=checked]{--tw-bg-opacity:1;background-color:rgb(var(--oui-color-primary-darken)/var(--tw-bg-opacity,1))}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kodiak-finance/orderly-ui-connector",
3
- "version": "2.9.2-alpha.1",
3
+ "version": "2.9.3",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -17,12 +17,12 @@
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
- "@kodiak-finance/orderly-i18n": "2.9.2-alpha.1",
21
- "@kodiak-finance/orderly-hooks": "2.9.2-alpha.1",
22
- "@kodiak-finance/orderly-types": "2.9.2-alpha.1",
23
- "@kodiak-finance/orderly-ui": "2.9.2-alpha.1",
24
- "@kodiak-finance/orderly-react-app": "2.9.2-alpha.1",
25
- "@kodiak-finance/orderly-ui-chain-selector": "2.9.2-alpha.1"
20
+ "@kodiak-finance/orderly-i18n": "2.9.3",
21
+ "@kodiak-finance/orderly-hooks": "2.9.3",
22
+ "@kodiak-finance/orderly-types": "2.9.2",
23
+ "@kodiak-finance/orderly-ui": "2.9.3",
24
+ "@kodiak-finance/orderly-react-app": "2.9.3",
25
+ "@kodiak-finance/orderly-ui-chain-selector": "2.9.3"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/react": "^18.3.2",
@@ -31,7 +31,7 @@
31
31
  "react-dom": "^18.2.0",
32
32
  "tailwindcss": "^3.4.4",
33
33
  "tsup": "^7.3.0",
34
- "tsconfig": "0.11.34-alpha.1"
34
+ "tsconfig": "0.11.34"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "react": ">=18",