@orderly.network/ui-scaffold 2.0.4 → 2.0.5-alpha.0

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/accountMenu/menu.widget.tsx","../src/components/accountMenu/menu.ui.tsx","../src/components/accountMenu/useWidgetBuilder.script.ts","../src/components/main/mainNav.ui.tsx","../src/components/main/products.tsx","../src/components/main/productItem.tsx","../src/components/accountSummary/accountSummary.ui.tsx","../src/components/accountSummary/useWidgetBuilder.script.ts","../src/components/accountSummary/accountSummary.widget.tsx","../src/components/chainMenu/chainMenu.ui.tsx","../src/components/chainMenu/chainMenu.script.ts","../src/components/chainMenu/chainMenu.widget.tsx","../src/components/main/useWidgetBuilder.script.ts","../src/components/scaffoldContext.ts","../src/components/main/campaignButton.tsx","../src/components/main/mainMenus/navItem.tsx","../src/components/main/mainLogo.tsx","../src/components/icons/communtiyIcons.tsx","../src/components/icons/orderlyNetworkTextIcon.tsx","../src/components/icons/signal.tsx","../src/components/icons/infoIcon.tsx","../src/components/icons/closeIcon.tsx","../src/components/icons/orderlyLogo.tsx","../src/components/main/mainMenus/mainNavMenus.ui.tsx","../src/components/main/mainMenus/mainNavMenus.widget.tsx","../src/components/main/linkDevice/linkDevice.script.tsx","../src/components/main/linkDevice/linkDevice.ui.tsx","../src/components/main/linkDevice/widget.tsx","../src/components/main/mainNav.widget.tsx","../src/components/sidebar/sidebar.ui.tsx","../src/components/sidebar/useSideNavBuilder.script.tsx","../src/components/sidebar/sidebar.widget.tsx","../src/components/footer/footer.ui.tsx","../src/components/footer/footer.script.tsx","../src/components/footer/footer.widget.tsx","../src/components/maintenanceTips/ui.tsx","../src/components/maintenanceTips/script.tsx","../src/components/maintenanceTips/widget.tsx","../src/components/restrictedAreas/restrictedAreas.ui.tsx","../src/components/restrictedAreas/restrictedAreas.script.tsx","../src/components/restrictedAreas/restrictedAreas.widget.tsx","../src/components/scaffold.tsx","../src/utils/chain.ts"],"names":["ExtensionPositionEnum","ExtensionSlot","installExtension","AccountStatusEnum","Button","Divider","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","EVMAvatar","Flex","Text","jsx","jsxs","AccountMenu","props","state","onDisconnect","onOpenExplorer","WalletMenu","r","e","address","event","useAccount","useChains","useWalletConnector","WalletConnectorModalId","modal","toast","useCallback","useAppContext","ChainSelectorDialogId","useAccountMenu","disconnect","connectedChain","account","connectWallet","_","findByChainId","onCrateAccount","res","err","onCreateOrderlyKey","switchChain","status","statusChangeHandler","error","connect","nextState","chainInfo","explorer_base_url","AccountMenuWidget","WalletConnectButtonExtension","useMemo","cn","ProductItem","active","item","onClick","ProductsMenu","items","onItemClick","current","className","currentItem","product","index","React","useEffect","Box","EyeCloseIcon","EyeIcon","Popover","TotalValue","totalValue","visible","onToggleVisibility","visibleAvailable","FreeCollateral","freeCollateral","CurrentLeverage","currentLeverage","MaxLeverage","UnrealPnL","AccountInfoPopover","keys","elementKeys","onSetToTop","key","elements","DropdownMenu","IdentityButton","AccountSummary","rest","canToggleIndex","sizeRef","resizeObserver","entries","width","Items","Dot","Element","useLeverage","useLocalStorage","useMarginRatio","usePositionStream","useCollateral","useState","useTotalValueBuilderScript","setKeys","setElementKeys","setVisible","aggregated","totalUnrealizedROI","wrongNetwork","maxLeverage","onToggleItemByKey","k","onKeyToTop","unavailable","AccountSummaryWidget","ChainIcon","Tooltip","Spinner","ChainSelectorWidget","ChainMenu","renderIcon","trigger","useConfig","useChainMenuScript","open","setOpen","loading","setLoading","chains","currentChainId","setCurrentChainId","defaultChain","networkId","fallbackChain","firstChain","chainId","hide","onChainChangeBefore","onChainChangeAfter","ChainMenuWidget","createContext","useContext","ExpandableContext","useScaffoldContext","CampaignPositionEnum","useMainNavBuilder","campaignPosition","routerAdapter","setCurrent","currentProduct","setCurrentProduct","onItemClickHandler","scope","lastItem","args","mainNavConfig","config","converted","ChevronDownIcon","PopoverContent","PopoverAnchor","PopoverRoot","cloneElement","useRef","Fragment","NavItem","classNames","currentPath","buttonProps","isActive","onClickHandler","button","ItemIcon","SubMenus","subItem","timer","onMouseEnter","SubMenu","SubMenuTitle","name","Tag","OutlinkIcon","ICON_CLASSNAME","CampaignButton","useAppConfig","CommuntiyTelegramIcon","ref","size","CommuntiyDiscordIcon","CommuntiyXIcon","OrderlyTextIcon","opacity","SignalIcon","InfoIcon","viewBox","CloseIcon","OrderlyLogo","Logo","MainLogo","appIcons","main","MainNavMenusUI","MainNavMenusExtension","useEventEmitter","EnumTrackerKeys","ExpireSeconds","useLinkDeviceScript","confirm","setConfirm","seconds","setSeconds","secretKey","setSecretKey","url","setUrl","ee","chain","createTrackParams","getOrderlyKey","hideDialog","showDialog","onConfirm","copyUrl","timestamp","params","createUrl","str","base64","CopyIcon","SimpleDialog","SimpleDialogFooter","qr","LinkDevice","LinkDeviceIcon","LinkDeviceContent","Loading","QRCode","LinkDeviceConfirm","actions","QRCodeCanvas","canvasRef","qrcode","height","ctx","cells","tileW","tileH","row","c","w","h","LinkDeviceWidget","MainNav","logo","products","campaigns","children","MainNavWidget","memo","tv","menuItemVariants","MenuItem","mode","SideMenus","SideBarHeader","title","titleElemet","iconProps","CollapseIcon","ExpandIcon","SideBar","onItemSelect","useSideNavBuilder","expanded","setExpand","SideNavbarWidget","WsNetworkStatus","Footer","signalClsName","openUrl","useWsStatus","useFooterScript","FooterWidget","Dialog","DialogBody","DialogContent","DialogHeader","DialogTitle","MaintenanceTipsUI","showTips","tipsContent","closeTips","dialogContent","useMaintenanceStatus","format","UTCDateMini","getTimestamp","getTimeString","date","oneDay","useMaintenanceScript","setShowTips","setShowDialog","startTime","endTime","brokerName","startDate","endDate","MaintenanceTipsWidget","RestrictedAreas","useRestrictedAreasScript","restrictedInfo","RestrictedAreasWidget","Grid","useScreen","OrderlyContext","isValidElement","checkChainSupport","Scaffold","footerProps","footerHeight","setFooterHeight","footerRef","expand","checkChainSupportHandle","onExpandChange","sideBarExpandWidth","sideBarCollaspedWidth","hasLeftSidebar","isMobile"],"mappings":"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","sourcesContent":["import {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@orderly.network/ui\";\nimport { AccountMenu, AccountMenuProps } from \"./menu.ui\";\nimport { useAccountMenu } from \"./useWidgetBuilder.script\";\nimport { FC } from \"react\";\n\nexport const AccountMenuWidget = () => {\n const state = useAccountMenu();\n return <AccountMenu {...state} />;\n};\n\ninstallExtension<AccountMenuProps>({\n name: \"account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n builder: useAccountMenu,\n __isInternal: true,\n})((props: AccountMenuProps) => {\n return <AccountMenu {...props} />;\n});\n\nexport const WalletConnectButtonExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.AccountMenu} />;\n};\n","import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n Divider,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n EVMAvatar,\n Flex,\n Match,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { accountState: state, onDisconnect, onOpenExplorer } = props;\n\n if (\n state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || state.validating) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={state.validating}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n Connect wallet\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please connect wallet before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return (\n <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n Sign in\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please sign in before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\n return (\n <Button\n size=\"md\"\n onClick={() => {\n props\n .onCreateOrderlyKey()\n .then((r) => console.log(r))\n .catch((e) => console.error(e));\n }}\n >\n Enable trading\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // content={\"Please enable trading before starting to trade\"}\n // align={\"end\"}\n // >\n\n // </Tooltip>\n // );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n chainNamespace?: string;\n\n accountId?: string;\n userId?: string;\n address?: string;\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n};\n\nconst WalletMenu = (props: {\n address: string;\n onDisconnect: () => void;\n onOpenExplorer: () => void;\n}) => {\n const { address, onDisconnect } = props;\n\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n >\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {address}\n </Text.formatted>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n onCloseAutoFocus={(e) => e.preventDefault()}\n style={{ width: \"280px\" }}\n className={\"oui-py-5 oui-font-semibold\"}\n sideOffset={12}\n >\n <DropdownMenuGroup>\n <Flex px={4}>\n <Flex gap={2} className={\"oui-flex-1\"}>\n <EVMAvatar address={address} size={\"md\"} />\n <Text.formatted rule={\"address\"} size={\"base\"}>\n {address}\n </Text.formatted>\n </Flex>\n <Flex gap={2}>\n <button\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-copyAddress\"\n onClick={async () => {\n // copy\n await navigator.clipboard.writeText(address);\n }}\n >\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 className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path\n d=\"M5.249 2.243a3 3 0 0 0-3 3v4.5a3 3 0 0 0 3 3 3 3 0 0 0 3 3h4.5a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3 3 3 0 0 0-3-3zm7.5 4.5a1.5 1.5 0 0 1 1.5 1.5v4.5a1.5 1.5 0 0 1-1.5 1.5h-4.5a1.5 1.5 0 0 1-1.5-1.5h3a3 3 0 0 0 3-3z\"\n // fill=\"currentcolor\"\n // fillOpacity=\".36\"\n\n // className={''}\n />\n </svg>\n </button>\n <button onClick={() => props.onOpenExplorer()}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path d=\"M12.7432 15.7432C14.3999 15.7432 15.7432 14.3999 15.7432 12.7432V5.24316C15.7432 3.58641 14.3999 2.24316 12.7432 2.24316H5.24316C3.58641 2.24316 2.24316 3.58641 2.24316 5.24316V12.7432C2.24316 14.3999 3.58641 15.7432 5.24316 15.7432H12.7432ZM6.74316 11.9932C6.55116 11.9932 6.35092 11.9287 6.20392 11.7824C5.91142 11.4892 5.91142 10.9972 6.20392 10.7039L9.20392 7.70392L7.49316 5.99316H11.9932V10.4932L10.2824 8.78241L7.28241 11.7824C7.13616 11.9287 6.93516 11.9932 6.74316 11.9932Z\" />\n </svg>\n </button>\n </Flex>\n </Flex>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} />\n {/* <DropdownMenuGroup>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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 opacity=\".998\"\n d=\"M5.243 2.197a3 3 0 0 0-3 3v7.5a3 3 0 0 0 3 3h7.5a3 3 0 0 0 3-3v-7.5a3 3 0 0 0-3-3zm0 1.5h7.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.52 1.52 0 0 1-.754 1.298c-.144-1.771-2.046-2.798-4.496-2.798S4.603 12.251 4.486 14a1.52 1.52 0 0 1-.743-1.303v-7.5a1.5 1.5 0 0 1 1.5-1.5m3.75 1.5a2.625 2.625 0 1 0 0 5.25 2.625 2.625 0 0 0 0-5.25\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Overview</span>\n </Flex>\n </DropdownMenuItem>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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=\"M5.693 1.499c-1.463 0-2.672 1.11-2.672 2.508v9.984c0 1.398 1.209 2.508 2.672 2.508h6.657c1.463 0 2.672-1.11 2.672-2.508V6.726c0-2.672-2.58-5.227-5.25-5.227zm4.829 1.594c1.329.352 2.562 1.58 2.906 2.906h-1.735c-.667 0-1.171-.472-1.171-1.008zm-3.75 2.906h.75a.75.75 0 0 1 0 1.5h-.75a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Orders</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} /> */}\n <DropdownMenuGroup>\n <DropdownMenuItem\n size={\"xl\"}\n onSelect={(event) => {\n event.preventDefault();\n onDisconnect();\n }}\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-disconnect\"\n >\n <Flex gap={2} className={\"oui-text-danger-light\"}>\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 fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.97 14.03a.75.75 0 0 1 0-1.06l.262-.263C2.594 12.354 1.5 11.108 1.5 9.06c0-2.447 1.563-3.75 3.75-3.75H6a.75.75 0 0 1 0 1.5h-.75C3.837 6.81 3 7.508 3 9.06s.837 2.25 2.25 2.25h.38l1.188-1.188a.75.75 0 0 1-.068-.312v-.75c0-1.162.381-2.19 1.172-2.883.645-.565 1.512-.867 2.578-.867h1.13l1.34-1.34a.75.75 0 0 1 1.061 1.06l-9 9a.75.75 0 0 1-1.06 0m6.14-7.2L8.27 8.668c.065-.583.281-1.056.635-1.367.289-.253.684-.419 1.205-.473M7.825 12.8l3.414-3.415c-.126 2.12-1.496 3.297-3.414 3.415m7.705-6.58a.75.75 0 0 0-1.06 1.06c.508.509.53 1.202.53 1.72 0 .739-.014 1.203-.53 1.72-.165.164-.455.307-.825.405a3.8 3.8 0 0 1-.895.125H12a.75.75 0 0 0 0 1.5h.75c.31 0 .787-.045 1.28-.175.48-.127 1.065-.36 1.5-.795.97-.97.97-1.991.97-2.75v-.06c0-.51.002-1.778-.97-2.75\"\n fill=\"currentcolor\"\n />\n </svg>\n <span>Disconnect</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import {\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { WalletConnectorModalId } from \"@orderly.network/ui-connector\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { useCallback } from \"react\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { ChainSelectorDialogId } from \"@orderly.network/ui-chain-selector\";\n\nexport const useAccountMenu = (): any => {\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { connectWallet } = useAppContext();\n\n const [_, { findByChainId }] = useChains();\n\n const onCrateAccount = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const onCreateOrderlyKey = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({\n status,\n });\n } else {\n toast.success(\"Wallet connected\");\n }\n });\n\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorDialogId)\n .then(\n (r) => {\n if (!r.wrongNetwork) {\n if (state.status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler(state);\n } else {\n toast.success(\"Wallet connected\");\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n };\n\n const connect = async () => {\n const res = await connectWallet();\n\n if (!res) return;\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n statusChangeHandler(res);\n }\n };\n\n const statusChangeHandler = (nextState: any) => {\n if (nextState.validating || nextState.status <= AccountStatusEnum.Connected)\n return;\n\n if (nextState.status < AccountStatusEnum.SignedIn) {\n onCrateAccount();\n }\n if (nextState.status < AccountStatusEnum.EnableTrading) {\n onCreateOrderlyKey();\n }\n };\n\n const onOpenExplorer = useCallback(() => {\n if (!connectedChain) return;\n const chainInfo = findByChainId(\n connectedChain!.id as number,\n \"network_infos\"\n );\n\n if (chainInfo) {\n // @ts-ignore\n const { explorer_base_url } = chainInfo;\n if (explorer_base_url) {\n if (explorer_base_url.endsWith(\"/\")) {\n window.open(`${explorer_base_url}address/${account.address}`);\n } else {\n window.open(`${explorer_base_url}/address/${account.address}`);\n }\n }\n }\n }, [state, connectedChain]);\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n };\n\n return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect,\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { MainNavClassNames, MainNavItemsProps } from \"./mainNavItems\";\nimport { ProductsMenu, ProductsProps } from \"./products\";\nimport { cn, Divider, Flex } from \"@orderly.network/ui\";\nimport type { LogoProps } from \"@orderly.network/ui\";\nimport { AccountSummaryWidget } from \"../accountSummary\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { CampaignPositionEnum } from \"./useWidgetBuilder.script\";\nimport { CampaignButton, CampaignProps } from \"./campaignButton\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavMenusExtension } from \"./mainMenus/mainNavMenus.widget\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\n\nexport type MainNavProps = {\n className?: string;\n logo: LogoProps;\n products: ProductsProps;\n mainMenus: MainNavItemsProps;\n wrongNetwork: boolean;\n isConnected: boolean;\n campaigns?: CampaignProps;\n campaignPosition?: CampaignPositionEnum;\n classNames?: {\n root?: string;\n mainNav?: MainNavClassNames;\n // subNav?: string;\n logo?: string;\n products?: string;\n account?: string;\n chains?: string;\n campaignButton?: string;\n };\n status?: AccountStatusEnum;\n};\n\nexport const MainNav: FC<PropsWithChildren<MainNavProps>> = (props) => {\n const { className, logo, products, classNames, campaigns, campaignPosition } =\n props;\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") return null;\n\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n return (\n <Flex\n width=\"100%\"\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n className={cn(\n \"oui-main-nav oui-font-semibold\",\n className,\n classNames?.root\n )}\n >\n <Flex itemAlign={\"center\"} gap={4}>\n <MainLogo {...logo} />\n <ProductsMenu {...products} className={classNames?.products} />\n {/* <MainNavItems {...props.mainMenus} classNames={classNames?.mainNav} /> */}\n <MainNavMenusExtension\n {...props.mainMenus}\n classNames={classNames?.mainNav}\n />\n </Flex>\n {children}\n\n <Flex itemAlign={\"center\"} gap={4}>\n {campaignPosition === CampaignPositionEnum.navTailing && campaigns ? (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n ) : null}\n <AccountSummaryWidget />\n {!props.wrongNetwork && props.status! >= AccountStatusEnum.SignedIn && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n <LinkDeviceWidget />\n </>\n )}\n <ChainMenuWidget />\n {props.wrongNetwork && props.isConnected ? null : (\n <WalletConnectButtonExtension />\n )}\n </Flex>\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\n","import { FC, useMemo } from \"react\";\n\nimport { ProductItem } from \"./productItem\";\nimport { cn, Flex } from \"@orderly.network/ui\";\n\nexport type ProductsProps = {\n items?: ProductItem[];\n current?: string;\n className?: string;\n onItemClick?: (product: ProductItem) => void;\n};\n\nexport const ProductsMenu: FC<ProductsProps> = (props) => {\n const { items, onItemClick, current, className } = props;\n const currentItem = useMemo(() => {\n if (typeof current !== \"undefined\") return current;\n\n return items?.[0]?.href;\n }, [current, items]);\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex\n gap={0}\n border\n r=\"md\"\n className={cn(\"oui-p-[1px]\", className)}\n borderColor={12}\n >\n {items?.map((product, index) => {\n return (\n <ProductItem\n key={index}\n item={product}\n onClick={onItemClick}\n active={currentItem == product.href}\n />\n );\n })}\n </Flex>\n );\n};\n","import { Button, cn } from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\nexport type ProductItem = {\n name: string;\n href: string;\n};\n\nexport const ProductItem: FC<{\n item: ProductItem;\n active?: boolean;\n onClick?: (product: ProductItem) => void;\n}> = (props) => {\n const { active, item, onClick } = props;\n return (\n <Button\n variant={active ? \"gradient\" : \"text\"}\n color=\"secondary\"\n size=\"sm\"\n angle={45}\n className={cn(\n active ? \"oui-text-[rgba(0_,_0_,_0_,_0.88)]\" : \"hover:oui-bg-base-7\"\n )}\n onClick={() => {\n onClick?.(item);\n }}\n >\n {item.name}\n </Button>\n );\n};\n","import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@orderly.network/ui\";\n\ntype AccountSummaryUi = {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage: number | null;\n currentLeverage: number | null;\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n onKeyToTop: (key: string) => void;\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n totalValue = 0,\n visible = true,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Total value\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n\n <Text intensity={54}>≈</Text>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n as=\"div\"\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- FreeCollateral -----------------\nconst FreeCollateral: FC<{\n freeCollateral?: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n freeCollateral,\n visible,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n </Box> */}\n <Text.numeral\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n visible={visible}\n as=\"div\"\n >\n {freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- CurrentLeverage -----------------\nconst CurrentLeverage: FC<{\n currentLeverage: number | null;\n}> = (props) => {\n const { currentLeverage } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Current leverage\n </Text>\n </Box>\n <Text.numeral as={\"div\"} unit=\"x\">\n {currentLeverage ?? 0}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- MaxLeverage -----------------\nconst MaxLeverage: FC<{\n maxLeverage: number | null;\n}> = (props) => {\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Max leverage\n </Text>\n </Box>\n <Text color=\"primary\" as={\"div\"}>{`${props.maxLeverage ?? \"--\"}x`}</Text>\n </Flex>\n );\n};\n\n//----------------- UnrealPnL -----------------\nconst UnrealPnL: FC<{\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const { visible, onToggleVisibility, visibleAvailable = true } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Unreal. PnL\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Unreal. PnL\n </Text>\n </Box> */}\n <Text.numeral\n as={\"div\"}\n coloring\n showIdentifier\n weight={\"semibold\"}\n visible={visible}\n suffix={\n <Text.numeral coloring prefix={\"(\"} suffix={\")\"} rule={\"percentages\"}>\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- AccountInfoPopover -----------------\nconst AccountInfoPopover = (props: {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage: number | null;\n currentLeverage: number | null;\n unrealPnL: number | null;\n unrealized_pnl_ROI: number | null;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n visible?: boolean;\n onKeyToTop: (key: string) => void;\n}) => {\n const { totalValue, keys, elementKeys } = props;\n\n const onSetToTop = (key: SummaryKey) => (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n props.onKeyToTop(key);\n };\n\n const elements = elementKeys.map((key) => {\n switch (key) {\n case \"totalValue\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"totalValue\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"totalValue\")}\n onClick={() => props.onToggleItemByKey(\"totalValue\")}\n />\n <span>Total value</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"freeCollateral\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"freeCollateral\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"freeCollateral\")}\n onClick={() => props.onToggleItemByKey(\"freeCollateral\")}\n />\n <span>Free collateral</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"unrealPnL\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"unrealPnL\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"unrealPnL\")}\n onClick={() => props.onToggleItemByKey(\"unrealPnL\")}\n />\n <span>Unreal. PnL</span>\n </Flex>\n <Text.numeral\n coloring\n showIdentifier\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n suffix={\n <Text.numeral\n coloring\n prefix={\"(\"}\n visible={props.visible}\n suffix={\")\"}\n rule={\"percentages\"}\n >\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"currentLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"currentLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"currentLeverage\")}\n onClick={() => props.onToggleItemByKey(\"currentLeverage\")}\n />\n <span>Current leverage</span>\n </Flex>\n <Text.numeral\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unit=\"x\"\n >\n {props.currentLeverage ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"maxLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"maxLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"maxLeverage\")}\n onClick={() => props.onToggleItemByKey(\"maxLeverage\")}\n />\n <span>Max leverage</span>\n </Flex>\n <Text\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n color=\"primary\"\n >{`${props.maxLeverage ?? \"-\"}x`}</Text>\n </DropdownMenu>\n );\n default:\n return null;\n }\n });\n\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n {elements}\n </Flex>\n );\n};\n\nconst DropdownMenu: FC<\n PropsWithChildren<{\n onSetTop: (event: React.MouseEvent) => void;\n }>\n> = (props) => {\n return (\n <div className=\"oui-w-full oui-relative oui-group hover:oui-bg-base-6 oui-px-[6px] oui-py-1 oui-rounded\">\n <Flex justify={\"between\"} width={\"100%\"}>\n {props.children}\n </Flex>\n <button\n className=\"oui-absolute oui-right-1 oui-top-1\"\n onClick={props.onSetTop}\n >\n <svg\n className=\"group-hover:oui-opacity-100 group-hover:oui-translate-x-0 oui-opacity-0 oui-translate-x-3 oui-transition-all oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"16\"\n height=\"16\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary-darken))\"\n />\n <path d=\"M3.507 3.999a.5.5 0 1 0 0 1h9a.5.5 0 0 0 0-1zm4 8.006a.5.5 0 0 0 1 0V7.724l1.5 1.484.703-.703-2.343-2.36a.515.515 0 0 0-.72 0l-2.343 2.36.703.703 1.5-1.484z\" />\n </svg>\n </button>\n </div>\n );\n};\n\nconst IdentityButton = (props: {\n active: boolean;\n onClick: React.MouseEventHandler;\n}) => {\n return (\n <button onClick={props.onClick}>\n {props.active ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977\"\n fill=\"currentcolor\"\n className={\"oui-text-primary-light\"}\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977m.193 1.027c.531.098 1.066.45 1.447.83.381.382.706.848.84 1.459-.477.458-.77.494-1.247.243a.5.5 0 0 0-.583.087c-.91.91-1.15 1.736-1.15 2.85 0 .97-.057 1.33-.36 1.655-.085.092-.203.078-.281 0L2.849 5.615a.18.18 0 0 1-.012-.255c.178-.217.576-.386 1.669-.386 1.306.001 2-.335 2.859-1.14a.5.5 0 0 0 .094-.578c-.257-.513-.217-.784.24-1.252\"\n fill=\"currentcolor\"\n />\n </svg>\n )}\n </button>\n );\n};\n\ntype SummaryKey =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport type AccountSummaryList = Array<SummaryKey>;\nconst AccountSummaryItems: Record<SummaryKey, JSX.ElementType> = {\n totalValue: TotalValue,\n freeCollateral: FreeCollateral,\n unrealPnL: UnrealPnL,\n currentLeverage: CurrentLeverage,\n maxLeverage: MaxLeverage,\n};\n\nexport const AccountSummary = (props: AccountSummaryUi) => {\n const { keys, ...rest } = props;\n let canToggleIndex = 0;\n const sizeRef = React.useRef(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n if (Array.isArray(entries) && entries.length > 0) {\n const width = entries[0].contentRect.width;\n if (width > 1440) {\n sizeRef.current = 5;\n } else if (width > 1366) {\n sizeRef.current = 4;\n } else if (width > 1280) {\n sizeRef.current = 3;\n } else if (width > 1140) {\n sizeRef.current = 2;\n } else {\n sizeRef.current = 1;\n }\n }\n });\n\n resizeObserver.observe(document.body);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n let elements = keys.slice(0, sizeRef.current).map((key, index) => {\n switch (key) {\n case \"freeCollateral\": {\n return (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n\n case \"unrealPnL\":\n return (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n case \"currentLeverage\": {\n canToggleIndex++;\n return <CurrentLeverage currentLeverage={props.currentLeverage} />;\n }\n case \"maxLeverage\": {\n canToggleIndex++;\n return <MaxLeverage maxLeverage={props.maxLeverage} />;\n }\n case \"totalValue\":\n default:\n return (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n });\n\n return (\n <div className=\"oui-flex oui-items-center oui-gap-6\">\n <Items elements={elements} />\n <Popover\n content={\n <AccountInfoPopover\n totalValue={rest.totalValue}\n freeCollateral={props.freeCollateral}\n maxLeverage={props.maxLeverage}\n currentLeverage={props.currentLeverage}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n unrealPnL={props.unrealPnL}\n keys={keys}\n elementKeys={props.elementKeys}\n onToggleItemByKey={props.onToggleItemByKey}\n onKeyToTop={props.onKeyToTop}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n className: \"oui-p-1\",\n }}\n arrow\n >\n <div className=\"oui-cursor-pointer oui-group\">\n <Dot />\n </div>\n </Popover>\n </div>\n );\n};\n\nconst Items: FC<{\n elements: JSX.Element[];\n}> = (props) => {\n return (\n <div className=\"oui-flex oui-gap-6\">\n {props.elements.map((Element, index) => (\n <div key={index}>{Element}</div>\n ))}\n </div>\n );\n};\n\nconst Dot = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-primary-light group-data-[state=open]:oui-fill-primary-light\"\n >\n <path d=\"M10.007 8.335a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m-5.84 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m11.666 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333\" />\n </svg>\n );\n};\n","import {\n useLeverage,\n useLocalStorage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useCollateral, useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useState } from \"react\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [keys, setKeys] = useLocalStorage<string[]>(\"accountSummaryTypes\", [\n \"totalValue\",\n ]);\n\n const [elementKeys, setElementKeys] = useState<string[]>([\n \"totalValue\",\n \"freeCollateral\",\n \"unrealPnL\",\n \"currentLeverage\",\n \"maxLeverage\",\n ]);\n\n const { freeCollateral, totalValue } = useCollateral({\n dp: 2,\n });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const [maxLeverage] = useLeverage();\n\n const onToggleItemByKey = (key: string) => {\n if (keys.includes(key)) {\n setKeys(keys.filter((k: string) => k !== key));\n } else {\n setKeys([...keys, key]);\n }\n };\n\n const onKeyToTop = (key: string) => {\n if (!keys.includes(key)) {\n setKeys([key, ...keys]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n return;\n }\n\n setKeys([key, ...keys.filter((k: string) => k !== key)]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n };\n\n const unavailable =\n wrongNetwork ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n totalValue: unavailable ? null : totalValue,\n freeCollateral: unavailable ? null : freeCollateral,\n maxLeverage: unavailable ? null : maxLeverage,\n currentLeverage: unavailable ? null : currentLeverage,\n unrealPnL: unavailable ? null : aggregated?.total_unreal_pnl,\n unrealized_pnl_ROI: unavailable ? null : totalUnrealizedROI,\n // type,\n keys,\n elementKeys,\n // onTypeChange,\n visible,\n wrongNetwork,\n onToggleItemByKey,\n onKeyToTop,\n onToggleVisibility: () => setVisible(!visible),\n };\n};\n\nexport type UseTotalValueBuilderScript = ReturnType<\n typeof useTotalValueBuilderScript\n>;\n","import { AccountSummary } from \"./accountSummary.ui\";\nimport { useTotalValueBuilderScript } from \"./useWidgetBuilder.script\";\nimport type { AccountSummaryList } from \"./accountSummary.ui\";\n\nexport const AccountSummaryWidget = () => {\n const state = useTotalValueBuilderScript();\n return (\n <AccountSummary\n {...state}\n elementKeys={state.elementKeys as AccountSummaryList}\n />\n );\n};\n","import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n ChainIcon,\n cn,\n Flex,\n modal,\n Tooltip,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Spinner,\n} from \"@orderly.network/ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorWidget,\n} from \"@orderly.network/ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@orderly.network/ui-connector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nexport const ChainMenu = (props: UseChainMenuScriptReturn) => {\n if (props.wrongNetwork && props.isConnected) {\n return (\n <Tooltip\n open\n hideWhenDetached\n content={\"Please switch to a supported network to continue.\"}\n className=\"oui-bg-base-5\"\n arrow={{ className: \"oui-fill-base-5\" }}\n >\n <Button\n color=\"warning\"\n size=\"md\"\n onClick={() => {\n modal\n .show<{ wrongNetwork: boolean }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n })\n .then(\n (r) => {\n if (\n !r.wrongNetwork &&\n props.accountStatus < AccountStatusEnum.EnableTrading\n ) {\n modal.show(WalletConnectorModalId).then(\n (r) => console.log(r),\n (error) => console.log(error)\n );\n }\n },\n (error) => console.log(error)\n );\n }}\n >\n Wrong network\n </Button>\n </Tooltip>\n );\n }\n\n const renderIcon = () => {\n if (props.loading) {\n return <Spinner className=\"oui-w-[18px] oui-h-[18px]\" />;\n }\n\n if (props.currentChainId) {\n return <ChainIcon chainId={props.currentChainId} size=\"xs\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n justify=\"center\"\n className={cn(\n \"oui-relative oui-cursor-pointer\",\n \"oui-w-11 oui-h-8\",\n \"oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px]\"\n )}\n >\n {renderIcon()}\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-bottom-0\"\n >\n <defs>\n <linearGradient\n id=\"paint0_linear_490_5080\"\n x1=\"10\"\n y1=\"5\"\n x2=\"-5.79673e-08\"\n y2=\"5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n d=\"M10 7V0L0 10H7C8.65685 10 10 8.65685 10 7Z\"\n fill=\"url(#paint0_linear_490_5080)\"\n />\n </svg>\n </Flex>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={4}\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-bg-base-8 oui-w-[456px] oui-p-4 oui-rounded-xl\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\"\n )}\n >\n <ChainSelectorWidget\n close={props.hide}\n onChainChangeBefore={props.onChainChangeBefore}\n onChainChangeAfter={props.onChainChangeAfter}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport {\n useChains,\n useConfig,\n useAccount,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { API, Chain, NetworkId } from \"@orderly.network/types\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport type UseChainMenuScriptReturn = ReturnType<typeof useChainMenuScript>;\n\nexport const useChainMenuScript = () => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [chains] = useChains();\n const { state } = useAccount();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork, currentChainId, setCurrentChainId, defaultChain } =\n useAppContext();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId?.(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n let fallbackChain: Partial<Chain> | undefined;\n\n const firstChain =\n networkId === \"mainnet\" ? chains.mainnet?.[0] : chains.testnet?.[0];\n\n if (typeof defaultChain === \"function\") {\n fallbackChain = defaultChain(networkId, chains);\n } else if (typeof defaultChain === \"object\") {\n fallbackChain =\n networkId === \"mainnet\"\n ? defaultChain?.mainnet\n : defaultChain?.testnet;\n }\n\n const chainId = fallbackChain?.id || firstChain?.network_infos?.chain_id;\n if (!chainId) return;\n\n setCurrentChainId?.(chainId);\n }\n }, [\n connectedChain,\n chains,\n currentChainId,\n networkId,\n setCurrentChainId,\n defaultChain,\n ]);\n\n const hide = () => {\n setOpen(false);\n };\n\n const onChainChangeBefore = () => {\n setLoading(true);\n hide();\n };\n\n const onChainChangeAfter = () => {\n setLoading(false);\n };\n\n return {\n currentChainId,\n isConnected: !!connectedChain,\n wrongNetwork,\n accountStatus: state.status,\n networkId,\n open,\n onOpenChange: setOpen,\n hide,\n onChainChangeBefore,\n onChainChangeAfter,\n loading,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<typeof useChainMenuScript>;\n","import { ChainMenu } from \"./chainMenu.ui\";\nimport { useChainMenuScript } from \"./chainMenu.script\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuScript();\n return <ChainMenu {...state} />;\n};\n","import { useMemo, useState } from \"react\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\nimport {\n useAccount,\n useEventEmitter,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { ProductItem } from \"./productItem\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport type { MainNavItem } from \"./mainMenus/navItem\";\nimport { type MainNavWidgetProps } from \"./mainNav.widget\";\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\nexport enum CampaignPositionEnum {\n menuLeading = \"menuLeading\",\n menuTailing = \"menuTailing\",\n navTailing = \"navTailing\",\n}\n\ntype UseMainNavBuilderProps = Omit<\n MainNavWidgetProps,\n \"classNames\" | \"children\"\n>;\n\nexport const useMainNavBuilder = (props: UseMainNavBuilderProps) => {\n const { onItemClick, campaignPosition = CampaignPositionEnum.navTailing } =\n props;\n const { state } = useAccount();\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n const [currentProduct, setCurrentProduct] = useState(\n () => props?.initialProduct ?? props?.products?.[0].href ?? \"\"\n );\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n logo: {},\n mainMenus: [\n // { name: \"Trading\", href: \"/trading\" },\n // { name: \"Portfolio\", href: \"/portfolio\" },\n // { name: \"Markets\", href: \"/markets\" },\n // { name: \"Rewards\", href: \"/rewards\" },\n ],\n products: [\n // { name: \"Swap\", href: \"/swap\" },\n // { name: \"Perps\", href: \"/perps\" },\n ],\n ...props,\n campaignPosition,\n };\n\n if (props.campaigns) {\n if (campaignPosition === CampaignPositionEnum.menuTailing) {\n config.mainMenus = [...config.mainMenus, props.campaigns];\n } else if (campaignPosition === CampaignPositionEnum.menuLeading) {\n config.mainMenus = [props.campaigns, ...config.mainMenus];\n } else {\n config.campaigns = props.campaigns;\n }\n }\n\n return config;\n }, [props]);\n\n const converted: any = {};\n\n if (mainNavConfig.products && mainNavConfig.products.length) {\n converted.products = {\n items: mainNavConfig.products,\n current: currentProduct,\n onItemClick: (product: ProductItem) => {\n // No need to modify the intenal state\n const args = {\n href: product.href,\n name: product.name,\n scope: \"product\",\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n },\n };\n }\n\n if (mainNavConfig.mainMenus && mainNavConfig.mainMenus.length) {\n converted.mainMenus = {\n items: mainNavConfig.mainMenus,\n /**\n * @type string\n * The current item of the router\n */\n current,\n onItemClick: onItemClickHandler(\"mainMenu\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"mainMenu\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n if (mainNavConfig.campaigns && mainNavConfig.campaigns.children?.length) {\n converted.campaigns = {\n item: mainNavConfig.campaigns,\n current,\n onItemClick: onItemClickHandler(\"campaign\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"campaign\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n // return converted;\n\n return {\n // currentProduct,\n // logo: mainNavConfig.logo,\n ...mainNavConfig,\n\n isConnected: !!connectedChain,\n wrongNetwork,\n ...converted,\n status: state.status,\n };\n};\n\nexport type MainNavBuilder = ReturnType<typeof useMainNavBuilder>;\n","import { createContext, useContext } from \"react\";\n\nexport type RouteOption = {\n href: string;\n name: string;\n scope?: string;\n target?: string;\n};\n\nexport type RouterAdapter = {\n onRouteChange: (option: RouteOption) => void;\n currentPath?: string;\n};\n\nexport type ExpandableState = {\n routerAdapter?: RouterAdapter;\n expanded?: boolean;\n setExpand: (expand: boolean) => void;\n checkChainSupport: (chainId: number | string) => boolean;\n};\n\nexport const ExpandableContext = createContext<ExpandableState>(\n {} as ExpandableState\n);\n\nexport const useScaffoldContext = () => {\n return useContext(ExpandableContext);\n};\n","import { Divider } from \"@orderly.network/ui\";\nimport { MainNavItem, NavItem } from \"./mainMenus/navItem\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport type CampaignProps = {\n item: MainNavItem;\n className?: string;\n onItemClick?: (item: MainNavItem[]) => void;\n current?: string[];\n // classNames?: MainNavClassNames;\n};\n\nexport const CampaignButton = (props: CampaignProps) => {\n return (\n <>\n <NavItem\n item={props.item}\n onClick={props.onItemClick}\n classNames={{\n navItem: cn(\"oui-gradient-primary oui-text-white\", props.className),\n }}\n />\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n </>\n );\n};\n","import { ChevronDownIcon, PopoverContent } from \"@orderly.network/ui\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { Box, cn, PopoverAnchor, PopoverRoot, Text } from \"@orderly.network/ui\";\nimport React, {\n cloneElement,\n FC,\n HTMLAttributeAnchorTarget,\n PropsWithChildren,\n ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport type MainNavItem = {\n id?: string;\n testid?: string;\n name: string;\n href: string;\n target?: HTMLAttributeAnchorTarget;\n icon?: string | React.ReactElement;\n activeIcon?: string | React.ReactElement;\n tag?: string;\n description?: string;\n disabled?: boolean;\n children?: MainNavItem[];\n className?: string;\n asChild?: boolean;\n};\n\nexport const NavItem: FC<\n Omit<React.HTMLAttributes<HTMLButtonElement>, \"onClick\"> & {\n item: MainNavItem;\n onClick?: (item: MainNavItem[]) => void;\n // active?: boolean;\n currentPath?: string[];\n classNames?: {\n navItem?: string;\n subMenu?: string;\n };\n }\n> = (props) => {\n const { classNames, currentPath, item, onClick, ...buttonProps } = props;\n\n const isActive = useMemo(\n () => props.currentPath?.[0] === props.item.href,\n [currentPath]\n );\n\n const onClickHandler = useCallback(() => {\n if (Array.isArray(props.item.children)) return;\n props.onClick?.([props.item]);\n }, [props.item]);\n\n const button = (\n <button\n id={item.id}\n data-testid={item.testid}\n {...buttonProps}\n disabled={props.item.disabled}\n data-actived={isActive}\n className={cn(\n \"oui-text-base-contrast-36 oui-text-sm oui-relative oui-group oui-rounded oui-px-3 oui-py-1 oui-h-[32px] hover:oui-bg-base-7\",\n classNames?.navItem\n )}\n onClick={onClickHandler}\n >\n <span className={\"oui-flex oui-items-center\"}>\n <ItemIcon isActive={isActive} item={props.item} />\n <Text.gradient color={isActive ? \"brand\" : \"inherit\"} angle={45}>\n {props.item.name}\n </Text.gradient>\n {Array.isArray(props.item.children) && (\n <span className={\"oui-ml-1 group-data-[open=true]:oui-rotate-180\"}>\n {isActive ? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.913 4.515a.5.5 0 0 0-.328.202.51.51 0 0 0 .14.701L5.722 7.41a.51.51 0 0 0 .562 0l2.995-1.992a.51.51 0 0 0 .14-.7.51.51 0 0 0-.701-.14L6.002 6.382 3.287 4.577a.5.5 0 0 0-.374-.062\"\n fill=\"url(#mainNavDropDownIcon)\"\n />\n <defs>\n <linearGradient\n id=\"mainNavDropDownIcon\"\n x1=\"9.502\"\n y1=\"5.994\"\n x2=\"2.502\"\n y2=\"5.994\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n ) : (\n <ChevronDownIcon size={12} color={\"white\"} />\n )}\n </span>\n )}\n </span>\n <Box\n invisible={!isActive}\n position=\"absolute\"\n bottom={0}\n left={\"50%\"}\n height={\"3px\"}\n r=\"full\"\n width={\"60%\"}\n gradient=\"brand\"\n angle={45}\n className=\"-oui-translate-x-1/2 \"\n />\n </button>\n );\n\n if (!Array.isArray(props.item.children)) return button;\n\n return (\n <SubMenus\n items={props.item.children}\n className={classNames?.subMenu}\n current={props.currentPath?.[1]}\n onItemClick={(subItem: MainNavItem) => {\n props.onClick?.([props.item, subItem]);\n }}\n >\n {button}\n </SubMenus>\n );\n};\n\nconst SubMenus = (\n props: PropsWithChildren<{\n items: MainNavItem[];\n className?: string;\n current?: string;\n onItemClick: (item: MainNavItem) => void;\n }>\n) => {\n const [open, setOpen] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n\n const classNames = (props.children as ReactElement).props.className;\n\n return (\n <PopoverRoot open={open}>\n <PopoverAnchor>\n <div\n className={\"oui-group\"}\n data-open={open}\n onMouseEnter={() => {\n setOpen(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n setOpen(false);\n }, 150);\n }}\n >\n {cloneElement(props.children as React.ReactElement, {\n className: cn(classNames, open && \"oui-bg-base-7\"),\n })}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n setOpen(false);\n timer.current ? clearTimeout(timer.current) : void 0;\n }}\n className={cn(\n \"oui-p-1 oui-w-[260px] oui-border oui-border-line-6 oui-space-y-[2px]\",\n props.className\n )}\n >\n {props.items.map((item, index) => {\n return (\n <SubMenu\n key={index}\n item={item}\n onClick={props.onItemClick}\n active={item.href === props.current}\n />\n );\n })}\n </PopoverContent>\n </PopoverRoot>\n );\n};\n\nconst SubMenu = (props: {\n item: MainNavItem;\n active?: boolean;\n onClick: (item: MainNavItem) => void;\n}) => {\n const { item } = props;\n return (\n <Flex\n px={2}\n py={3}\n gapX={2}\n data-active={props.active ?? false}\n className={cn(\n \"hover:oui-bg-base-6 oui-cursor-pointer oui-text-base-contrast-80 oui-items-start oui-w-full oui-group data-[active=true]:oui-bg-base-5\"\n // props.active && \"oui-bg-base-5\"\n )}\n r={\"md\"}\n onClick={() => {\n props.onClick(item);\n }}\n data-testid={item.testid}\n >\n {!!props.item.icon && (\n <div className=\"oui-translate-y-1 oui-relative oui-w-6 oui-h-6\">\n <ItemIcon isActive={props.active ?? false} item={props.item} />\n </div>\n )}\n\n <div className=\"oui-flex-1\">\n <SubMenuTitle item={item} isActive={props.active} />\n {typeof item.description !== \"undefined\" && (\n <Text size={\"2xs\"} as={\"div\"} intensity={36}>\n {item.description}\n </Text>\n )}\n </div>\n </Flex>\n );\n};\n\nconst SubMenuTitle = (props: { item: MainNavItem; isActive?: boolean }) => {\n const {\n item: { name },\n isActive,\n } = props;\n return (\n <Flex itemAlign={\"center\"} width={\"100%\"} position=\"relative\">\n <div className=\"oui-flex-1 oui-flex\">\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n size={\"xs\"}\n as={\"div\"}\n intensity={80}\n weight={\"semibold\"}\n >\n {name}\n </Text.gradient>\n {typeof props.item.tag !== \"undefined\" && <Tag item={props.item} />}\n </div>\n {props.item.target === \"_blank\" && <OutlinkIcon />}\n </Flex>\n );\n};\n\nconst Tag = (props: { item: MainNavItem }) => {\n return (\n <div\n className={\n \"oui-px-2 oui-py-1 oui-ml-1 oui-rounded oui-inline-flex oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)]\"\n }\n >\n <Text.gradient color={\"brand\"} size={\"3xs\"}>\n {props.item.tag}\n </Text.gradient>\n </div>\n );\n};\n\nconst ICON_CLASSNAME =\n \"oui-flex oui-border oui-border-line oui-w-6 oui-h-6 oui-rounded-md oui-justify-center oui-items-center oui-absolute oui-left-0 oui-top-0\";\n\nconst ItemIcon = (props: { item: MainNavItem; isActive: boolean }) => {\n const { item, isActive } = props;\n\n if (!props.item.icon) return null;\n if (typeof props.item.icon === \"string\") {\n return (\n <span className={\"oui-w-[20px] oui-h-[20px] oui-mr-1\"}>\n {\n <img\n src={\n isActive\n ? (props.item.activeIcon as string) || props.item.icon\n : props.item.icon\n }\n className={\"oui-max-w-full oui-max-h-full\"}\n />\n }\n </span>\n );\n }\n // return isActive ? props.item.activeIcon || props.item.icon : props.item.icon;\n return (\n <>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"group-data-[active=true]:oui-invisible group-hover:oui-invisible\"\n )}\n >\n {props.item.icon}\n </div>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"oui-invisible group-data-[active=true]:oui-visible group-hover:oui-visible\"\n )}\n >\n {props.item.activeIcon || props.item.icon}\n </div>\n </>\n );\n};\n\nconst OutlinkIcon = () => {\n return (\n <>\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 group-hover:oui-invisible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 oui-invisible group-hover:oui-visible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"url(#outlineIcon)\"\n />\n <defs>\n <linearGradient\n id=\"outlineIcon\"\n x1=\"17.492\"\n y1=\"9.992\"\n x2=\"2.492\"\n y2=\"9.992\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n </>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\nimport { OrderlyLogo } from \"../icons\";\nimport { Logo } from \"@orderly.network/ui\";\n\ntype MainLogoProps = {\n src?: string;\n alt?: string;\n};\n\nexport const MainLogo: FC<MainLogoProps> = (props) => {\n const { appIcons } = useAppConfig();\n\n if (props.src) {\n return <Logo src={props.src} alt={props.alt} />;\n }\n\n const { main } = appIcons || {};\n\n if (main?.img) {\n return <img src={main?.img} />;\n }\n\n if (main?.component) {\n return main.component;\n }\n\n return <OrderlyLogo />;\n};\n","import { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n\nexport const CommuntiyTelegramIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M4.108 9.464S9.645 7.13 11.565 6.31c.736-.328 3.233-1.38 3.233-1.38s1.152-.46 1.056.658c-.032.46-.288 2.069-.544 3.81-.384 2.463-.8 5.157-.8 5.157s-.064.755-.608.887c-.544.13-1.44-.46-1.6-.592-.129-.098-2.401-1.576-3.233-2.299-.224-.197-.48-.591.032-1.051a124 124 0 0 0 3.36-3.285c.384-.394.768-1.313-.832-.197-2.272 1.61-4.513 3.12-4.513 3.12s-.512.33-1.472.034-2.08-.69-2.08-.69-.768-.493.544-1.018\" />\n </svg>\n );\n});\nexport const CommuntiyDiscordIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M14.956 5.522c1.604 2.374 2.396 5.053 2.1 8.136a.05.05 0 0 1-.02.033 11.7 11.7 0 0 1-3.55 1.805.045.045 0 0 1-.05-.017 9.6 9.6 0 0 1-.725-1.188.046.046 0 0 1 .024-.063 7 7 0 0 0 1.108-.531.046.046 0 0 0 .004-.076 6 6 0 0 1-.22-.174.04.04 0 0 0-.047-.006c-2.296 1.068-4.812 1.068-7.136 0a.04.04 0 0 0-.046.006 6 6 0 0 1-.22.174.046.046 0 0 0 .005.076c.353.204.721.384 1.107.531.025.01.037.039.025.063a8.5 8.5 0 0 1-.725 1.188.05.05 0 0 1-.05.017 11.7 11.7 0 0 1-3.546-1.805.05.05 0 0 1-.018-.033c-.248-2.667.257-5.368 2.097-8.137a.04.04 0 0 1 .02-.016 11.6 11.6 0 0 1 2.89-.903.05.05 0 0 1 .046.022c.125.224.269.51.366.744a10.7 10.7 0 0 1 3.246 0 8 8 0 0 1 .36-.744.044.044 0 0 1 .046-.022 11.7 11.7 0 0 1 2.89.903q.012.005.019.017m-6.018 5.07c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.576 1.442 1.276 1.442.71 0 1.276-.647 1.276-1.441m4.718 0c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.577 1.442 1.276 1.442.717 0 1.276-.647 1.276-1.441\" />\n </svg>\n );\n});\nexport const CommuntiyXIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"m4.42 4.73 4.633 6.194-4.662 5.037H5.44l4.082-4.41 3.298 4.41h3.57l-4.893-6.543 4.34-4.689h-1.05l-3.759 4.062-3.037-4.062zm1.543.772h1.64l7.244 9.686h-1.64z\" />\n </svg>\n );\n});\n\nCommuntiyXIcon.displayName = \"CommuntiyXIcon\";\nCommuntiyTelegramIcon.displayName = \"CommuntiyTelegramIcon\";\nCommuntiyDiscordIcon.displayName = \"CommuntiyDiscordIcon\";\n","import React from \"react\";\nimport { BaseIconProps } from \"@orderly.network/ui\";\n\nexport const OrderlyTextIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { opacity = 1, ...rest } = props;\n return (\n <svg\n ref={ref}\n width=\"45\"\n height=\"14\"\n viewBox=\"0 0 45 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.352 2.558a.063.063 0 0 1-.04.112H2.419a.063.063 0 0 1-.04-.112A4.73 4.73 0 0 1 5.365 1.5c1.132 0 2.171.396 2.987 1.058M3.518 7.546a.18.18 0 0 0-.148-.08H.886a.085.085 0 0 0-.083.11 4.75 4.75 0 0 0 4.562 3.429 4.75 4.75 0 0 0 4.562-3.43.085.085 0 0 0-.082-.108H7.36a.18.18 0 0 0-.148.079 2.252 2.252 0 0 1-3.694 0m3.518-2.812a.18.18 0 0 0 .134.061h2.598c.06 0 .101-.057.082-.113a4.8 4.8 0 0 0-.801-1.432.17.17 0 0 0-.132-.062H1.814a.17.17 0 0 0-.132.062A4.8 4.8 0 0 0 .88 4.682a.085.085 0 0 0 .081.113h2.6c.05 0 .099-.023.133-.06a2.25 2.25 0 0 1 1.67-.742c.663 0 1.258.286 1.67.741M7.6 6.95a.067.067 0 0 1-.063-.086 2.26 2.26 0 0 0-.079-1.45.067.067 0 0 1 .061-.093h2.45c.03 0 .058.022.063.052a4.8 4.8 0 0 1 .04 1.52.064.064 0 0 1-.065.057zm-4.407-.086a.067.067 0 0 1-.063.086H.723a.064.064 0 0 1-.064-.056 4.8 4.8 0 0 1 .039-1.52.065.065 0 0 1 .063-.053h2.45c.047 0 .079.049.061.093a2.25 2.25 0 0 0-.079 1.45\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n d=\"M11.272 4.438h1.685v1.61l-.275-.312q.237-.511.662-.874.425-.361.949-.487.524-.124 1.073.038v1.585q-.661-.224-1.223-.125-.55.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.148 3.22q0-.923.4-1.697.41-.774 1.123-1.211a2.95 2.95 0 0 1 1.573-.437 2.7 2.7 0 0 1 1.523.437 2.8 2.8 0 0 1 1.01 1.198q.363.762.363 1.71 0 .95-.362 1.71-.35.762-1.011 1.199a2.7 2.7 0 0 1-1.523.437 2.95 2.95 0 0 1-1.573-.437 3.1 3.1 0 0 1-1.124-1.198 3.7 3.7 0 0 1-.4-1.71m1.748 0q0 .5.224.924.225.412.612.65.387.236.861.236.475 0 .862-.237.386-.237.611-.649.225-.424.225-.924 0-.498-.225-.91-.225-.425-.611-.65a1.6 1.6 0 0 0-.862-.237q-.474 0-.861.237a1.6 1.6 0 0 0-.612.65q-.224.412-.224.91m3.395-6.016h1.685v9.237h-1.685zm4.192 5.329h3.97l-.387.537a2 2 0 0 0-.25-.9 1.63 1.63 0 0 0-.612-.623 1.64 1.64 0 0 0-.861-.225q-.487 0-.886.25a1.6 1.6 0 0 0-.625.686 2.1 2.1 0 0 0-.224.961q0 .537.224.974.239.436.662.687.425.25.961.25.525 0 .937-.238.423-.25.661-.674l1.386.624q-.45.787-1.236 1.26-.786.463-1.798.463-.96 0-1.747-.437a3.3 3.3 0 0 1-1.248-1.198 3.34 3.34 0 0 1-.45-1.71q0-.924.437-1.686.45-.775 1.223-1.21.774-.45 1.723-.45 1.061 0 1.885.537.825.536 1.21 1.448.4.898.226 1.96h-5.181zm6.221-2.534h1.685v1.61l-.274-.312q.237-.511.661-.874.425-.361.949-.487.525-.124 1.073.038v1.585q-.661-.224-1.223-.125-.549.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.885-2.796h1.686v9.237H35.86zm4.359 9.324q.224.487.587.737.362.262.836.262.711 0 1.186-.5.487-.486.487-1.26V9.08l.262.35a2.43 2.43 0 0 1-.911 1.011q-.6.362-1.373.362-.8 0-1.386-.337a2.3 2.3 0 0 1-.886-.936q-.312-.6-.312-1.386V4.438h1.685v3.408q0 .436.162.761.162.312.462.5.312.174.761.174.45 0 .8-.175a1.3 1.3 0 0 0 .549-.511q.187-.338.187-.75V4.439H45v5.767q0 .936-.45 1.685a3.07 3.07 0 0 1-1.21 1.186 3.4 3.4 0 0 1-1.698.424q-.973 0-1.735-.474a3.3 3.3 0 0 1-1.186-1.26z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\n );\n }\n);\n","import { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n// import { BaseIcon, BaseIconProps } from \"./baseIcon\";\n\nexport const SignalIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { size = 18, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n ref={ref}\n className=\"oui-fill-success-light\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M9.02092 2.92969C6.18562 2.92969 3.51037 4.13854 1.68502 6.18754C1.40947 6.49676 1.446 6.96671 1.75537 7.24218C2.0646 7.51743 2.53447 7.48143 2.81002 7.17183C4.35112 5.44196 6.6141 4.42969 9.02092 4.42969C11.4205 4.42969 13.6369 5.43123 15.185 7.17183C15.4603 7.48143 15.9301 7.51743 16.2397 7.24218C16.5492 6.96694 16.5853 6.49699 16.31 6.18754C14.4787 4.12856 11.8512 2.92969 9.02092 2.92969ZM9.02092 5.92969C7.04092 5.92969 5.20867 6.78461 3.93502 8.25019C3.6633 8.56294 3.6927 9.03318 4.00537 9.30468C4.31797 9.57618 4.7883 9.54693 5.06002 9.23418C6.05175 8.09343 7.47982 7.42968 9.02092 7.42968C10.5348 7.42968 11.9446 8.08144 12.935 9.18769C13.2113 9.49593 13.681 9.51093 13.9897 9.23418C14.2983 8.95818 14.3364 8.48793 14.06 8.17968C12.7879 6.75896 10.9659 5.92969 9.02092 5.92969ZM9.02092 8.92968C7.91917 8.92968 6.89242 9.40218 6.18502 10.2189C5.91375 10.5317 5.94225 11.0019 6.25537 11.2734C6.56835 11.5449 7.03875 11.5164 7.31002 11.2029C7.73542 10.7124 8.3589 10.4297 9.02092 10.4297C9.6684 10.4297 10.2604 10.7072 10.685 11.1797C10.962 11.4879 11.4552 11.5037 11.7631 11.2262C12.0712 10.9494 12.087 10.4799 11.81 10.1717C11.1037 9.38643 10.0983 8.92968 9.02092 8.92968ZM8.99752 11.9297C8.81609 11.9297 8.64374 12.0047 8.50537 12.1404C8.50537 12.1404 7.3935 13.2362 6.95842 13.6637C6.52342 14.0919 6.7968 14.9319 7.49752 14.9297H9.63037H10.4975C11.1864 14.9319 11.477 14.0739 11.0366 13.6404C10.5961 13.2069 9.51322 12.1404 9.51314 12.1404C9.37469 12.0047 9.17894 11.9297 8.99752 11.9297Z\" />\n </svg>\n );\n }\n);\n\nSignalIcon.displayName = \"SignalIcon\";\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const InfoIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${size}px`}\n height={`${size}px`}\n fill=\"none\"\n viewBox={`0 0 20 20`}\n {...rest}\n >\n <path\n d=\"M10.012 1.66602C5.40954 1.66602 1.67871 5.39685 1.67871 9.99935C1.67871 14.6018 5.40954 18.3327 10.012 18.3327C14.6145 18.3327 18.3454 14.6018 18.3454 9.99935C18.3454 5.39685 14.6145 1.66602 10.012 1.66602ZM10.012 5.83268C10.472 5.83268 10.8454 6.20602 10.8454 6.66602V10.8327C10.8454 11.2927 10.472 11.666 10.012 11.666C9.55204 11.666 9.17871 11.2927 9.17871 10.8327V6.66602C9.17871 6.20602 9.55204 5.83268 10.012 5.83268ZM10.012 12.4993C10.472 12.4993 10.8454 12.8727 10.8454 13.3327C10.8454 13.7927 10.472 14.166 10.012 14.166C9.55204 14.166 9.17871 13.7927 9.17871 13.3327C9.17871 12.8727 9.55204 12.4993 10.012 12.4993Z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const CloseIcon: FC<IconProps> = (props) => {\n const { size = 16, viewBox, ...rest } = props;\n return (\n <svg\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M3.32972 2.60449C3.15912 2.60449 2.98072 2.66183 2.85052 2.79183C2.59019 3.0525 2.59019 3.48982 2.85052 3.75049L7.03806 7.93782L2.85052 12.1252C2.59019 12.3858 2.59019 12.8232 2.85052 13.0838C3.11092 13.3438 3.54852 13.3438 3.80892 13.0838L7.99639 8.89649L12.1839 13.0838C12.4443 13.3438 12.8819 13.3438 13.1423 13.0838C13.4026 12.8232 13.4026 12.3858 13.1423 12.1252L8.95472 7.93782L13.1423 3.75049C13.4026 3.48982 13.4026 3.0525 13.1423 2.79183C13.0121 2.66183 12.8336 2.60449 12.6631 2.60449C12.4925 2.60449 12.3141 2.66183 12.1839 2.79183L7.99639 6.97916L3.80892 2.79183C3.67872 2.66183 3.50032 2.60449 3.32972 2.60449Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const OrderlyLogo: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width=\"200\"\n height=\"24\"\n viewBox=\"0 0 200 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.2637 18.5152H26.1444V13.3629C26.1444 10.2669 27.9664 9.39239 29.6701 9.39239C29.9777 9.39239 30.2617 9.41602 30.6639 9.46329V6.20176C30.2853 6.10722 29.9777 6.08359 29.7174 6.08359C27.8481 6.08359 26.6886 7.3362 26.2153 9.27421H26.1444V6.22539H22.2637V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M37.3191 18.7516C39.1411 18.7516 40.3952 17.7826 40.7265 16.8608V18.5152H44.6072V1.97122H40.7265V7.87979C40.3952 6.95806 39.1411 5.98905 37.3191 5.98905C34.8108 5.98905 31.9713 7.83252 31.9713 12.3703C31.9713 16.9317 34.8108 18.7516 37.3191 18.7516ZM35.6153 12.3703C35.6153 10.196 36.9168 9.20331 38.2892 9.20331C39.638 9.20331 40.8921 10.196 40.8921 12.3703C40.8921 14.5447 39.638 15.5373 38.2892 15.5373C36.9168 15.5373 35.6153 14.5447 35.6153 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M53.418 18.7516C56.4468 18.7516 58.6475 17.1917 59.2154 14.3556H55.8079C55.595 15.1592 55.0744 15.8209 53.489 15.8209C51.9746 15.8209 51.0281 15.1355 50.8151 13.3393H59.31C59.3573 13.0557 59.381 12.8194 59.381 12.3703C59.381 7.57255 56.5888 5.98905 53.418 5.98905C50.1289 5.98905 47.1474 7.73799 47.1474 12.323C47.1474 17.0972 50.3655 18.7516 53.418 18.7516ZM50.8388 11.0941C51.0754 9.676 51.8799 8.9197 53.3234 8.9197C55.0981 8.9197 55.6423 10.0305 55.7133 11.0941H50.8388Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.8978 18.5152H65.7784V13.3629C65.7784 10.2669 67.6005 9.39239 69.3042 9.39239C69.6118 9.39239 69.8957 9.41602 70.298 9.46329V6.20176C69.9194 6.10722 69.6118 6.08359 69.3515 6.08359C67.4821 6.08359 66.3227 7.3362 65.8494 9.27421H65.7784V6.22539H61.8978V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M72.5672 18.5152H76.4479V1.97122H72.5672V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M79.8261 20.0278V23.2893C83.6358 23.6911 85.2212 22.4149 86.8776 18.3734L91.8468 6.22539H87.8714L85.1739 13.5757L82.5473 6.22539H78.5957L83.0679 17.2626C83.3755 17.9953 83.3992 18.3734 83.1389 18.9643C82.9259 19.437 82.3817 20.3587 79.8261 20.0278Z\"\n fill=\"white\"\n />\n <path\n d=\"M100.278 18.5152H104.229V8.63609H104.324L110.287 18.5152H114.546V1.97122H110.571V12.1103H110.476L104.371 1.97122H100.278V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M123.327 18.7516C126.356 18.7516 128.557 17.1917 129.125 14.3556H125.717C125.504 15.1592 124.984 15.8209 123.398 15.8209C121.884 15.8209 120.937 15.1355 120.724 13.3393H129.219C129.267 13.0557 129.29 12.8194 129.29 12.3703C129.29 7.57255 126.498 5.98905 123.327 5.98905C120.038 5.98905 117.057 7.73799 117.057 12.323C117.057 17.0972 120.275 18.7516 123.327 18.7516ZM120.748 11.0941C120.985 9.676 121.789 8.9197 123.233 8.9197C125.007 8.9197 125.552 10.0305 125.623 11.0941H120.748Z\"\n fill=\"white\"\n />\n <path\n d=\"M137.439 18.6807C138.172 18.6807 138.882 18.5861 139.474 18.4207V15.5609C138.93 15.6082 138.717 15.6082 138.456 15.6082C137.202 15.6082 136.966 14.9228 136.966 14.072V9.22695H139.379V6.22539H136.966V3.01113H133.085V6.22539H130.979V9.22695H133.085V14.6156C133.085 17.4753 134.789 18.6807 137.439 18.6807Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.456 18.5152H148.833L150.797 11.3777L152.761 18.5152H157.115L160.333 6.22539H156.666L154.749 14.781H154.654L152.454 6.22539H149.117L146.917 14.781H146.822L144.905 6.22539H141.261L144.456 18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M167.796 18.7516C170.896 18.7516 174.043 16.8845 174.043 12.3703C174.043 7.85616 170.896 5.98905 167.796 5.98905C164.673 5.98905 161.549 7.85616 161.549 12.3703C161.549 16.8845 164.673 18.7516 167.796 18.7516ZM165.169 12.3703C165.169 10.196 166.282 9.20331 167.796 9.20331C169.287 9.20331 170.399 10.196 170.399 12.3703C170.399 14.5447 169.287 15.5373 167.796 15.5373C166.282 15.5373 165.169 14.5447 165.169 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.554 18.5152H180.434V13.3629C180.434 10.2669 182.256 9.39239 183.96 9.39239C184.268 9.39239 184.552 9.41602 184.954 9.46329V6.20176C184.575 6.10722 184.268 6.08359 184.007 6.08359C182.138 6.08359 180.979 7.3362 180.505 9.27421H180.434V6.22539H176.554V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M187.223 18.5152H191.104V14.9701L192.074 13.9302L195.742 18.5152H200.001L194.44 11.4249L199.362 6.22539H195.126L191.104 10.8104V1.97122H187.223V18.5152Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.66235 0.640167L9.70838 0.640167C12.1367 0.64581 14.355 1.54403 16.052 3.02375C16.1722 3.1286 16.0961 3.32102 15.9365 3.32102L3.43427 3.32102C3.27465 3.32102 3.1985 3.1286 3.31874 3.02375C5.01571 1.54403 7.23406 0.645809 9.66235 0.640167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.9175 12.9472C5.84821 12.8485 5.73663 12.7865 5.61594 12.7865L0.606422 12.7865C0.461299 12.7865 0.355489 12.924 0.39667 13.063C1.58273 17.0661 5.29234 19.9869 9.68495 19.9869C14.0776 19.9869 17.7872 17.0661 18.9732 13.063C19.0144 12.924 18.9086 12.7865 18.7635 12.7865L13.754 12.7865C13.6333 12.7865 13.5218 12.8485 13.4525 12.9472C12.6208 14.1317 11.2434 14.9061 9.68499 14.9061C8.12654 14.9061 6.74917 14.1317 5.9175 12.9472Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.3322 7.51577C13.4208 7.63078 13.5556 7.7029 13.7009 7.7029L18.7216 7.7029C18.868 7.7029 18.9741 7.56325 18.9304 7.42361C18.551 6.2113 17.9392 5.10154 17.147 4.14637C17.0811 4.06686 16.9826 4.02197 16.8792 4.02197L2.4903 4.02197C2.38694 4.02197 2.28845 4.06686 2.22251 4.14637C1.43037 5.10153 0.818541 6.2113 0.439134 7.42361C0.395431 7.56325 0.501494 7.7029 0.647976 7.7029L5.66868 7.7029C5.81394 7.7029 5.9488 7.63078 6.03735 7.51577C6.87801 6.42387 8.19911 5.72017 9.68478 5.72017C11.1704 5.72017 12.4916 6.42387 13.3322 7.51577Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1283 12.0868C14.0334 12.0868 13.969 11.9902 14.0018 11.9013C14.184 11.4069 14.2835 10.8724 14.2835 10.3148C14.2835 9.70687 14.1652 9.12653 13.9505 8.59547C13.9142 8.50592 13.9788 8.40582 14.0755 8.40582L19.0003 8.40582C19.1057 8.40582 19.1968 8.48012 19.2156 8.58377C19.3172 9.14546 19.3702 9.72401 19.3702 10.3149C19.3702 10.8567 19.3256 11.3881 19.2399 11.9057C19.2225 12.0108 19.1307 12.0868 19.0241 12.0868L14.1283 12.0868ZM5.36846 11.9013C5.40122 11.9902 5.33678 12.0868 5.24195 12.0868L0.346163 12.0868C0.239492 12.0868 0.147732 12.0108 0.130321 11.9057C0.0445957 11.3881 0 10.8567 0 10.3149C0 9.72401 0.0530502 9.14546 0.154653 8.58377C0.173403 8.48011 0.264481 8.40582 0.369941 8.40582L5.29476 8.40582C5.39146 8.40582 5.45599 8.50592 5.41977 8.59547C5.20498 9.12653 5.08673 9.70687 5.08673 10.3148C5.08673 10.8724 5.18623 11.4069 5.36846 11.9013Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import { Flex } from \"@orderly.network/ui\";\nimport { MainNavItem, NavItem } from \"./navItem\";\nimport { FC } from \"react\";\n\nexport type MainNavClassNames = {\n root?: string;\n navItem?: string;\n subMenu?: string;\n};\n\nexport type MainNavItemsProps = {\n items?: MainNavItem[];\n current?: string[];\n classNames?: MainNavClassNames;\n onItemClick?: (item: MainNavItem[]) => void;\n};\n\nexport const MainNavMenusUI: FC<MainNavItemsProps> = (props) => {\n const { items, classNames } = props;\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex gap={2} className={classNames?.root}>\n {items?.map((item, index) => (\n <NavItem\n key={index}\n item={item}\n // active={item.href === props.current?.[0]}\n currentPath={props.current}\n onClick={props.onItemClick}\n />\n ))}\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { MainNavMenusUI, type MainNavItemsProps } from \"./mainNavMenus.ui\";\nimport {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@orderly.network/ui\";\n\nexport const MainNavMenusWidget: FC<MainNavItemsProps> = (props) => {\n return <MainNavMenusUI {...props} />;\n};\n\ninstallExtension<MainNavItemsProps>({\n name: \"default-main-nav-menus\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MainMenus],\n __isInternal: true,\n})((props: MainNavItemsProps) => {\n return <MainNavMenusUI {...props} />;\n});\n\nexport const MainNavMenusExtension: FC<MainNavItemsProps> = (props) => {\n return (\n <ExtensionSlot position={ExtensionPositionEnum.MainMenus} {...props} />\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useAccount, useChains, useEventEmitter } from \"@orderly.network/hooks\";\nimport { EnumTrackerKeys } from \"@orderly.network/types\";\n\nexport type UseLinkDeviceScriptReturn = ReturnType<typeof useLinkDeviceScript>;\n\nconst ExpireSeconds = 60;\n\nexport function useLinkDeviceScript() {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n const [confirm, setConfirm] = useState(false);\n const [seconds, setSeconds] = useState(ExpireSeconds);\n const [secretKey, setSecretKey] = useState(\"\");\n const [url, setUrl] = useState(\"\");\n const ee = useEventEmitter();\n\n const { state, account } = useAccount();\n\n const [_, { findByChainId }] = useChains(undefined, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const createTrackParams = () => {\n const chain = findByChainId(account.chainId as number);\n return {\n wallet: state?.connectWallet?.name,\n network: chain?.network_infos.name,\n };\n };\n\n const getOrderlyKey = useCallback(async () => {\n try {\n const res = await account.createApiKey(30);\n setSecretKey(res.secretKey);\n setLoading(false);\n\n ee.emit(\n EnumTrackerKeys.SIGN_LINK_DEVICE_MESSAGE_SUCCESS,\n createTrackParams()\n );\n } catch (e) {\n console.error(\"getOrderlyKey\", e);\n\n if (e instanceof Error) {\n if (\n e.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: e.message,\n userAddress: account.address,\n });\n }\n }\n hideDialog();\n }\n }, [account]);\n\n const showDialog = useCallback(() => {\n setOpen(true);\n getOrderlyKey();\n ee.emit(EnumTrackerKeys.CLICK_LINK_DEVICE_BUTTON, createTrackParams());\n }, [account]);\n\n const hideDialog = useCallback(() => {\n setOpen(false);\n }, []);\n\n const onConfirm = useCallback(() => {\n setConfirm(true);\n ee.emit(EnumTrackerKeys.LINK_DEVICE_MODAL_CLICK_CONFIRM, {});\n }, []);\n\n const copyUrl = useCallback(() => {\n navigator.clipboard.writeText(url);\n }, [url]);\n\n useEffect(() => {\n // when hide dialog, reset data\n if (!open) {\n setConfirm(false);\n setLoading(true);\n setSeconds(ExpireSeconds);\n setSecretKey(\"\");\n setUrl(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n if (seconds === 0) {\n hideDialog();\n return;\n }\n\n if (!confirm) {\n return;\n }\n\n const timer = setTimeout(() => {\n setSeconds(seconds - 1);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, [seconds, confirm]);\n\n useEffect(() => {\n if (confirm && secretKey) {\n const timestamp = Math.floor(Date.now() / 1000) + ExpireSeconds;\n const params = {\n k: secretKey,\n t: timestamp,\n a: account.address,\n i: account.chainId,\n n: account.walletAdapter?.chainNamespace,\n };\n const url = createUrl(params);\n setUrl(url);\n }\n }, [confirm, secretKey]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n loading,\n seconds,\n confirm,\n onConfirm,\n url,\n copyUrl,\n };\n}\n\nfunction createUrl(params: Record<string, any>) {\n const str = JSON.stringify(params);\n const base64 = window.btoa(str);\n console.log(\"str\", str.length, str);\n console.log(\"base64\", base64.length, base64);\n return `${window.location.origin}?link=${base64}`;\n}\n","import { FC, SVGProps, useEffect, useRef } from \"react\";\nimport {\n cn,\n CopyIcon,\n Flex,\n SimpleDialog,\n SimpleDialogFooter,\n SimpleDialogFooterProps,\n Text,\n} from \"@orderly.network/ui\";\nimport { qrcode as qr } from \"@akamfoad/qr\";\n\nimport { MainLogo } from \"../mainLogo\";\nimport { UseLinkDeviceScriptReturn } from \"./linkDevice.script\";\n\nexport type LinkDeviceProps = UseLinkDeviceScriptReturn;\n\nexport const LinkDevice: FC<LinkDeviceProps> = (props) => {\n return (\n <>\n <LinkDeviceIcon\n className=\"oui-text-base-contrast-80 oui-cursor-pointer\"\n onClick={props.showDialog}\n />\n <SimpleDialog\n title={<Text weight=\"semibold\">Confirm</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <LinkDeviceContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nexport const LinkDeviceContent: FC<LinkDeviceProps> = (props) => {\n if (props.loading) {\n return <Loading />;\n }\n\n if (props.confirm) {\n return (\n <QRCode\n hideDialog={props.hideDialog}\n seconds={props.seconds}\n url={props.url}\n copyUrl={props.copyUrl}\n />\n );\n }\n\n return (\n <LinkDeviceConfirm\n hideDialog={props.hideDialog}\n onConfirm={props.onConfirm}\n />\n );\n};\n\ntype QRCodeProps = Pick<\n LinkDeviceProps,\n \"seconds\" | \"hideDialog\" | \"copyUrl\"\n> & {\n url?: string;\n};\n\nconst QRCode: FC<QRCodeProps> = (props) => {\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n primary: {\n label: \"Ok\",\n onClick: props.hideDialog,\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\" gapY={3}>\n <Text size=\"base\" intensity={98}>\n Scan QR Code\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center\"\n >\n {/* need to break the line by \"/\" */}\n Scan the QR code or paste the URL into another browser/{\"\\n\"}device to\n continue.\n </Text>\n\n <Text size=\"sm\" intensity={54}>\n Countdown:{\" \"}\n <Text.gradient color=\"brand\" className=\"oui-tabular-nums\">\n {props.seconds}s\n </Text.gradient>\n </Text>\n\n <Flex\n className={cn(\n \"oui-w-[240px] oui-h-[240px] \",\n \"oui-border oui-border-base-contrast-20 oui-rounded-2xl\"\n )}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Flex\n className=\"oui-w-[220px] oui-h-[220px] oui-rounded-lg oui-bg-white\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <QRCodeCanvas width={196} height={196} content={props.url} />\n </Flex>\n </Flex>\n\n <Flex\n direction=\"row\"\n gap={1}\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-group oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n )}\n onClick={props.copyUrl}\n >\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast\"\n />\n <Text size=\"2xs\" weight=\"regular\">\n Copy URL\n </Text>\n </Flex>\n\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\ntype QRCodeCanvasProps = {\n width: number;\n height: number;\n content?: string;\n};\n\nconst QRCodeCanvas: FC<QRCodeCanvasProps> = (props) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!canvasRef.current || !props.content) return;\n\n const qrcode = qr(props.content);\n const width = props.width;\n const height = props.height;\n\n const ctx = canvasRef.current.getContext(\"2d\")!;\n\n const cells = qrcode.modules!;\n\n const tileW = width / cells.length;\n const tileH = height / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n }, [canvasRef, props.content]);\n\n return <canvas width={props.width} height={props.height} ref={canvasRef} />;\n};\n\ntype LinkDeviceConfirmProps = Pick<LinkDeviceProps, \"hideDialog\" | \"onConfirm\">;\n\nconst LinkDeviceConfirm: FC<LinkDeviceConfirmProps> = (props) => {\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n secondary: {\n label: \"Cancel\",\n onClick: props.hideDialog,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n primary: {\n label: \"Confirm\",\n onClick: props.onConfirm,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\">\n <MainLogo />\n <Text size=\"base\" intensity={98} className=\"oui-mt-5\">\n Link Mobile Device\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center oui-mt-3\"\n >\n Open pro.woofi.com on your mobile device and scan the QR code to link\n this wallet. For security, the QR code will expire in 60 seconds. <br />\n The QR code allows mobile trading but does not enable withdrawals.\n Ensure you are not sharing your screen or any screenshots of the QR\n code.\n </Text>\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\nconst Loading = () => {\n return (\n <Flex direction=\"column\" gap={5}>\n <Spinner />\n <Text size=\"sm\" intensity={98}>\n Approve QR code with wallet...\n </Text>\n </Flex>\n );\n};\n\nconst Spinner = () => {\n return (\n <svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-animate-spin\"\n >\n <path\n d=\"M11.4858 52.1631C10.4698 52.5965 9.28872 52.1259 8.91766 51.0855C7.68926 47.6412 7.04029 44.0121 7.00182 40.3463C6.95634 36.0129 7.76483 31.713 9.38113 27.6921C10.9974 23.6712 13.3899 20.0079 16.4219 16.9116C18.9868 14.2923 21.967 12.122 25.2375 10.4861C26.2253 9.99202 27.4035 10.4698 27.8369 11.4858L28.8571 13.8773C29.2904 14.8933 28.8139 16.0615 27.8336 16.5706C25.3569 17.8567 23.0959 19.5294 21.1375 21.5293C18.7119 24.0064 16.7979 26.9369 15.5049 30.1537C14.2119 33.3704 13.5651 36.8103 13.6015 40.277C13.6308 43.076 14.1051 45.8482 15.0026 48.4906C15.3579 49.5365 14.8933 50.7096 13.8773 51.143L11.4858 52.1631Z\"\n fill=\"url(#paint0_linear_177_6754)\"\n />\n <path\n d=\"M73 40C73 58.2254 58.2254 73 40 73C21.7746 73 7 58.2254 7 40C7 21.7746 21.7746 7 40 7C58.2254 7 73 21.7746 73 40ZM13.6 40C13.6 54.5803 25.4197 66.4 40 66.4C54.5803 66.4 66.4 54.5803 66.4 40C66.4 25.4197 54.5803 13.6 40 13.6C25.4197 13.6 13.6 25.4197 13.6 40Z\"\n fill=\"white\"\n fill-opacity=\"0.06\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_177_6754\"\n x1=\"73\"\n y1=\"40\"\n x2=\"7\"\n y2=\"40\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n","import { useLinkDeviceScript } from \"./linkDevice.script\";\nimport { LinkDevice } from \"./linkDevice.ui\";\n\nexport const LinkDeviceWidget = () => {\n const state = useLinkDeviceScript();\n return <LinkDevice {...state} />;\n};\n","import { PropsWithChildren } from \"react\";\nimport { MainNav, MainNavProps } from \"./mainNav.ui\";\nimport { MainNavItem } from \"./mainMenus/navItem\";\nimport {\n CampaignPositionEnum,\n useMainNavBuilder,\n} from \"./useWidgetBuilder.script\";\n\nexport type MainNavWidgetProps = PropsWithChildren<{\n logo?: {\n src: string;\n alt: string;\n };\n mainMenus?: MainNavItem[];\n\n products?: MainNavItem[];\n\n campaigns?: MainNavItem;\n campaignPosition?: CampaignPositionEnum;\n\n initialProduct?: string;\n /**\n * initial menu path, if it has submenus, use array\n * @type string | string[]\n */\n initialMenu?: string | string[];\n\n onItemClick?: (options: {\n href: string;\n name: string;\n scope?: string;\n }) => void;\n}> &\n Pick<MainNavProps, \"classNames\">;\n\nexport const MainNavWidget = (props: MainNavWidgetProps) => {\n const { children, classNames, ...rest } = props;\n const state = useMainNavBuilder(rest);\n return (\n <MainNav classNames={classNames} {...state}>\n {children}\n </MainNav>\n );\n};\n","import React, { FC, memo, SVGProps } from \"react\";\nimport {\n Box,\n Flex,\n tv,\n VariantProps,\n Text,\n cn,\n Tooltip,\n} from \"@orderly.network/ui\";\n\ntype SideMenuItem = {\n name: string;\n icon?: React.ReactNode;\n href?: string;\n disabled?: boolean;\n onClick?: () => void;\n};\n\nconst menuItemVariants = tv({\n slots: {\n button: [\n \"oui-h-10\",\n \"oui-px-3\",\n \"oui-rounded-md\",\n \"oui-w-full\",\n \"oui-text-left\",\n \"oui-text-base\",\n \"oui-text-base-contrast-36\",\n // \"oui-flex\",\n \"oui-group\",\n // \"oui-space-x-2\",\n // \"oui-items-center\",\n \"hover:oui-bg-base-8\",\n \"oui-transition-colors\",\n \"group-data-[state=closed]/bar:oui-w-[42px]\",\n \"oui-overflow-hidden\",\n ],\n icon: [],\n },\n variants: {\n mode: {\n \"icon-only\": {\n button: \"oui-w-10\",\n icon: \"w-6 h-6\",\n },\n full: {\n button: \"oui-full\",\n icon: \"w-6 h-6\",\n },\n },\n active: {\n true: {\n button: \"oui-bg-base-5 hover:oui-bg-base-5\",\n },\n },\n open: {\n true: {\n button: \"\",\n },\n },\n },\n});\n\nconst MenuItem: FC<\n {\n item: SideMenuItem;\n active?: boolean;\n open?: boolean;\n onClick?: (item: SideMenuItem) => void;\n } & VariantProps<typeof menuItemVariants>\n> = memo((props) => {\n const { item, mode, open, onClick, active, ...rest } = props;\n const { button } = menuItemVariants({\n mode,\n active: props.active,\n open: props.open,\n });\n const children = (\n <button\n data-actived={props.active}\n disabled={item.disabled}\n className={button()}\n onClick={() => {\n props.onClick?.(item);\n }}\n >\n <Flex itemAlign={\"center\"} gap={2} as=\"span\">\n {item.icon}\n {props.open && (\n <Text.gradient\n color={props.active ? \"brand\" : \"inherit\"}\n angle={45}\n size=\"base\"\n className=\"oui-animate-in oui-fade-in\"\n >\n {item.name}\n </Text.gradient>\n )}\n </Flex>\n </button>\n );\n\n if (props.open) {\n return <li className=\"oui-min-w-[120px]\">{children}</li>;\n }\n\n return (\n <li>\n <Tooltip content={item.name} side=\"right\" align=\"center\" sideOffset={20}>\n {children}\n </Tooltip>\n </li>\n );\n});\n\nMenuItem.displayName = \"LeftMenuItem\";\n\nconst SideMenus: FC<{\n menus?: SideMenuItem[];\n current?: string;\n open?: boolean;\n onItemSelect?: (item: SideMenuItem) => void;\n}> = (props) => {\n return (\n <Box py={6}>\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-invisible oui-pointer-events-none\"\n >\n <defs>\n <linearGradient\n id=\"side-menu-gradient\"\n x1=\"15.7432\"\n y1=\"8.94726\"\n x2=\"2.24316\"\n y2=\"8.94726\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n <ul className=\"oui-space-y-4\">\n {props.menus?.map((item, index) => {\n return (\n <MenuItem\n key={index}\n item={item}\n open={props.open}\n active={item.href === props.current}\n onClick={props.onItemSelect}\n />\n );\n })}\n </ul>\n </Box>\n );\n};\n\ntype SideBarHeaderProps = {\n onToggle?: () => void;\n open?: boolean;\n title?: React.ReactNode;\n};\n\nconst SideBarHeader: FC<SideBarHeaderProps> = (props) => {\n const { title } = props;\n\n const titleElemet =\n typeof title === \"string\" ? (\n <Text intensity={54} size=\"xs\">\n {title}\n </Text>\n ) : (\n title\n );\n\n const iconProps = {\n className:\n \"oui-text-base-contrast-36 hover:oui-text-base-contrast-80 oui-cursor-pointer\",\n onClick: props.onToggle,\n };\n\n return (\n <Flex\n justify={props.open ? \"between\" : \"center\"}\n itemAlign=\"center\"\n className=\"oui-h-6\"\n >\n {props.open ? titleElemet : null}\n\n {props.open ? (\n <CollapseIcon {...iconProps} />\n ) : (\n <ExpandIcon {...iconProps} />\n )}\n </Flex>\n );\n};\n\ntype SideBarProps = {\n title?: React.ReactNode;\n items?: SideMenuItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n onItemSelect?: (item: SideMenuItem) => void;\n current?: string;\n className?: string;\n maxWidth?: number;\n minWidth?: number;\n style?: React.CSSProperties;\n};\n\nconst SideBar = (props: SideBarProps) => {\n const { open = true, items, current, onItemSelect } = props;\n\n return (\n <Box\n data-state={open ? \"opened\" : \"closed\"}\n className={cn(\"oui-group/bar\", props.className)}\n style={props.style}\n >\n <SideBarHeader\n open={open}\n title={props.title}\n onToggle={() => {\n props.onOpenChange?.(!open);\n }}\n />\n <SideMenus\n menus={items}\n current={current}\n onItemSelect={onItemSelect}\n open={open}\n />\n </Box>\n );\n};\n\nSideBar.displayName = \"SideBar\";\n\nconst ExpandIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.326 8.826a.84.84 0 0 0-.6.234L2.16 12.627v-2.135H.492v4.167c0 .46.373.833.834.833h4.166v-1.667H3.357l3.567-3.567a.857.857 0 0 0 0-1.198.84.84 0 0 0-.598-.234M10.502.492V2.16h2.135L9.07 5.726a.857.857 0 0 0 0 1.199.86.86 0 0 0 1.197 0l3.568-3.568v2.135h1.667V1.326a.834.834 0 0 0-.834-.834z\" />\n </svg>\n);\n\nconst CollapseIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M14.668.492a.85.85 0 0 0-.599.234l-3.567 3.568V2.159H8.835v4.167c0 .46.373.833.833.833h4.167V5.492H11.7l3.569-3.567a.86.86 0 0 0 0-1.199.85.85 0 0 0-.6-.234m-12.5 8.334v1.666h2.135L.736 14.06a.86.86 0 0 0 0 1.198.86.86 0 0 0 1.198 0l3.568-3.567v2.134h1.666V9.66a.834.834 0 0 0-.833-.833z\" />\n </svg>\n);\n\nexport { SideBar };\n\nexport type { SideBarProps, SideMenuItem };\n","import React, { useEffect } from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { SideBarProps } from \"./sidebar.ui\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\n\nexport const useSideNavBuilder = (\n props?: Partial<SideBarProps>\n): SideBarProps => {\n const [current, setCurrent] = useState(props?.items?.[0].href || \"/\");\n const { expanded, setExpand } = useScaffoldContext();\n\n if (typeof setExpand === \"undefined\") {\n console.warn(\"SideBar component must be used within a Scaffold component\");\n }\n\n return {\n items: [],\n current,\n open: expanded,\n onOpenChange: (open) => {\n setExpand?.(open);\n },\n onItemSelect: (item) => {\n if (item.href) {\n setCurrent(item.href);\n }\n },\n ...props,\n };\n};\n","import { SideBar, SideBarProps } from \"./sidebar.ui\";\nimport { useSideNavBuilder } from \"./useSideNavBuilder.script\";\n\nexport const SideNavbarWidget = (props?: Partial<SideBarProps>) => {\n const state = useSideNavBuilder(props);\n\n return <SideBar {...state} />;\n};\n","import { FC, useMemo } from \"react\";\nimport { Divider, Flex, Text } from \"@orderly.network/ui\";\nimport {\n CommuntiyDiscordIcon,\n CommuntiyTelegramIcon,\n CommuntiyXIcon,\n OrderlyTextIcon,\n SignalIcon,\n} from \"../icons/index\";\nimport { FooterReturns } from \"./footer.script\";\nimport { WsNetworkStatus } from \"@orderly.network/hooks\";\nimport { FooterProps } from \"./footer.widget\";\n\nexport const Footer: FC<FooterReturns & FooterProps> = (props) => {\n const signalClsName = useMemo(() => {\n switch (props.wsStatus) {\n case WsNetworkStatus.Connected:\n return \"oui-fill-success-light oui-text-success-light\";\n case WsNetworkStatus.Disconnected:\n return \"oui-fill-danger-light oui-text-danger-light\";\n case WsNetworkStatus.Unstable:\n return \"oui-fill-warning-light oui-text-warning-light\";\n }\n }, [props.wsStatus]);\n\n const openUrl = (url?: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n height={28}\n px={3}\n width={\"100%\"}\n >\n <Flex>\n <Flex\n direction={\"row\"}\n itemAlign={\"center\"}\n gap={1}\n className={signalClsName}\n >\n <SignalIcon\n // className={cn(signalClsName, \"oui-fill-success-light\")}\n fillOpacity={1}\n fill=\"currentColor\"\n />\n <Text size=\"2xs\">Operational</Text>\n </Flex>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-px-1 oui-ml-2 oui-border-line-12\"\n />\n <Flex gap={2}>\n <Text intensity={54} size=\"2xs\">\n Join our community\n </Text>\n <Flex direction={\"row\"} gap={1}>\n {typeof props.telegramUrl !== \"undefined\" && (\n <CommuntiyTelegramIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.telegramUrl)}\n />\n )}\n {typeof props.discordUrl !== \"undefined\" && (\n <CommuntiyDiscordIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.discordUrl)}\n />\n )}\n {typeof props.twitterUrl !== \"undefined\" && (\n <CommuntiyXIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.twitterUrl)}\n />\n )}\n </Flex>\n {typeof props?.trailing !== \"undefined\" && (\n <>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-border-line-12\"\n />\n {props?.trailing}\n </>\n )}\n </Flex>\n </Flex>\n <Flex direction={\"row\"} gap={1}>\n <Text intensity={54} size=\"2xs\">\n Powered by\n </Text>\n <OrderlyTextIcon />\n </Flex>\n </Flex>\n );\n};\n","import { useWsStatus, WsNetworkStatus } from \"@orderly.network/hooks\";\n\nexport type FooterReturns = {\n wsStatus: WsNetworkStatus;\n};\n\nexport const useFooterScript = (): FooterReturns => {\n const wsStatus = useWsStatus();\n\n return {\n wsStatus,\n };\n};\n","import { useFooterScript } from \"./footer.script\";\nimport { Footer } from \"./footer.ui\";\n\nexport type FooterProps = {\n telegramUrl?: string;\n twitterUrl?: string;\n discordUrl?: string;\n trailing?: React.ReactNode;\n};\n\nexport const FooterWidget = (props: FooterProps) => {\n const state = useFooterScript();\n return <Footer {...state} {...props} />;\n};\n","import {\n Box,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n Divider,\n Flex,\n} from \"@orderly.network/ui\";\nimport { CloseIcon, InfoIcon } from \"../icons\";\nimport { MaintenanceTipInterface } from \"./script\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { MEDIA_TABLET } from \"@orderly.network/types\";\n\nexport const MaintenanceTipsUI = (props: MaintenanceTipInterface) => {\n const { showTips, showDialog, tipsContent, closeTips, dialogContent } = props;\n if (showDialog) {\n return (\n <Dialog open={true}>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] md:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>System upgrade in progress</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className='oui-text-2xs md:oui-text-xs'>{dialogContent}</DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n if (!showTips) {\n return <></>;\n }\n return (\n <Flex\n className={cn(\n \"oui-bg-warning-darken/10 oui-text-warning-darken oui-text-2xs md:oui-text-sm oui-relative oui-gap-1\",\n \"oui-mx-1 md:oui-mx-0 md:oui-w-full oui-pl-2 md:oui-pl-4 oui-pr-9 md:oui-pr-[60px] oui-py-2 md:oui-py-3\",\n \"oui-leading-4\",\n \"oui-rounded-xl md:oui-rounded-none\",\n \"oui-min-h-[48px]\",\n \"oui-justify-start oui-items-start\",\n \"xl:oui-justify-center xl:oui-items-center xl:oui-px-4\"\n )}\n >\n <div className='oui-flex oui-items-start oui-justify-start oui-gap-1 '>\n <InfoIcon size={20} className=\"oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 \" />\n <Box className=\"oui-font-semibold oui-leading-4\">{tipsContent}</Box>\n </div>\n <CloseIcon\n size={16}\n className=\"oui-absolute oui-right-2 md:oui-right-4 oui-text-secondary/[0.36] hover:oui-text-secondary/80 oui-cursor-pointer -oui-translate-y-2/4 oui-top-2/4\"\n onClick={closeTips}\n />\n </Flex>\n );\n};\n","import { useMaintenanceStatus } from \"@orderly.network/hooks\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport { format } from \"date-fns\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { getTimestamp } from \"@orderly.network/utils\";\nfunction getTimeString(timestamp: number) {\n const date = format(new UTCDateMini(timestamp), \"MMM dd\");\n const time = format(new UTCDateMini(timestamp), \"h:mm aa\");\n return `${time} (UTC) on ${date}`;\n}\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nexport interface MaintenanceTipInterface {\n tipsContent: string;\n showTips: boolean;\n closeTips: () => void;\n showDialog: boolean;\n dialogContent?: string;\n}\n\nexport const useMaintenanceScript = (): MaintenanceTipInterface => {\n const [showTips, setShowTips] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\n\n const startDate = useMemo(() => {\n if (!startTime) {\n return \"-\";\n }\n return getTimeString(startTime);\n }, [startTime]);\n\n const endDate = useMemo(() => {\n if (!endTime) {\n return \"-\";\n }\n return getTimeString(endTime);\n }, [endTime]);\n\n const closeTips = () => {\n window.localStorage.setItem(`Maintenance_${startTime}`, \"1\");\n setShowTips(false);\n };\n\n useEffect(() => {\n console.log('-- start time', {\n startTime,\n status,\n });\n if (status === 2) {\n setShowTips(false);\n setShowDialog(true);\n return;\n }\n setShowDialog(false);\n if (startTime) {\n if (startTime < getTimestamp() + oneDay) {\n // check localstorage\n if (!window.localStorage.getItem(`Maintenance_${startTime}`)) {\n setShowTips(true);\n }\n }\n }\n }, [startTime, status]);\n const tipsContent = `${brokerName} will be temporarily unavailable for a scheduled upgrade from ${startDate} to ${endDate}.`;\n const dialogContent = `Sorry, ${brokerName} is temporarily unavailable due to a scheduled upgrade. The service is expected to be back by ${endDate}.`;\n return {\n tipsContent,\n showTips,\n closeTips,\n showDialog,\n dialogContent,\n };\n};\n","import { MaintenanceTipsUI } from \"./ui\";\nimport { useMaintenanceScript } from \"./script\";\n\nexport const MaintenanceTipsWidget = () => {\n const props = useMaintenanceScript();\n return <MaintenanceTipsUI {...props} />;\n};\n","import { FC } from \"react\";\nimport { RestrictedInfo } from \"./restrictedAreas.script\";\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n Divider,\n} from \"@orderly.network/ui\";\n\nexport const RestrictedAreas: FC<RestrictedInfo> = (props: RestrictedInfo) => {\n const modalTitle = \"We're sorry...\";\n return (\n <>\n <Dialog open={props.restrictedAreasOpen}>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[480px] md:oui-w-[480px] sm:oui-w-[320px]\"\n >\n <DialogHeader>\n <DialogTitle>{modalTitle}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-xs md:oui-text-xs sm:oui-text-2xs\">\n <div>\n It seems you are accessing {props.brokerName} from an IP address (\n {props?.ip}) belonging to one of the following countries/regions:\n </div>\n <div>\n {props.invalidRegions?.join(\", \")} , or a restricted IP address\n </div>\n <br />\n {props?.contact?.url && props?.contact?.text && (\n <div>\n Please noted that accessing Orderly Network is not available\n from the countries listed above. If you are not in one of those\n regions and belive this message was received in error, please\n contact{\" \"}\n <a\n className=\"oui-text-link\"\n href={`${props?.contact?.url}`}\n target=\"_blank\"\n >\n {props?.contact?.text}\n </a>\n .\n </div>\n )}\n </DialogBody>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n","import { useAppContext } from \"@orderly.network/react-app\";\nimport { useConfig } from \"@orderly.network/hooks\";\ntype AppContextReturnType = ReturnType<typeof useAppContext>;\n\nexport type RestrictedInfo = AppContextReturnType[\"restrictedInfo\"] & {\n brokerName?: string;\n};\n\nexport const useRestrictedAreasScript = (): RestrictedInfo => {\n const {\n restrictedInfo = {\n ip: \"\",\n invalidRegions: [],\n restrictedAreasOpen: false,\n contact: {\n url: \"\",\n text: \"\",\n },\n },\n } = useAppContext();\n const config = useConfig();\n const brokerName = config.get(\"brokerName\");\n return {\n ...restrictedInfo,\n brokerName,\n };\n};\n","import { useRestrictedAreasScript } from \"./restrictedAreas.script\";\nimport { RestrictedAreas } from \"./restrictedAreas.ui\";\n\nexport const RestrictedAreasWidget = () => {\n const state = useRestrictedAreasScript();\n return <RestrictedAreas {...state} />;\n};\n","import { Box, cn, Grid, useScreen } from \"@orderly.network/ui\";\nimport { MainNavWidget, MainNavWidgetProps } from \"./main/mainNav.widget\";\nimport React, {\n PropsWithChildren,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { SideNavbarWidget } from \"./sidebar\";\nimport { SideBarProps } from \"./sidebar\";\nimport {\n OrderlyContext,\n useChains,\n useLocalStorage,\n} from \"@orderly.network/hooks\";\nimport { isValidElement } from \"react\";\nimport { ExpandableContext, RouterAdapter } from \"./scaffoldContext\";\nimport { checkChainSupport } from \"../utils/chain\";\nimport { FooterProps, FooterWidget } from \"./footer\";\nimport { MaintenanceTipsWidget } from \"./maintenanceTips\";\nimport { RestrictedAreasWidget } from \"./restrictedAreas\";\n\nexport type LayoutProps = {\n /**\n * Custom left sidebar component,\n * if provided, the layout will use this component over the default sidebar component\n */\n gap?: number;\n leftSidebar?: React.ReactNode;\n leftSideProps?: SideBarProps;\n // rightSidebar?: React.ReactNode;\n topBar?: React.ReactNode;\n // topBarProps?:\n mainNavProps?: MainNavWidgetProps;\n footer?: React.ReactNode;\n footerProps?: FooterProps;\n routerAdapter?: RouterAdapter;\n classNames?: {\n root?: string;\n content?: string;\n body?: string;\n leftSidebar?: string;\n topNavbar?: string;\n footer?: string;\n };\n};\n\nexport const Scaffold = (props: PropsWithChildren<LayoutProps>) => {\n const { classNames, footerProps, routerAdapter } = props;\n const [footerHeight, setFooterHeight] = useState(29);\n const footerRef = useRef<HTMLDivElement>(null);\n const [expand, setExpand] = useLocalStorage(\n \"orderly_scaffold_expanded\",\n true\n );\n const [chains] = useChains();\n\n const { networkId } = useContext<any>(OrderlyContext);\n\n const checkChainSupportHandle = (chainId: number | string) => {\n return checkChainSupport(\n chainId,\n networkId === \"testnet\" ? chains.testnet : chains.mainnet\n );\n };\n\n const onExpandChange = (expand: boolean) => {\n setExpand(expand);\n };\n\n useEffect(() => {\n if (!footerRef) {\n return;\n }\n\n const height = footerRef.current?.getBoundingClientRect().height;\n setFooterHeight(height!);\n }, [footerRef]);\n\n const sideBarExpandWidth = props.leftSideProps?.maxWidth || 185;\n const sideBarCollaspedWidth = props.leftSideProps?.minWidth || 98;\n\n const hasLeftSidebar = !!props.leftSidebar;\n const { isMobile } = useScreen();\n\n return (\n <div\n className={cn(\n \"oui-scaffold-root oui-font-semibold\",\n // default text and background color\n \"oui-text-base-contrast oui-bg-base-10\",\n \"oui-flex oui-flex-col\",\n \"oui-overflow-auto oui-custom-scrollbar\",\n classNames?.root\n )}\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n >\n <ExpandableContext.Provider\n value={{\n routerAdapter,\n expanded: expand,\n setExpand: onExpandChange,\n checkChainSupport: checkChainSupportHandle,\n }}\n >\n {/* Top main nav */}\n <Box\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n \"oui-hidden xl:oui-block oui-min-w-[1018px]\",\n // \"oui-border-b oui-border-line-12\",\n classNames?.topNavbar\n )}\n >\n {props.topBar ?? <MainNavWidget {...props.mainNavProps} />}\n </Box>\n <div className=\"oui-scaffold-maintenance-tips oui-hidden xl:oui-block oui-min-w-[1018px]\">\n {!isMobile && <MaintenanceTipsWidget />}\n </div>\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box height=\"100%\" className={classNames?.content}>\n {props.children}\n </Box>\n ) : (\n // ----------No leftSidebar layout end ---------\n // ---------- left & body layout start ---------\n <Grid\n className={cn(\n \"oui-box-content oui-transition-all oui-flex xl:oui-grid\",\n \"oui-flex-1\",\n classNames?.body\n )}\n style={{\n gridTemplateColumns: `${\n expand\n ? `${sideBarExpandWidth}px`\n : `${sideBarCollaspedWidth}px`\n } 1fr`,\n // gridTemplateRows: \"auto 1fr\",\n // gridTemplateAreas: `\"left main\" \"left main\"`,\n }}\n >\n <div className={cn(classNames?.leftSidebar)}>\n {/* {typeof props.leftSidebar !== \"undefined\" ? ( */}\n {isValidElement(props.leftSidebar) ? (\n props.leftSidebar\n ) : (\n <SideNavbarWidget {...props.leftSideProps} />\n )}\n </div>\n <Box\n width={\"100%\"}\n className={cn(\"oui-overflow-hidden\", classNames?.content)}\n >\n {props.children}\n </Box>\n </Grid>\n // ---------- left & body layout end ---------\n )}\n <Box\n ref={footerRef}\n className={cn(\n \"oui-scaffold-footer oui-w-full oui-bg-base-10\",\n \"oui-fixed oui-bottom-0 oui-z-50\",\n \"oui-hidden lg:oui-flex\",\n \"oui-border-t-[1px] oui-border-line-12\",\n classNames?.footer\n )}\n >\n {props.footer || <FooterWidget {...footerProps} />}\n </Box>\n <RestrictedAreasWidget />\n </ExpandableContext.Provider>\n </div>\n );\n};\n","import { API } from \"@orderly.network/types\";\n\nexport function checkChainSupport(\n chainId: number | string,\n chains: API.Chain[]\n) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\n });\n}\n"]}
1
+ {"version":3,"sources":["../src/components/accountMenu/menu.widget.tsx","../src/components/accountMenu/menu.ui.tsx","../src/components/accountMenu/useWidgetBuilder.script.ts","../src/components/main/mainNav.ui.tsx","../src/components/main/products.tsx","../src/components/main/productItem.tsx","../src/components/accountSummary/accountSummary.ui.tsx","../src/components/accountSummary/useWidgetBuilder.script.ts","../src/components/accountSummary/accountSummary.widget.tsx","../src/components/chainMenu/chainMenu.ui.tsx","../src/components/chainMenu/chainMenu.script.ts","../src/components/chainMenu/chainMenu.widget.tsx","../src/components/main/useWidgetBuilder.script.ts","../src/components/scaffoldContext.ts","../src/components/main/campaignButton.tsx","../src/components/main/mainMenus/navItem.tsx","../src/components/main/mainLogo.tsx","../src/components/icons/communtiyIcons.tsx","../src/components/icons/orderlyNetworkTextIcon.tsx","../src/components/icons/signal.tsx","../src/components/icons/infoIcon.tsx","../src/components/icons/closeIcon.tsx","../src/components/icons/orderlyLogo.tsx","../src/components/main/mainMenus/mainNavMenus.ui.tsx","../src/components/main/mainMenus/mainNavMenus.widget.tsx","../src/components/main/linkDevice/linkDevice.script.tsx","../src/components/main/linkDevice/linkDevice.ui.tsx","../src/components/main/linkDevice/widget.tsx","../src/components/main/mainNav.widget.tsx","../src/components/sidebar/sidebar.ui.tsx","../src/components/sidebar/useSideNavBuilder.script.tsx","../src/components/sidebar/sidebar.widget.tsx","../src/components/footer/footer.ui.tsx","../src/components/footer/footer.script.tsx","../src/components/footer/footer.widget.tsx","../src/components/maintenanceTips/ui.tsx","../src/components/maintenanceTips/script.tsx","../src/components/maintenanceTips/widget.tsx","../src/components/restrictedAreas/restrictedAreas.ui.tsx","../src/components/restrictedAreas/restrictedAreas.script.tsx","../src/components/restrictedAreas/restrictedAreas.widget.tsx","../src/components/scaffold.tsx","../src/utils/chain.ts"],"names":["ExtensionPositionEnum","ExtensionSlot","installExtension","AccountStatusEnum","Button","Divider","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","EVMAvatar","Flex","Text","jsx","jsxs","AccountMenu","props","state","onDisconnect","onOpenExplorer","WalletMenu","r","e","address","event","useAccount","useChains","useWalletConnector","WalletConnectorModalId","modal","toast","useCallback","useAppContext","ChainSelectorDialogId","useAccountMenu","disconnect","connectedChain","account","connectWallet","_","findByChainId","onCrateAccount","res","err","onCreateOrderlyKey","switchChain","status","statusChangeHandler","error","connect","nextState","chainInfo","explorer_base_url","AccountMenuWidget","WalletConnectButtonExtension","useMemo","cn","ProductItem","active","item","onClick","ProductsMenu","items","onItemClick","current","className","currentItem","product","index","React","useEffect","Box","EyeCloseIcon","EyeIcon","Popover","TotalValue","totalValue","visible","onToggleVisibility","visibleAvailable","FreeCollateral","freeCollateral","CurrentLeverage","currentLeverage","MaxLeverage","UnrealPnL","AccountInfoPopover","keys","elementKeys","onSetToTop","key","elements","DropdownMenu","IdentityButton","AccountSummary","rest","canToggleIndex","sizeRef","resizeObserver","entries","width","Items","Dot","Element","useLeverage","useLocalStorage","useMarginRatio","usePositionStream","useCollateral","useState","useTotalValueBuilderScript","setKeys","setElementKeys","setVisible","aggregated","totalUnrealizedROI","wrongNetwork","maxLeverage","onToggleItemByKey","k","onKeyToTop","unavailable","AccountSummaryWidget","ChainIcon","Tooltip","Spinner","ChainSelectorWidget","ChainMenu","renderIcon","trigger","useConfig","useChainMenuScript","open","setOpen","loading","setLoading","currentChainId","networkId","hide","onChainChangeBefore","onChainChangeAfter","ChainMenuWidget","createContext","useContext","ExpandableContext","useScaffoldContext","CampaignPositionEnum","useMainNavBuilder","campaignPosition","routerAdapter","setCurrent","currentProduct","setCurrentProduct","onItemClickHandler","scope","lastItem","args","mainNavConfig","config","converted","ChevronDownIcon","PopoverContent","PopoverAnchor","PopoverRoot","cloneElement","useRef","Fragment","NavItem","classNames","currentPath","buttonProps","isActive","onClickHandler","button","ItemIcon","SubMenus","subItem","timer","onMouseEnter","SubMenu","SubMenuTitle","name","Tag","OutlinkIcon","ICON_CLASSNAME","CampaignButton","useAppConfig","CommuntiyTelegramIcon","ref","size","CommuntiyDiscordIcon","CommuntiyXIcon","OrderlyTextIcon","opacity","SignalIcon","InfoIcon","viewBox","CloseIcon","OrderlyLogo","Logo","MainLogo","appIcons","main","MainNavMenusUI","MainNavMenusExtension","useEventEmitter","EnumTrackerKeys","ExpireSeconds","useLinkDeviceScript","confirm","setConfirm","seconds","setSeconds","secretKey","setSecretKey","url","setUrl","ee","chain","createTrackParams","getOrderlyKey","hideDialog","showDialog","onConfirm","copyUrl","timestamp","params","createUrl","str","base64","CopyIcon","SimpleDialog","SimpleDialogFooter","qr","LinkDevice","LinkDeviceIcon","LinkDeviceContent","Loading","QRCode","LinkDeviceConfirm","actions","QRCodeCanvas","canvasRef","qrcode","height","ctx","cells","tileW","tileH","row","c","w","h","LinkDeviceWidget","MainNav","logo","products","campaigns","children","MainNavWidget","memo","tv","menuItemVariants","MenuItem","mode","SideMenus","SideBarHeader","title","titleElemet","iconProps","CollapseIcon","ExpandIcon","SideBar","onItemSelect","useSideNavBuilder","expanded","setExpand","SideNavbarWidget","WsNetworkStatus","Footer","signalClsName","openUrl","useWsStatus","useFooterScript","FooterWidget","Dialog","DialogBody","DialogContent","DialogHeader","DialogTitle","MaintenanceTipsUI","showTips","tipsContent","closeTips","dialogContent","useMaintenanceStatus","format","UTCDateMini","getTimestamp","getTimeString","date","oneDay","useMaintenanceScript","setShowTips","setShowDialog","startTime","endTime","brokerName","startDate","endDate","MaintenanceTipsWidget","RestrictedAreas","useRestrictedAreasScript","restrictedInfo","RestrictedAreasWidget","Grid","useScreen","OrderlyContext","isValidElement","checkChainSupport","chainId","chains","Scaffold","footerProps","footerHeight","setFooterHeight","footerRef","expand","checkChainSupportHandle","onExpandChange","sideBarExpandWidth","sideBarCollaspedWidth","hasLeftSidebar","isMobile"],"mappings":"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","sourcesContent":["import {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@orderly.network/ui\";\nimport { AccountMenu, AccountMenuProps } from \"./menu.ui\";\nimport { useAccountMenu } from \"./useWidgetBuilder.script\";\nimport { FC } from \"react\";\n\nexport const AccountMenuWidget = () => {\n const state = useAccountMenu();\n return <AccountMenu {...state} />;\n};\n\ninstallExtension<AccountMenuProps>({\n name: \"account-menu\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.AccountMenu],\n builder: useAccountMenu,\n __isInternal: true,\n})((props: AccountMenuProps) => {\n return <AccountMenu {...props} />;\n});\n\nexport const WalletConnectButtonExtension = () => {\n return <ExtensionSlot position={ExtensionPositionEnum.AccountMenu} />;\n};\n","import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n Divider,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n EVMAvatar,\n Flex,\n Match,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { accountState: state, onDisconnect, onOpenExplorer } = props;\n\n if (\n state.status === AccountStatusEnum.EnableTrading ||\n state.status === AccountStatusEnum.EnableTradingWithoutConnected\n ) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n\n if (state.status <= AccountStatusEnum.NotConnected || state.validating) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={state.validating}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n Connect wallet\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please connect wallet before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return (\n <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n Sign in\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please sign in before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\n return (\n <Button\n size=\"md\"\n onClick={() => {\n props\n .onCreateOrderlyKey()\n .then((r) => console.log(r))\n .catch((e) => console.error(e));\n }}\n >\n Enable trading\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // content={\"Please enable trading before starting to trade\"}\n // align={\"end\"}\n // >\n\n // </Tooltip>\n // );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\n chainNamespace?: string;\n\n accountId?: string;\n userId?: string;\n address?: string;\n isNew?: boolean;\n\n connectWallet?: {\n name: string;\n chainId: number;\n };\n};\n\nconst WalletMenu = (props: {\n address: string;\n onDisconnect: () => void;\n onOpenExplorer: () => void;\n}) => {\n const { address, onDisconnect } = props;\n\n return (\n <DropdownMenuRoot>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n data-testid=\"oui-testid-nav-bar-address-btn\"\n >\n <Text.formatted rule=\"address\" className=\"oui-text-[rgba(0,0,0,.88)]\">\n {address}\n </Text.formatted>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n size={\"xl\"}\n align={\"end\"}\n onCloseAutoFocus={(e) => e.preventDefault()}\n style={{ width: \"280px\" }}\n className={\"oui-py-5 oui-font-semibold\"}\n sideOffset={12}\n >\n <DropdownMenuGroup>\n <Flex px={4}>\n <Flex gap={2} className={\"oui-flex-1\"}>\n <EVMAvatar address={address} size={\"md\"} />\n <Text.formatted rule={\"address\"} size={\"base\"}>\n {address}\n </Text.formatted>\n </Flex>\n <Flex gap={2}>\n <button\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-copyAddress\"\n onClick={async () => {\n // copy\n await navigator.clipboard.writeText(address);\n }}\n >\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 className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path\n d=\"M5.249 2.243a3 3 0 0 0-3 3v4.5a3 3 0 0 0 3 3 3 3 0 0 0 3 3h4.5a3 3 0 0 0 3-3v-4.5a3 3 0 0 0-3-3 3 3 0 0 0-3-3zm7.5 4.5a1.5 1.5 0 0 1 1.5 1.5v4.5a1.5 1.5 0 0 1-1.5 1.5h-4.5a1.5 1.5 0 0 1-1.5-1.5h3a3 3 0 0 0 3-3z\"\n // fill=\"currentcolor\"\n // fillOpacity=\".36\"\n\n // className={''}\n />\n </svg>\n </button>\n <button onClick={() => props.onOpenExplorer()}>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n className=\"oui-fill-[rgba(255,255,255,0.36)] hover:oui-fill-primary-darken\"\n >\n <path d=\"M12.7432 15.7432C14.3999 15.7432 15.7432 14.3999 15.7432 12.7432V5.24316C15.7432 3.58641 14.3999 2.24316 12.7432 2.24316H5.24316C3.58641 2.24316 2.24316 3.58641 2.24316 5.24316V12.7432C2.24316 14.3999 3.58641 15.7432 5.24316 15.7432H12.7432ZM6.74316 11.9932C6.55116 11.9932 6.35092 11.9287 6.20392 11.7824C5.91142 11.4892 5.91142 10.9972 6.20392 10.7039L9.20392 7.70392L7.49316 5.99316H11.9932V10.4932L10.2824 8.78241L7.28241 11.7824C7.13616 11.9287 6.93516 11.9932 6.74316 11.9932Z\" />\n </svg>\n </button>\n </Flex>\n </Flex>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} />\n {/* <DropdownMenuGroup>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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 opacity=\".998\"\n d=\"M5.243 2.197a3 3 0 0 0-3 3v7.5a3 3 0 0 0 3 3h7.5a3 3 0 0 0 3-3v-7.5a3 3 0 0 0-3-3zm0 1.5h7.5a1.5 1.5 0 0 1 1.5 1.5v7.5a1.52 1.52 0 0 1-.754 1.298c-.144-1.771-2.046-2.798-4.496-2.798S4.603 12.251 4.486 14a1.52 1.52 0 0 1-.743-1.303v-7.5a1.5 1.5 0 0 1 1.5-1.5m3.75 1.5a2.625 2.625 0 1 0 0 5.25 2.625 2.625 0 0 0 0-5.25\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Overview</span>\n </Flex>\n </DropdownMenuItem>\n <DropdownMenuItem size={\"xl\"}>\n <Flex gap={2}>\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=\"M5.693 1.499c-1.463 0-2.672 1.11-2.672 2.508v9.984c0 1.398 1.209 2.508 2.672 2.508h6.657c1.463 0 2.672-1.11 2.672-2.508V6.726c0-2.672-2.58-5.227-5.25-5.227zm4.829 1.594c1.329.352 2.562 1.58 2.906 2.906h-1.735c-.667 0-1.171-.472-1.171-1.008zm-3.75 2.906h.75a.75.75 0 0 1 0 1.5h-.75a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5m0 3h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5\"\n fill=\"#fff\"\n fillOpacity=\".8\"\n />\n </svg>\n <span>Orders</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n <Divider className={\"oui-mx-4 oui-my-3\"} intensity={8} /> */}\n <DropdownMenuGroup>\n <DropdownMenuItem\n size={\"xl\"}\n onSelect={(event) => {\n event.preventDefault();\n onDisconnect();\n }}\n data-testid=\"oui-testid-nav-bar-dropDownMenuItem-disconnect\"\n >\n <Flex gap={2} className={\"oui-text-danger-light\"}>\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 fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.97 14.03a.75.75 0 0 1 0-1.06l.262-.263C2.594 12.354 1.5 11.108 1.5 9.06c0-2.447 1.563-3.75 3.75-3.75H6a.75.75 0 0 1 0 1.5h-.75C3.837 6.81 3 7.508 3 9.06s.837 2.25 2.25 2.25h.38l1.188-1.188a.75.75 0 0 1-.068-.312v-.75c0-1.162.381-2.19 1.172-2.883.645-.565 1.512-.867 2.578-.867h1.13l1.34-1.34a.75.75 0 0 1 1.061 1.06l-9 9a.75.75 0 0 1-1.06 0m6.14-7.2L8.27 8.668c.065-.583.281-1.056.635-1.367.289-.253.684-.419 1.205-.473M7.825 12.8l3.414-3.415c-.126 2.12-1.496 3.297-3.414 3.415m7.705-6.58a.75.75 0 0 0-1.06 1.06c.508.509.53 1.202.53 1.72 0 .739-.014 1.203-.53 1.72-.165.164-.455.307-.825.405a3.8 3.8 0 0 1-.895.125H12a.75.75 0 0 0 0 1.5h.75c.31 0 .787-.045 1.28-.175.48-.127 1.065-.36 1.5-.795.97-.97.97-1.991.97-2.75v-.06c0-.51.002-1.778-.97-2.75\"\n fill=\"currentcolor\"\n />\n </svg>\n <span>Disconnect</span>\n </Flex>\n </DropdownMenuItem>\n </DropdownMenuGroup>\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import {\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { WalletConnectorModalId } from \"@orderly.network/ui-connector\";\nimport { modal, toast } from \"@orderly.network/ui\";\nimport { useCallback } from \"react\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { ChainSelectorDialogId } from \"@orderly.network/ui-chain-selector\";\n\nexport const useAccountMenu = (): any => {\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { connectWallet } = useAppContext();\n\n const [_, { findByChainId }] = useChains();\n\n const onCrateAccount = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const onCreateOrderlyKey = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({\n status,\n });\n } else {\n toast.success(\"Wallet connected\");\n }\n });\n\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorDialogId)\n .then(\n (r) => {\n if (!r.wrongNetwork) {\n if (state.status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler(state);\n } else {\n toast.success(\"Wallet connected\");\n }\n }\n },\n (error) => console.log(\"[switchChain error]\", error)\n );\n };\n\n const connect = async () => {\n const res = await connectWallet();\n\n if (!res) return;\n\n if (res.wrongNetwork) {\n switchChain();\n } else {\n statusChangeHandler(res);\n }\n };\n\n const statusChangeHandler = (nextState: any) => {\n if (nextState.validating || nextState.status <= AccountStatusEnum.Connected)\n return;\n\n if (nextState.status < AccountStatusEnum.SignedIn) {\n onCrateAccount();\n }\n if (nextState.status < AccountStatusEnum.EnableTrading) {\n onCreateOrderlyKey();\n }\n };\n\n const onOpenExplorer = useCallback(() => {\n if (!connectedChain) return;\n const chainInfo = findByChainId(\n connectedChain!.id as number,\n \"network_infos\"\n );\n\n if (chainInfo) {\n // @ts-ignore\n const { explorer_base_url } = chainInfo;\n if (explorer_base_url) {\n if (explorer_base_url.endsWith(\"/\")) {\n window.open(`${explorer_base_url}address/${account.address}`);\n } else {\n window.open(`${explorer_base_url}/address/${account.address}`);\n }\n }\n }\n }, [state, connectedChain]);\n\n const onDisconnect = async () => {\n localStorage.removeItem(\"orderly_link_device\");\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n };\n\n return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect,\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport { MainNavClassNames, MainNavItemsProps } from \"./mainNavItems\";\nimport { ProductsMenu, ProductsProps } from \"./products\";\nimport { cn, Divider, Flex } from \"@orderly.network/ui\";\nimport type { LogoProps } from \"@orderly.network/ui\";\nimport { AccountSummaryWidget } from \"../accountSummary\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport { CampaignPositionEnum } from \"./useWidgetBuilder.script\";\nimport { CampaignButton, CampaignProps } from \"./campaignButton\";\nimport { MainLogo } from \"./mainLogo\";\nimport { MainNavMenusExtension } from \"./mainMenus/mainNavMenus.widget\";\nimport { WalletConnectButtonExtension } from \"../accountMenu/menu.widget\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { LinkDeviceWidget } from \"./linkDevice\";\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\n\nexport type MainNavProps = {\n className?: string;\n logo: LogoProps;\n products: ProductsProps;\n mainMenus: MainNavItemsProps;\n wrongNetwork: boolean;\n isConnected: boolean;\n campaigns?: CampaignProps;\n campaignPosition?: CampaignPositionEnum;\n classNames?: {\n root?: string;\n mainNav?: MainNavClassNames;\n // subNav?: string;\n logo?: string;\n products?: string;\n account?: string;\n chains?: string;\n campaignButton?: string;\n };\n status?: AccountStatusEnum;\n};\n\nexport const MainNav: FC<PropsWithChildren<MainNavProps>> = (props) => {\n const { className, logo, products, classNames, campaigns, campaignPosition } =\n props;\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") return null;\n\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n return (\n <Flex\n width=\"100%\"\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n className={cn(\n \"oui-main-nav oui-font-semibold\",\n className,\n classNames?.root\n )}\n >\n <Flex itemAlign={\"center\"} className=\"oui-gap-3 2xl:oui-gap-4\">\n <MainLogo {...logo} />\n <ProductsMenu {...products} className={classNames?.products} />\n {/* <MainNavItems {...props.mainMenus} classNames={classNames?.mainNav} /> */}\n <MainNavMenusExtension\n {...props.mainMenus}\n classNames={classNames?.mainNav}\n />\n </Flex>\n {children}\n\n <Flex itemAlign={\"center\"} className=\"oui-gap-3 2xl:oui-gap-4\">\n {campaignPosition === CampaignPositionEnum.navTailing && campaigns ? (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n ) : null}\n <AccountSummaryWidget />\n {!props.wrongNetwork && props.status! >= AccountStatusEnum.SignedIn && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n <LinkDeviceWidget />\n </>\n )}\n <ChainMenuWidget />\n {props.wrongNetwork && props.isConnected ? null : (\n <WalletConnectButtonExtension />\n )}\n </Flex>\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\n","import { FC, useMemo } from \"react\";\n\nimport { ProductItem } from \"./productItem\";\nimport { cn, Flex } from \"@orderly.network/ui\";\n\nexport type ProductsProps = {\n items?: ProductItem[];\n current?: string;\n className?: string;\n onItemClick?: (product: ProductItem) => void;\n};\n\nexport const ProductsMenu: FC<ProductsProps> = (props) => {\n const { items, onItemClick, current, className } = props;\n const currentItem = useMemo(() => {\n if (typeof current !== \"undefined\") return current;\n\n return items?.[0]?.href;\n }, [current, items]);\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex\n gap={0}\n border\n r=\"md\"\n className={cn(\"oui-p-[1px]\", className)}\n borderColor={12}\n >\n {items?.map((product, index) => {\n return (\n <ProductItem\n key={index}\n item={product}\n onClick={onItemClick}\n active={currentItem == product.href}\n />\n );\n })}\n </Flex>\n );\n};\n","import { Button, cn } from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\nexport type ProductItem = {\n name: string;\n href: string;\n};\n\nexport const ProductItem: FC<{\n item: ProductItem;\n active?: boolean;\n onClick?: (product: ProductItem) => void;\n}> = (props) => {\n const { active, item, onClick } = props;\n return (\n <Button\n variant={active ? \"gradient\" : \"text\"}\n color=\"secondary\"\n size=\"sm\"\n angle={45}\n className={cn(\n active ? \"oui-text-[rgba(0_,_0_,_0_,_0.88)]\" : \"hover:oui-bg-base-7\"\n )}\n onClick={() => {\n onClick?.(item);\n }}\n >\n {item.name}\n </Button>\n );\n};\n","import React, { FC, PropsWithChildren, useEffect } from \"react\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@orderly.network/ui\";\n\ntype AccountSummaryUi = {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage: number | null;\n currentLeverage: number | null;\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n onKeyToTop: (key: string) => void;\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n totalValue = 0,\n visible = true,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Total value\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n\n <Text intensity={54}>≈</Text>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n as=\"div\"\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- FreeCollateral -----------------\nconst FreeCollateral: FC<{\n freeCollateral?: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const {\n freeCollateral,\n visible,\n onToggleVisibility,\n visibleAvailable = true,\n } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Free collateral\n </Text>\n </Box> */}\n <Text.numeral\n unit=\"USDC\"\n unitClassName=\"oui-text-base-contrast-20 oui-ml-1\"\n visible={visible}\n as=\"div\"\n >\n {freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- CurrentLeverage -----------------\nconst CurrentLeverage: FC<{\n currentLeverage: number | null;\n}> = (props) => {\n const { currentLeverage } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Current leverage\n </Text>\n </Box>\n <Text.numeral as={\"div\"} unit=\"x\">\n {currentLeverage ?? 0}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- MaxLeverage -----------------\nconst MaxLeverage: FC<{\n maxLeverage: number | null;\n}> = (props) => {\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Max leverage\n </Text>\n </Box>\n <Text color=\"primary\" as={\"div\"}>{`${props.maxLeverage ?? \"--\"}x`}</Text>\n </Flex>\n );\n};\n\n//----------------- UnrealPnL -----------------\nconst UnrealPnL: FC<{\n unrealized_pnl_ROI: number | null;\n unrealPnL: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n visibleAvailable?: boolean;\n}> = (props) => {\n const { visible, onToggleVisibility, visibleAvailable = true } = props;\n return (\n <Flex\n direction={\"column\"}\n gap={0}\n className=\"oui-text-2xs\"\n itemAlign={\"start\"}\n >\n <Flex gap={1} itemAlign={\"center\"}>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Unreal. PnL\n </Text>\n {visibleAvailable && (\n <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\n )}\n </Flex>\n {/* <Box>\n <Text intensity={54} className=\"oui-whitespace-nowrap\">\n Unreal. PnL\n </Text>\n </Box> */}\n <Text.numeral\n as={\"div\"}\n coloring\n showIdentifier\n weight={\"semibold\"}\n visible={visible}\n suffix={\n <Text.numeral coloring prefix={\"(\"} suffix={\")\"} rule={\"percentages\"}>\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </Flex>\n );\n};\n\n//----------------- AccountInfoPopover -----------------\nconst AccountInfoPopover = (props: {\n totalValue: number | null;\n freeCollateral: number | null;\n maxLeverage: number | null;\n currentLeverage: number | null;\n unrealPnL: number | null;\n unrealized_pnl_ROI: number | null;\n // type: AccountSummaryType;\n keys: AccountSummaryList;\n elementKeys: AccountSummaryList;\n onToggleItemByKey: (key: string) => void;\n visible?: boolean;\n onKeyToTop: (key: string) => void;\n}) => {\n const { totalValue, keys, elementKeys } = props;\n\n const onSetToTop = (key: SummaryKey) => (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n props.onKeyToTop(key);\n };\n\n const elements = elementKeys.map((key) => {\n switch (key) {\n case \"totalValue\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"totalValue\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"totalValue\")}\n onClick={() => props.onToggleItemByKey(\"totalValue\")}\n />\n <span>Total value</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"freeCollateral\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"freeCollateral\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"freeCollateral\")}\n onClick={() => props.onToggleItemByKey(\"freeCollateral\")}\n />\n <span>Free collateral</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"unrealPnL\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"unrealPnL\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"unrealPnL\")}\n onClick={() => props.onToggleItemByKey(\"unrealPnL\")}\n />\n <span>Unreal. PnL</span>\n </Flex>\n <Text.numeral\n coloring\n showIdentifier\n visible={props.visible}\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n suffix={\n <Text.numeral\n coloring\n prefix={\"(\"}\n visible={props.visible}\n suffix={\")\"}\n rule={\"percentages\"}\n >\n {props.unrealized_pnl_ROI ?? \"-\"}\n </Text.numeral>\n }\n >\n {props.unrealPnL ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"currentLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"currentLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"currentLeverage\")}\n onClick={() => props.onToggleItemByKey(\"currentLeverage\")}\n />\n <span>Current leverage</span>\n </Flex>\n <Text.numeral\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n unit=\"x\"\n >\n {props.currentLeverage ?? \"-\"}\n </Text.numeral>\n </DropdownMenu>\n );\n case \"maxLeverage\":\n return (\n <DropdownMenu onSetTop={onSetToTop(\"maxLeverage\")} key={key}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={keys.includes(\"maxLeverage\")}\n onClick={() => props.onToggleItemByKey(\"maxLeverage\")}\n />\n <span>Max leverage</span>\n </Flex>\n <Text\n className=\"group-hover:-oui-translate-x-5 oui-transition-transform\"\n color=\"primary\"\n >{`${props.maxLeverage ?? \"-\"}x`}</Text>\n </DropdownMenu>\n );\n default:\n return null;\n }\n });\n\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n {elements}\n </Flex>\n );\n};\n\nconst DropdownMenu: FC<\n PropsWithChildren<{\n onSetTop: (event: React.MouseEvent) => void;\n }>\n> = (props) => {\n return (\n <div className=\"oui-w-full oui-relative oui-group hover:oui-bg-base-6 oui-px-[6px] oui-py-1 oui-rounded\">\n <Flex justify={\"between\"} width={\"100%\"}>\n {props.children}\n </Flex>\n <button\n className=\"oui-absolute oui-right-1 oui-top-1\"\n onClick={props.onSetTop}\n >\n <svg\n className=\"group-hover:oui-opacity-100 group-hover:oui-translate-x-0 oui-opacity-0 oui-translate-x-3 oui-transition-all oui-cursor-pointer oui-fill-base-contrast-54 hover:oui-fill-base-contrast\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect\n width=\"16\"\n height=\"16\"\n rx=\"2\"\n fill=\"rgb(var(--oui-color-primary-darken))\"\n />\n <path d=\"M3.507 3.999a.5.5 0 1 0 0 1h9a.5.5 0 0 0 0-1zm4 8.006a.5.5 0 0 0 1 0V7.724l1.5 1.484.703-.703-2.343-2.36a.515.515 0 0 0-.72 0l-2.343 2.36.703.703 1.5-1.484z\" />\n </svg>\n </button>\n </div>\n );\n};\n\nconst IdentityButton = (props: {\n active: boolean;\n onClick: React.MouseEventHandler;\n}) => {\n return (\n <button onClick={props.onClick}>\n {props.active ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977\"\n fill=\"currentcolor\"\n className={\"oui-text-primary-light\"}\n />\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n >\n <path\n d=\"M7.506.977a.56.56 0 0 0-.365.16C6.367 1.88 6.13 2.5 6.413 3.348c-.661.506-1.078.63-1.903.63-1.127 0-1.863.137-2.364.637v.016a1.187 1.187 0 0 0 0 1.686l1.4 1.411-2.385 2.385a.513.513 0 0 0-.015.717.514.514 0 0 0 .719 0l2.394-2.395 1.403 1.396a1.19 1.19 0 0 0 1.687 0h.016c.501-.5.64-1.142.64-2.358 0-.773.16-1.319.64-1.893.924.271 1.462.012 2.22-.746a.5.5 0 0 0 .14-.36c0-.175-.044-.445-.156-.78a4 4 0 0 0-.984-1.577 4 4 0 0 0-1.578-.984C7.95 1.02 7.682.977 7.506.977m.193 1.027c.531.098 1.066.45 1.447.83.381.382.706.848.84 1.459-.477.458-.77.494-1.247.243a.5.5 0 0 0-.583.087c-.91.91-1.15 1.736-1.15 2.85 0 .97-.057 1.33-.36 1.655-.085.092-.203.078-.281 0L2.849 5.615a.18.18 0 0 1-.012-.255c.178-.217.576-.386 1.669-.386 1.306.001 2-.335 2.859-1.14a.5.5 0 0 0 .094-.578c-.257-.513-.217-.784.24-1.252\"\n fill=\"currentcolor\"\n />\n </svg>\n )}\n </button>\n );\n};\n\ntype SummaryKey =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport type AccountSummaryList = Array<SummaryKey>;\nconst AccountSummaryItems: Record<SummaryKey, JSX.ElementType> = {\n totalValue: TotalValue,\n freeCollateral: FreeCollateral,\n unrealPnL: UnrealPnL,\n currentLeverage: CurrentLeverage,\n maxLeverage: MaxLeverage,\n};\n\nexport const AccountSummary = (props: AccountSummaryUi) => {\n const { keys, ...rest } = props;\n let canToggleIndex = 0;\n const sizeRef = React.useRef(0);\n\n useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n if (Array.isArray(entries) && entries.length > 0) {\n const width = entries[0].contentRect.width;\n if (width > 1440) {\n sizeRef.current = 5;\n } else if (width > 1366) {\n sizeRef.current = 4;\n } else if (width > 1280) {\n sizeRef.current = 3;\n } else if (width > 1140) {\n sizeRef.current = 2;\n } else {\n sizeRef.current = 1;\n }\n }\n });\n\n resizeObserver.observe(document.body);\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n let elements = keys.slice(0, sizeRef.current).map((key, index) => {\n switch (key) {\n case \"freeCollateral\": {\n return (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n\n case \"unrealPnL\":\n return (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n visibleAvailable={index === canToggleIndex}\n />\n );\n case \"currentLeverage\": {\n canToggleIndex++;\n return <CurrentLeverage currentLeverage={props.currentLeverage} />;\n }\n case \"maxLeverage\": {\n canToggleIndex++;\n return <MaxLeverage maxLeverage={props.maxLeverage} />;\n }\n case \"totalValue\":\n default:\n return (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n visibleAvailable={index === canToggleIndex}\n />\n );\n }\n });\n\n return (\n <div className=\"oui-flex oui-items-center oui-gap-6\">\n <Items elements={elements} />\n <Popover\n content={\n <AccountInfoPopover\n totalValue={rest.totalValue}\n freeCollateral={props.freeCollateral}\n maxLeverage={props.maxLeverage}\n currentLeverage={props.currentLeverage}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n unrealPnL={props.unrealPnL}\n keys={keys}\n elementKeys={props.elementKeys}\n onToggleItemByKey={props.onToggleItemByKey}\n onKeyToTop={props.onKeyToTop}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n className: \"oui-p-1\",\n }}\n arrow\n >\n <div className=\"oui-cursor-pointer oui-group\">\n <Dot />\n </div>\n </Popover>\n </div>\n );\n};\n\nconst Items: FC<{\n elements: JSX.Element[];\n}> = (props) => {\n return (\n <div className=\"oui-flex oui-gap-6\">\n {props.elements.map((Element, index) => (\n <div key={index}>{Element}</div>\n ))}\n </div>\n );\n};\n\nconst Dot = () => {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-fill-base-contrast-36 hover:oui-fill-primary-light group-data-[state=open]:oui-fill-primary-light\"\n >\n <path d=\"M10.007 8.335a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m-5.84 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333m11.666 0a1.666 1.666 0 1 1 0 3.333 1.666 1.666 0 0 1 0-3.333\" />\n </svg>\n );\n};\n","import {\n useLeverage,\n useLocalStorage,\n useMarginRatio,\n usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { useCollateral, useAccount } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useState } from \"react\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [keys, setKeys] = useLocalStorage<string[]>(\"accountSummaryTypes\", [\n \"totalValue\",\n ]);\n\n const [elementKeys, setElementKeys] = useState<string[]>([\n \"totalValue\",\n \"freeCollateral\",\n \"unrealPnL\",\n \"currentLeverage\",\n \"maxLeverage\",\n ]);\n\n const { freeCollateral, totalValue } = useCollateral({\n dp: 2,\n });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const [maxLeverage] = useLeverage();\n\n const onToggleItemByKey = (key: string) => {\n if (keys.includes(key)) {\n setKeys(keys.filter((k: string) => k !== key));\n } else {\n setKeys([...keys, key]);\n }\n };\n\n const onKeyToTop = (key: string) => {\n if (!keys.includes(key)) {\n setKeys([key, ...keys]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n return;\n }\n\n setKeys([key, ...keys.filter((k: string) => k !== key)]);\n setElementKeys([key, ...elementKeys.filter((k: string) => k !== key)]);\n };\n\n const unavailable =\n wrongNetwork ||\n (state.status < AccountStatusEnum.EnableTrading &&\n state.status !== AccountStatusEnum.EnableTradingWithoutConnected);\n\n return {\n totalValue: unavailable ? null : totalValue,\n freeCollateral: unavailable ? null : freeCollateral,\n maxLeverage: unavailable ? null : maxLeverage,\n currentLeverage: unavailable ? null : currentLeverage,\n unrealPnL: unavailable ? null : aggregated?.total_unreal_pnl,\n unrealized_pnl_ROI: unavailable ? null : totalUnrealizedROI,\n // type,\n keys,\n elementKeys,\n // onTypeChange,\n visible,\n wrongNetwork,\n onToggleItemByKey,\n onKeyToTop,\n onToggleVisibility: () => setVisible(!visible),\n };\n};\n\nexport type UseTotalValueBuilderScript = ReturnType<\n typeof useTotalValueBuilderScript\n>;\n","import { AccountSummary } from \"./accountSummary.ui\";\nimport { useTotalValueBuilderScript } from \"./useWidgetBuilder.script\";\nimport type { AccountSummaryList } from \"./accountSummary.ui\";\n\nexport const AccountSummaryWidget = () => {\n const state = useTotalValueBuilderScript();\n return (\n <AccountSummary\n {...state}\n elementKeys={state.elementKeys as AccountSummaryList}\n />\n );\n};\n","import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n ChainIcon,\n cn,\n Flex,\n modal,\n Tooltip,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Spinner,\n} from \"@orderly.network/ui\";\nimport {\n ChainSelectorDialogId,\n ChainSelectorWidget,\n} from \"@orderly.network/ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@orderly.network/ui-connector\";\nimport { UseChainMenuScriptReturn } from \"./chainMenu.script\";\n\nexport const ChainMenu = (props: UseChainMenuScriptReturn) => {\n if (props.wrongNetwork && props.isConnected) {\n return (\n <Tooltip\n open\n hideWhenDetached\n content={\"Please switch to a supported network to continue.\"}\n className=\"oui-bg-base-5\"\n arrow={{ className: \"oui-fill-base-5\" }}\n >\n <Button\n color=\"warning\"\n size=\"md\"\n onClick={() => {\n modal\n .show<{ wrongNetwork: boolean }>(ChainSelectorDialogId, {\n networkId: props.networkId,\n })\n .then(\n (r) => {\n if (\n !r.wrongNetwork &&\n props.accountStatus < AccountStatusEnum.EnableTrading\n ) {\n modal.show(WalletConnectorModalId).then(\n (r) => console.log(r),\n (error) => console.log(error)\n );\n }\n },\n (error) => console.log(error)\n );\n }}\n >\n Wrong network\n </Button>\n </Tooltip>\n );\n }\n\n const renderIcon = () => {\n if (props.loading) {\n return <Spinner className=\"oui-w-[18px] oui-h-[18px]\" />;\n }\n\n if (props.currentChainId) {\n return <ChainIcon chainId={props.currentChainId} size=\"xs\" />;\n }\n };\n\n const trigger = (\n <Flex\n intensity={500}\n justify=\"center\"\n className={cn(\n \"oui-relative oui-cursor-pointer\",\n \"oui-w-11 oui-h-8\",\n \"oui-rounded-t-[6px] oui-rounded-bl-[6px] oui-rounded-br-[3px]\"\n )}\n >\n {renderIcon()}\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-bottom-0\"\n >\n <defs>\n <linearGradient\n id=\"paint0_linear_490_5080\"\n x1=\"10\"\n y1=\"5\"\n x2=\"-5.79673e-08\"\n y2=\"5\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n <path\n d=\"M10 7V0L0 10H7C8.65685 10 10 8.65685 10 7Z\"\n fill=\"url(#paint0_linear_490_5080)\"\n />\n </svg>\n </Flex>\n );\n\n return (\n <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n <DropdownMenuTrigger asChild>{trigger}</DropdownMenuTrigger>\n <DropdownMenuPortal>\n <DropdownMenuContent\n onCloseAutoFocus={(e) => e.preventDefault()}\n onClick={(e) => e.stopPropagation()}\n sideOffset={4}\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-bg-base-8 oui-w-[456px] oui-p-4 oui-rounded-xl\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\"\n )}\n >\n <ChainSelectorWidget\n close={props.hide}\n onChainChangeBefore={props.onChainChangeBefore}\n onChainChangeAfter={props.onChainChangeAfter}\n />\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport {\n useChains,\n useConfig,\n useAccount,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { API, Chain, NetworkId } from \"@orderly.network/types\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport type UseChainMenuScriptReturn = ReturnType<typeof useChainMenuScript>;\n\nexport const useChainMenuScript = () => {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const { state } = useAccount();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork, currentChainId } = useAppContext();\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n const hide = () => {\n setOpen(false);\n };\n\n const onChainChangeBefore = () => {\n setLoading(true);\n hide();\n };\n\n const onChainChangeAfter = () => {\n setLoading(false);\n };\n\n return {\n isConnected: !!connectedChain,\n currentChainId,\n wrongNetwork,\n accountStatus: state.status,\n networkId,\n open,\n onOpenChange: setOpen,\n hide,\n onChainChangeBefore,\n onChainChangeAfter,\n loading,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<typeof useChainMenuScript>;\n","import { ChainMenu } from \"./chainMenu.ui\";\nimport { useChainMenuScript } from \"./chainMenu.script\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuScript();\n return <ChainMenu {...state} />;\n};\n","import { useMemo, useState } from \"react\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\nimport {\n useAccount,\n useEventEmitter,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { ProductItem } from \"./productItem\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport type { MainNavItem } from \"./mainMenus/navItem\";\nimport { type MainNavWidgetProps } from \"./mainNav.widget\";\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\nexport enum CampaignPositionEnum {\n menuLeading = \"menuLeading\",\n menuTailing = \"menuTailing\",\n navTailing = \"navTailing\",\n}\n\ntype UseMainNavBuilderProps = Omit<\n MainNavWidgetProps,\n \"classNames\" | \"children\"\n>;\n\nexport const useMainNavBuilder = (props: UseMainNavBuilderProps) => {\n const { onItemClick, campaignPosition = CampaignPositionEnum.navTailing } =\n props;\n const { state } = useAccount();\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n const [currentProduct, setCurrentProduct] = useState(\n () => props?.initialProduct ?? props?.products?.[0].href ?? \"\"\n );\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n logo: {},\n mainMenus: [\n // { name: \"Trading\", href: \"/trading\" },\n // { name: \"Portfolio\", href: \"/portfolio\" },\n // { name: \"Markets\", href: \"/markets\" },\n // { name: \"Rewards\", href: \"/rewards\" },\n ],\n products: [\n // { name: \"Swap\", href: \"/swap\" },\n // { name: \"Perps\", href: \"/perps\" },\n ],\n ...props,\n campaignPosition,\n };\n\n if (props.campaigns) {\n if (campaignPosition === CampaignPositionEnum.menuTailing) {\n config.mainMenus = [...config.mainMenus, props.campaigns];\n } else if (campaignPosition === CampaignPositionEnum.menuLeading) {\n config.mainMenus = [props.campaigns, ...config.mainMenus];\n } else {\n config.campaigns = props.campaigns;\n }\n }\n\n return config;\n }, [props]);\n\n const converted: any = {};\n\n if (mainNavConfig.products && mainNavConfig.products.length) {\n converted.products = {\n items: mainNavConfig.products,\n current: currentProduct,\n onItemClick: (product: ProductItem) => {\n // No need to modify the intenal state\n const args = {\n href: product.href,\n name: product.name,\n scope: \"product\",\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n },\n };\n }\n\n if (mainNavConfig.mainMenus && mainNavConfig.mainMenus.length) {\n converted.mainMenus = {\n items: mainNavConfig.mainMenus,\n /**\n * @type string\n * The current item of the router\n */\n current,\n onItemClick: onItemClickHandler(\"mainMenu\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"mainMenu\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n if (mainNavConfig.campaigns && mainNavConfig.campaigns.children?.length) {\n converted.campaigns = {\n item: mainNavConfig.campaigns,\n current,\n onItemClick: onItemClickHandler(\"campaign\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"campaign\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n // return converted;\n\n return {\n // currentProduct,\n // logo: mainNavConfig.logo,\n ...mainNavConfig,\n\n isConnected: !!connectedChain,\n wrongNetwork,\n ...converted,\n status: state.status,\n };\n};\n\nexport type MainNavBuilder = ReturnType<typeof useMainNavBuilder>;\n","import { createContext, useContext } from \"react\";\n\nexport type RouteOption = {\n href: string;\n name: string;\n scope?: string;\n target?: string;\n};\n\nexport type RouterAdapter = {\n onRouteChange: (option: RouteOption) => void;\n currentPath?: string;\n};\n\nexport type ExpandableState = {\n routerAdapter?: RouterAdapter;\n expanded?: boolean;\n setExpand: (expand: boolean) => void;\n checkChainSupport: (chainId: number | string) => boolean;\n};\n\nexport const ExpandableContext = createContext<ExpandableState>(\n {} as ExpandableState\n);\n\nexport const useScaffoldContext = () => {\n return useContext(ExpandableContext);\n};\n","import { Divider } from \"@orderly.network/ui\";\nimport { MainNavItem, NavItem } from \"./mainMenus/navItem\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport type CampaignProps = {\n item: MainNavItem;\n className?: string;\n onItemClick?: (item: MainNavItem[]) => void;\n current?: string[];\n // classNames?: MainNavClassNames;\n};\n\nexport const CampaignButton = (props: CampaignProps) => {\n return (\n <>\n <NavItem\n item={props.item}\n onClick={props.onItemClick}\n classNames={{\n navItem: cn(\"oui-gradient-primary oui-text-white\", props.className),\n }}\n />\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n </>\n );\n};\n","import { ChevronDownIcon, PopoverContent } from \"@orderly.network/ui\";\nimport { Flex } from \"@orderly.network/ui\";\nimport { Box, cn, PopoverAnchor, PopoverRoot, Text } from \"@orderly.network/ui\";\nimport React, {\n cloneElement,\n FC,\n HTMLAttributeAnchorTarget,\n PropsWithChildren,\n ReactElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nexport type MainNavItem = {\n id?: string;\n testid?: string;\n name: string;\n href: string;\n target?: HTMLAttributeAnchorTarget;\n icon?: string | React.ReactElement;\n activeIcon?: string | React.ReactElement;\n tag?: string;\n description?: string;\n disabled?: boolean;\n children?: MainNavItem[];\n className?: string;\n asChild?: boolean;\n};\n\nexport const NavItem: FC<\n Omit<React.HTMLAttributes<HTMLButtonElement>, \"onClick\"> & {\n item: MainNavItem;\n onClick?: (item: MainNavItem[]) => void;\n // active?: boolean;\n currentPath?: string[];\n classNames?: {\n navItem?: string;\n subMenu?: string;\n };\n }\n> = (props) => {\n const { classNames, currentPath, item, onClick, ...buttonProps } = props;\n\n const isActive = useMemo(\n () => props.currentPath?.[0] === props.item.href,\n [currentPath]\n );\n\n const onClickHandler = useCallback(() => {\n if (Array.isArray(props.item.children)) return;\n props.onClick?.([props.item]);\n }, [props.item]);\n\n const button = (\n <button\n id={item.id}\n data-testid={item.testid}\n {...buttonProps}\n disabled={props.item.disabled}\n data-actived={isActive}\n className={cn(\n \"oui-text-base-contrast-36 oui-text-sm oui-relative oui-group oui-rounded oui-px-3 oui-py-1 oui-h-[32px] hover:oui-bg-base-7\",\n classNames?.navItem\n )}\n onClick={onClickHandler}\n >\n <span className={\"oui-flex oui-items-center\"}>\n <ItemIcon isActive={isActive} item={props.item} />\n <Text.gradient color={isActive ? \"brand\" : \"inherit\"} angle={45}>\n {props.item.name}\n </Text.gradient>\n {Array.isArray(props.item.children) && (\n <span className={\"oui-ml-1 group-data-[open=true]:oui-rotate-180\"}>\n {isActive ? (\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.913 4.515a.5.5 0 0 0-.328.202.51.51 0 0 0 .14.701L5.722 7.41a.51.51 0 0 0 .562 0l2.995-1.992a.51.51 0 0 0 .14-.7.51.51 0 0 0-.701-.14L6.002 6.382 3.287 4.577a.5.5 0 0 0-.374-.062\"\n fill=\"url(#mainNavDropDownIcon)\"\n />\n <defs>\n <linearGradient\n id=\"mainNavDropDownIcon\"\n x1=\"9.502\"\n y1=\"5.994\"\n x2=\"2.502\"\n y2=\"5.994\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop\n offset=\"1\"\n stopColor=\"rgb(var(--oui-gradient-brand-start))\"\n />\n </linearGradient>\n </defs>\n </svg>\n ) : (\n <ChevronDownIcon size={12} color={\"white\"} />\n )}\n </span>\n )}\n </span>\n <Box\n invisible={!isActive}\n position=\"absolute\"\n bottom={0}\n left={\"50%\"}\n height={\"3px\"}\n r=\"full\"\n width={\"60%\"}\n gradient=\"brand\"\n angle={45}\n className=\"-oui-translate-x-1/2 \"\n />\n </button>\n );\n\n if (!Array.isArray(props.item.children)) return button;\n\n return (\n <SubMenus\n items={props.item.children}\n className={classNames?.subMenu}\n current={props.currentPath?.[1]}\n onItemClick={(subItem: MainNavItem) => {\n props.onClick?.([props.item, subItem]);\n }}\n >\n {button}\n </SubMenus>\n );\n};\n\nconst SubMenus = (\n props: PropsWithChildren<{\n items: MainNavItem[];\n className?: string;\n current?: string;\n onItemClick: (item: MainNavItem) => void;\n }>\n) => {\n const [open, setOpen] = useState(false);\n const timer = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const onMouseEnter = useCallback(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = null;\n }\n // setOpen(true);\n }, []);\n\n const classNames = (props.children as ReactElement).props.className;\n\n return (\n <PopoverRoot open={open}>\n <PopoverAnchor>\n <div\n className={\"oui-group\"}\n data-open={open}\n onMouseEnter={() => {\n setOpen(true);\n }}\n onMouseLeave={() => {\n timer.current = setTimeout(() => {\n setOpen(false);\n }, 150);\n }}\n >\n {cloneElement(props.children as React.ReactElement, {\n className: cn(classNames, open && \"oui-bg-base-7\"),\n })}\n </div>\n </PopoverAnchor>\n <PopoverContent\n align=\"start\"\n onMouseEnter={onMouseEnter}\n onMouseLeave={() => {\n setOpen(false);\n timer.current ? clearTimeout(timer.current) : void 0;\n }}\n className={cn(\n \"oui-p-1 oui-w-[260px] oui-border oui-border-line-6 oui-space-y-[2px]\",\n props.className\n )}\n >\n {props.items.map((item, index) => {\n return (\n <SubMenu\n key={index}\n item={item}\n onClick={props.onItemClick}\n active={item.href === props.current}\n />\n );\n })}\n </PopoverContent>\n </PopoverRoot>\n );\n};\n\nconst SubMenu = (props: {\n item: MainNavItem;\n active?: boolean;\n onClick: (item: MainNavItem) => void;\n}) => {\n const { item } = props;\n return (\n <Flex\n px={2}\n py={3}\n gapX={2}\n data-active={props.active ?? false}\n className={cn(\n \"hover:oui-bg-base-6 oui-cursor-pointer oui-text-base-contrast-80 oui-items-start oui-w-full oui-group data-[active=true]:oui-bg-base-5\"\n // props.active && \"oui-bg-base-5\"\n )}\n r={\"md\"}\n onClick={() => {\n props.onClick(item);\n }}\n data-testid={item.testid}\n >\n {!!props.item.icon && (\n <div className=\"oui-translate-y-1 oui-relative oui-w-6 oui-h-6\">\n <ItemIcon isActive={props.active ?? false} item={props.item} />\n </div>\n )}\n\n <div className=\"oui-flex-1\">\n <SubMenuTitle item={item} isActive={props.active} />\n {typeof item.description !== \"undefined\" && (\n <Text size={\"2xs\"} as={\"div\"} intensity={36}>\n {item.description}\n </Text>\n )}\n </div>\n </Flex>\n );\n};\n\nconst SubMenuTitle = (props: { item: MainNavItem; isActive?: boolean }) => {\n const {\n item: { name },\n isActive,\n } = props;\n return (\n <Flex itemAlign={\"center\"} width={\"100%\"} position=\"relative\">\n <div className=\"oui-flex-1 oui-flex\">\n <Text.gradient\n color={isActive ? \"brand\" : \"inherit\"}\n size={\"xs\"}\n as={\"div\"}\n intensity={80}\n weight={\"semibold\"}\n >\n {name}\n </Text.gradient>\n {typeof props.item.tag !== \"undefined\" && <Tag item={props.item} />}\n </div>\n {props.item.target === \"_blank\" && <OutlinkIcon />}\n </Flex>\n );\n};\n\nconst Tag = (props: { item: MainNavItem }) => {\n return (\n <div\n className={\n \"oui-px-2 oui-py-1 oui-ml-1 oui-rounded oui-inline-flex oui-bg-gradient-to-r oui-from-[rgb(var(--oui-gradient-brand-start)_/_0.12)] oui-to-[rgb(var(--oui-gradient-brand-end)_/_0.12)]\"\n }\n >\n <Text.gradient color={\"brand\"} size={\"3xs\"}>\n {props.item.tag}\n </Text.gradient>\n </div>\n );\n};\n\nconst ICON_CLASSNAME =\n \"oui-flex oui-border oui-border-line oui-w-6 oui-h-6 oui-rounded-md oui-justify-center oui-items-center oui-absolute oui-left-0 oui-top-0\";\n\nconst ItemIcon = (props: { item: MainNavItem; isActive: boolean }) => {\n const { item, isActive } = props;\n\n if (!props.item.icon) return null;\n if (typeof props.item.icon === \"string\") {\n return (\n <span className={\"oui-w-[20px] oui-h-[20px] oui-mr-1\"}>\n {\n <img\n src={\n isActive\n ? (props.item.activeIcon as string) || props.item.icon\n : props.item.icon\n }\n className={\"oui-max-w-full oui-max-h-full\"}\n />\n }\n </span>\n );\n }\n // return isActive ? props.item.activeIcon || props.item.icon : props.item.icon;\n return (\n <>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"group-data-[active=true]:oui-invisible group-hover:oui-invisible\"\n )}\n >\n {props.item.icon}\n </div>\n <div\n className={cn(\n ICON_CLASSNAME,\n \"oui-invisible group-data-[active=true]:oui-visible group-hover:oui-visible\"\n )}\n >\n {props.item.activeIcon || props.item.icon}\n </div>\n </>\n );\n};\n\nconst OutlinkIcon = () => {\n return (\n <>\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 group-hover:oui-invisible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"#fff\"\n fillOpacity=\".2\"\n />\n </svg>\n\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-right-0 oui-top-0 oui-invisible group-hover:oui-visible\"\n >\n <path\n d=\"M14.159 17.492a3.333 3.333 0 0 0 3.333-3.333V5.826a3.333 3.333 0 0 0-3.333-3.334H5.826a3.333 3.333 0 0 0-3.334 3.334v8.333a3.333 3.333 0 0 0 3.334 3.333zm-6.667-4.166a.85.85 0 0 1-.599-.235.86.86 0 0 1 0-1.198l3.333-3.333-1.9-1.901h5v5l-1.901-1.9L8.09 13.09a.84.84 0 0 1-.599.235\"\n fill=\"url(#outlineIcon)\"\n />\n <defs>\n <linearGradient\n id=\"outlineIcon\"\n x1=\"17.492\"\n y1=\"9.992\"\n x2=\"2.492\"\n y2=\"9.992\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n </>\n );\n};\n","import { FC } from \"react\";\nimport { useAppConfig } from \"@orderly.network/react-app\";\nimport { OrderlyLogo } from \"../icons\";\nimport { Logo } from \"@orderly.network/ui\";\n\ntype MainLogoProps = {\n src?: string;\n alt?: string;\n};\n\nexport const MainLogo: FC<MainLogoProps> = (props) => {\n const { appIcons } = useAppConfig();\n\n if (props.src) {\n return <Logo src={props.src} alt={props.alt} />;\n }\n\n const { main } = appIcons || {};\n\n if (main?.img) {\n return <img src={main?.img} />;\n }\n\n if (main?.component) {\n return main.component;\n }\n\n return <OrderlyLogo />;\n};\n","import { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n\nexport const CommuntiyTelegramIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M4.108 9.464S9.645 7.13 11.565 6.31c.736-.328 3.233-1.38 3.233-1.38s1.152-.46 1.056.658c-.032.46-.288 2.069-.544 3.81-.384 2.463-.8 5.157-.8 5.157s-.064.755-.608.887c-.544.13-1.44-.46-1.6-.592-.129-.098-2.401-1.576-3.233-2.299-.224-.197-.48-.591.032-1.051a124 124 0 0 0 3.36-3.285c.384-.394.768-1.313-.832-.197-2.272 1.61-4.513 3.12-4.513 3.12s-.512.33-1.472.034-2.08-.69-2.08-.69-.768-.493.544-1.018\" />\n </svg>\n );\n});\nexport const CommuntiyDiscordIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n {...rest}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M14.956 5.522c1.604 2.374 2.396 5.053 2.1 8.136a.05.05 0 0 1-.02.033 11.7 11.7 0 0 1-3.55 1.805.045.045 0 0 1-.05-.017 9.6 9.6 0 0 1-.725-1.188.046.046 0 0 1 .024-.063 7 7 0 0 0 1.108-.531.046.046 0 0 0 .004-.076 6 6 0 0 1-.22-.174.04.04 0 0 0-.047-.006c-2.296 1.068-4.812 1.068-7.136 0a.04.04 0 0 0-.046.006 6 6 0 0 1-.22.174.046.046 0 0 0 .005.076c.353.204.721.384 1.107.531.025.01.037.039.025.063a8.5 8.5 0 0 1-.725 1.188.05.05 0 0 1-.05.017 11.7 11.7 0 0 1-3.546-1.805.05.05 0 0 1-.018-.033c-.248-2.667.257-5.368 2.097-8.137a.04.04 0 0 1 .02-.016 11.6 11.6 0 0 1 2.89-.903.05.05 0 0 1 .046.022c.125.224.269.51.366.744a10.7 10.7 0 0 1 3.246 0 8 8 0 0 1 .36-.744.044.044 0 0 1 .046-.022 11.7 11.7 0 0 1 2.89.903q.012.005.019.017m-6.018 5.07c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.576 1.442 1.276 1.442.71 0 1.276-.647 1.276-1.441m4.718 0c.011-.788-.56-1.44-1.276-1.44-.71 0-1.276.647-1.276 1.44 0 .795.577 1.442 1.276 1.442.717 0 1.276-.647 1.276-1.441\" />\n </svg>\n );\n});\nexport const CommuntiyXIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { size = 20, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n ref={ref}\n fill=\"#fff\"\n fillOpacity=\".54\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"m4.42 4.73 4.633 6.194-4.662 5.037H5.44l4.082-4.41 3.298 4.41h3.57l-4.893-6.543 4.34-4.689h-1.05l-3.759 4.062-3.037-4.062zm1.543.772h1.64l7.244 9.686h-1.64z\" />\n </svg>\n );\n});\n\nCommuntiyXIcon.displayName = \"CommuntiyXIcon\";\nCommuntiyTelegramIcon.displayName = \"CommuntiyTelegramIcon\";\nCommuntiyDiscordIcon.displayName = \"CommuntiyDiscordIcon\";\n","import React from \"react\";\nimport { BaseIconProps } from \"@orderly.network/ui\";\n\nexport const OrderlyTextIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { opacity = 1, ...rest } = props;\n return (\n <svg\n ref={ref}\n width=\"45\"\n height=\"14\"\n viewBox=\"0 0 45 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.352 2.558a.063.063 0 0 1-.04.112H2.419a.063.063 0 0 1-.04-.112A4.73 4.73 0 0 1 5.365 1.5c1.132 0 2.171.396 2.987 1.058M3.518 7.546a.18.18 0 0 0-.148-.08H.886a.085.085 0 0 0-.083.11 4.75 4.75 0 0 0 4.562 3.429 4.75 4.75 0 0 0 4.562-3.43.085.085 0 0 0-.082-.108H7.36a.18.18 0 0 0-.148.079 2.252 2.252 0 0 1-3.694 0m3.518-2.812a.18.18 0 0 0 .134.061h2.598c.06 0 .101-.057.082-.113a4.8 4.8 0 0 0-.801-1.432.17.17 0 0 0-.132-.062H1.814a.17.17 0 0 0-.132.062A4.8 4.8 0 0 0 .88 4.682a.085.085 0 0 0 .081.113h2.6c.05 0 .099-.023.133-.06a2.25 2.25 0 0 1 1.67-.742c.663 0 1.258.286 1.67.741M7.6 6.95a.067.067 0 0 1-.063-.086 2.26 2.26 0 0 0-.079-1.45.067.067 0 0 1 .061-.093h2.45c.03 0 .058.022.063.052a4.8 4.8 0 0 1 .04 1.52.064.064 0 0 1-.065.057zm-4.407-.086a.067.067 0 0 1-.063.086H.723a.064.064 0 0 1-.064-.056 4.8 4.8 0 0 1 .039-1.52.065.065 0 0 1 .063-.053h2.45c.047 0 .079.049.061.093a2.25 2.25 0 0 0-.079 1.45\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n d=\"M11.272 4.438h1.685v1.61l-.275-.312q.237-.511.662-.874.425-.361.949-.487.524-.124 1.073.038v1.585q-.661-.224-1.223-.125-.55.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.148 3.22q0-.923.4-1.697.41-.774 1.123-1.211a2.95 2.95 0 0 1 1.573-.437 2.7 2.7 0 0 1 1.523.437 2.8 2.8 0 0 1 1.01 1.198q.363.762.363 1.71 0 .95-.362 1.71-.35.762-1.011 1.199a2.7 2.7 0 0 1-1.523.437 2.95 2.95 0 0 1-1.573-.437 3.1 3.1 0 0 1-1.124-1.198 3.7 3.7 0 0 1-.4-1.71m1.748 0q0 .5.224.924.225.412.612.65.387.236.861.236.475 0 .862-.237.386-.237.611-.649.225-.424.225-.924 0-.498-.225-.91-.225-.425-.611-.65a1.6 1.6 0 0 0-.862-.237q-.474 0-.861.237a1.6 1.6 0 0 0-.612.65q-.224.412-.224.91m3.395-6.016h1.685v9.237h-1.685zm4.192 5.329h3.97l-.387.537a2 2 0 0 0-.25-.9 1.63 1.63 0 0 0-.612-.623 1.64 1.64 0 0 0-.861-.225q-.487 0-.886.25a1.6 1.6 0 0 0-.625.686 2.1 2.1 0 0 0-.224.961q0 .537.224.974.239.436.662.687.425.25.961.25.525 0 .937-.238.423-.25.661-.674l1.386.624q-.45.787-1.236 1.26-.786.463-1.798.463-.96 0-1.747-.437a3.3 3.3 0 0 1-1.248-1.198 3.34 3.34 0 0 1-.45-1.71q0-.924.437-1.686.45-.775 1.223-1.21.774-.45 1.723-.45 1.061 0 1.885.537.825.536 1.21 1.448.4.898.226 1.96h-5.181zm6.221-2.534h1.685v1.61l-.274-.312q.237-.511.661-.874.425-.361.949-.487.525-.124 1.073.038v1.585q-.661-.224-1.223-.125-.549.1-.874.475-.312.375-.312.923v3.608h-1.685zm4.885-2.796h1.686v9.237H35.86zm4.359 9.324q.224.487.587.737.362.262.836.262.711 0 1.186-.5.487-.486.487-1.26V9.08l.262.35a2.43 2.43 0 0 1-.911 1.011q-.6.362-1.373.362-.8 0-1.386-.337a2.3 2.3 0 0 1-.886-.936q-.312-.6-.312-1.386V4.438h1.685v3.408q0 .436.162.761.162.312.462.5.312.174.761.174.45 0 .8-.175a1.3 1.3 0 0 0 .549-.511q.187-.338.187-.75V4.439H45v5.767q0 .936-.45 1.685a3.07 3.07 0 0 1-1.21 1.186 3.4 3.4 0 0 1-1.698.424q-.973 0-1.735-.474a3.3 3.3 0 0 1-1.186-1.26z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\n );\n }\n);\n","import { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n// import { BaseIcon, BaseIconProps } from \"./baseIcon\";\n\nexport const SignalIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { size = 18, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n ref={ref}\n className=\"oui-fill-success-light\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M9.02092 2.92969C6.18562 2.92969 3.51037 4.13854 1.68502 6.18754C1.40947 6.49676 1.446 6.96671 1.75537 7.24218C2.0646 7.51743 2.53447 7.48143 2.81002 7.17183C4.35112 5.44196 6.6141 4.42969 9.02092 4.42969C11.4205 4.42969 13.6369 5.43123 15.185 7.17183C15.4603 7.48143 15.9301 7.51743 16.2397 7.24218C16.5492 6.96694 16.5853 6.49699 16.31 6.18754C14.4787 4.12856 11.8512 2.92969 9.02092 2.92969ZM9.02092 5.92969C7.04092 5.92969 5.20867 6.78461 3.93502 8.25019C3.6633 8.56294 3.6927 9.03318 4.00537 9.30468C4.31797 9.57618 4.7883 9.54693 5.06002 9.23418C6.05175 8.09343 7.47982 7.42968 9.02092 7.42968C10.5348 7.42968 11.9446 8.08144 12.935 9.18769C13.2113 9.49593 13.681 9.51093 13.9897 9.23418C14.2983 8.95818 14.3364 8.48793 14.06 8.17968C12.7879 6.75896 10.9659 5.92969 9.02092 5.92969ZM9.02092 8.92968C7.91917 8.92968 6.89242 9.40218 6.18502 10.2189C5.91375 10.5317 5.94225 11.0019 6.25537 11.2734C6.56835 11.5449 7.03875 11.5164 7.31002 11.2029C7.73542 10.7124 8.3589 10.4297 9.02092 10.4297C9.6684 10.4297 10.2604 10.7072 10.685 11.1797C10.962 11.4879 11.4552 11.5037 11.7631 11.2262C12.0712 10.9494 12.087 10.4799 11.81 10.1717C11.1037 9.38643 10.0983 8.92968 9.02092 8.92968ZM8.99752 11.9297C8.81609 11.9297 8.64374 12.0047 8.50537 12.1404C8.50537 12.1404 7.3935 13.2362 6.95842 13.6637C6.52342 14.0919 6.7968 14.9319 7.49752 14.9297H9.63037H10.4975C11.1864 14.9319 11.477 14.0739 11.0366 13.6404C10.5961 13.2069 9.51322 12.1404 9.51314 12.1404C9.37469 12.0047 9.17894 11.9297 8.99752 11.9297Z\" />\n </svg>\n );\n }\n);\n\nSignalIcon.displayName = \"SignalIcon\";\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const InfoIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${size}px`}\n height={`${size}px`}\n fill=\"none\"\n viewBox={`0 0 20 20`}\n {...rest}\n >\n <path\n d=\"M10.012 1.66602C5.40954 1.66602 1.67871 5.39685 1.67871 9.99935C1.67871 14.6018 5.40954 18.3327 10.012 18.3327C14.6145 18.3327 18.3454 14.6018 18.3454 9.99935C18.3454 5.39685 14.6145 1.66602 10.012 1.66602ZM10.012 5.83268C10.472 5.83268 10.8454 6.20602 10.8454 6.66602V10.8327C10.8454 11.2927 10.472 11.666 10.012 11.666C9.55204 11.666 9.17871 11.2927 9.17871 10.8327V6.66602C9.17871 6.20602 9.55204 5.83268 10.012 5.83268ZM10.012 12.4993C10.472 12.4993 10.8454 12.8727 10.8454 13.3327C10.8454 13.7927 10.472 14.166 10.012 14.166C9.55204 14.166 9.17871 13.7927 9.17871 13.3327C9.17871 12.8727 9.55204 12.4993 10.012 12.4993Z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const CloseIcon: FC<IconProps> = (props) => {\n const { size = 16, viewBox, ...rest } = props;\n return (\n <svg\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M3.32972 2.60449C3.15912 2.60449 2.98072 2.66183 2.85052 2.79183C2.59019 3.0525 2.59019 3.48982 2.85052 3.75049L7.03806 7.93782L2.85052 12.1252C2.59019 12.3858 2.59019 12.8232 2.85052 13.0838C3.11092 13.3438 3.54852 13.3438 3.80892 13.0838L7.99639 8.89649L12.1839 13.0838C12.4443 13.3438 12.8819 13.3438 13.1423 13.0838C13.4026 12.8232 13.4026 12.3858 13.1423 12.1252L8.95472 7.93782L13.1423 3.75049C13.4026 3.48982 13.4026 3.0525 13.1423 2.79183C13.0121 2.66183 12.8336 2.60449 12.6631 2.60449C12.4925 2.60449 12.3141 2.66183 12.1839 2.79183L7.99639 6.97916L3.80892 2.79183C3.67872 2.66183 3.50032 2.60449 3.32972 2.60449Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const OrderlyLogo: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width=\"200\"\n height=\"24\"\n viewBox=\"0 0 200 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.2637 18.5152H26.1444V13.3629C26.1444 10.2669 27.9664 9.39239 29.6701 9.39239C29.9777 9.39239 30.2617 9.41602 30.6639 9.46329V6.20176C30.2853 6.10722 29.9777 6.08359 29.7174 6.08359C27.8481 6.08359 26.6886 7.3362 26.2153 9.27421H26.1444V6.22539H22.2637V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M37.3191 18.7516C39.1411 18.7516 40.3952 17.7826 40.7265 16.8608V18.5152H44.6072V1.97122H40.7265V7.87979C40.3952 6.95806 39.1411 5.98905 37.3191 5.98905C34.8108 5.98905 31.9713 7.83252 31.9713 12.3703C31.9713 16.9317 34.8108 18.7516 37.3191 18.7516ZM35.6153 12.3703C35.6153 10.196 36.9168 9.20331 38.2892 9.20331C39.638 9.20331 40.8921 10.196 40.8921 12.3703C40.8921 14.5447 39.638 15.5373 38.2892 15.5373C36.9168 15.5373 35.6153 14.5447 35.6153 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M53.418 18.7516C56.4468 18.7516 58.6475 17.1917 59.2154 14.3556H55.8079C55.595 15.1592 55.0744 15.8209 53.489 15.8209C51.9746 15.8209 51.0281 15.1355 50.8151 13.3393H59.31C59.3573 13.0557 59.381 12.8194 59.381 12.3703C59.381 7.57255 56.5888 5.98905 53.418 5.98905C50.1289 5.98905 47.1474 7.73799 47.1474 12.323C47.1474 17.0972 50.3655 18.7516 53.418 18.7516ZM50.8388 11.0941C51.0754 9.676 51.8799 8.9197 53.3234 8.9197C55.0981 8.9197 55.6423 10.0305 55.7133 11.0941H50.8388Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.8978 18.5152H65.7784V13.3629C65.7784 10.2669 67.6005 9.39239 69.3042 9.39239C69.6118 9.39239 69.8957 9.41602 70.298 9.46329V6.20176C69.9194 6.10722 69.6118 6.08359 69.3515 6.08359C67.4821 6.08359 66.3227 7.3362 65.8494 9.27421H65.7784V6.22539H61.8978V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M72.5672 18.5152H76.4479V1.97122H72.5672V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M79.8261 20.0278V23.2893C83.6358 23.6911 85.2212 22.4149 86.8776 18.3734L91.8468 6.22539H87.8714L85.1739 13.5757L82.5473 6.22539H78.5957L83.0679 17.2626C83.3755 17.9953 83.3992 18.3734 83.1389 18.9643C82.9259 19.437 82.3817 20.3587 79.8261 20.0278Z\"\n fill=\"white\"\n />\n <path\n d=\"M100.278 18.5152H104.229V8.63609H104.324L110.287 18.5152H114.546V1.97122H110.571V12.1103H110.476L104.371 1.97122H100.278V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M123.327 18.7516C126.356 18.7516 128.557 17.1917 129.125 14.3556H125.717C125.504 15.1592 124.984 15.8209 123.398 15.8209C121.884 15.8209 120.937 15.1355 120.724 13.3393H129.219C129.267 13.0557 129.29 12.8194 129.29 12.3703C129.29 7.57255 126.498 5.98905 123.327 5.98905C120.038 5.98905 117.057 7.73799 117.057 12.323C117.057 17.0972 120.275 18.7516 123.327 18.7516ZM120.748 11.0941C120.985 9.676 121.789 8.9197 123.233 8.9197C125.007 8.9197 125.552 10.0305 125.623 11.0941H120.748Z\"\n fill=\"white\"\n />\n <path\n d=\"M137.439 18.6807C138.172 18.6807 138.882 18.5861 139.474 18.4207V15.5609C138.93 15.6082 138.717 15.6082 138.456 15.6082C137.202 15.6082 136.966 14.9228 136.966 14.072V9.22695H139.379V6.22539H136.966V3.01113H133.085V6.22539H130.979V9.22695H133.085V14.6156C133.085 17.4753 134.789 18.6807 137.439 18.6807Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.456 18.5152H148.833L150.797 11.3777L152.761 18.5152H157.115L160.333 6.22539H156.666L154.749 14.781H154.654L152.454 6.22539H149.117L146.917 14.781H146.822L144.905 6.22539H141.261L144.456 18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M167.796 18.7516C170.896 18.7516 174.043 16.8845 174.043 12.3703C174.043 7.85616 170.896 5.98905 167.796 5.98905C164.673 5.98905 161.549 7.85616 161.549 12.3703C161.549 16.8845 164.673 18.7516 167.796 18.7516ZM165.169 12.3703C165.169 10.196 166.282 9.20331 167.796 9.20331C169.287 9.20331 170.399 10.196 170.399 12.3703C170.399 14.5447 169.287 15.5373 167.796 15.5373C166.282 15.5373 165.169 14.5447 165.169 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.554 18.5152H180.434V13.3629C180.434 10.2669 182.256 9.39239 183.96 9.39239C184.268 9.39239 184.552 9.41602 184.954 9.46329V6.20176C184.575 6.10722 184.268 6.08359 184.007 6.08359C182.138 6.08359 180.979 7.3362 180.505 9.27421H180.434V6.22539H176.554V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M187.223 18.5152H191.104V14.9701L192.074 13.9302L195.742 18.5152H200.001L194.44 11.4249L199.362 6.22539H195.126L191.104 10.8104V1.97122H187.223V18.5152Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.66235 0.640167L9.70838 0.640167C12.1367 0.64581 14.355 1.54403 16.052 3.02375C16.1722 3.1286 16.0961 3.32102 15.9365 3.32102L3.43427 3.32102C3.27465 3.32102 3.1985 3.1286 3.31874 3.02375C5.01571 1.54403 7.23406 0.645809 9.66235 0.640167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.9175 12.9472C5.84821 12.8485 5.73663 12.7865 5.61594 12.7865L0.606422 12.7865C0.461299 12.7865 0.355489 12.924 0.39667 13.063C1.58273 17.0661 5.29234 19.9869 9.68495 19.9869C14.0776 19.9869 17.7872 17.0661 18.9732 13.063C19.0144 12.924 18.9086 12.7865 18.7635 12.7865L13.754 12.7865C13.6333 12.7865 13.5218 12.8485 13.4525 12.9472C12.6208 14.1317 11.2434 14.9061 9.68499 14.9061C8.12654 14.9061 6.74917 14.1317 5.9175 12.9472Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.3322 7.51577C13.4208 7.63078 13.5556 7.7029 13.7009 7.7029L18.7216 7.7029C18.868 7.7029 18.9741 7.56325 18.9304 7.42361C18.551 6.2113 17.9392 5.10154 17.147 4.14637C17.0811 4.06686 16.9826 4.02197 16.8792 4.02197L2.4903 4.02197C2.38694 4.02197 2.28845 4.06686 2.22251 4.14637C1.43037 5.10153 0.818541 6.2113 0.439134 7.42361C0.395431 7.56325 0.501494 7.7029 0.647976 7.7029L5.66868 7.7029C5.81394 7.7029 5.9488 7.63078 6.03735 7.51577C6.87801 6.42387 8.19911 5.72017 9.68478 5.72017C11.1704 5.72017 12.4916 6.42387 13.3322 7.51577Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1283 12.0868C14.0334 12.0868 13.969 11.9902 14.0018 11.9013C14.184 11.4069 14.2835 10.8724 14.2835 10.3148C14.2835 9.70687 14.1652 9.12653 13.9505 8.59547C13.9142 8.50592 13.9788 8.40582 14.0755 8.40582L19.0003 8.40582C19.1057 8.40582 19.1968 8.48012 19.2156 8.58377C19.3172 9.14546 19.3702 9.72401 19.3702 10.3149C19.3702 10.8567 19.3256 11.3881 19.2399 11.9057C19.2225 12.0108 19.1307 12.0868 19.0241 12.0868L14.1283 12.0868ZM5.36846 11.9013C5.40122 11.9902 5.33678 12.0868 5.24195 12.0868L0.346163 12.0868C0.239492 12.0868 0.147732 12.0108 0.130321 11.9057C0.0445957 11.3881 0 10.8567 0 10.3149C0 9.72401 0.0530502 9.14546 0.154653 8.58377C0.173403 8.48011 0.264481 8.40582 0.369941 8.40582L5.29476 8.40582C5.39146 8.40582 5.45599 8.50592 5.41977 8.59547C5.20498 9.12653 5.08673 9.70687 5.08673 10.3148C5.08673 10.8724 5.18623 11.4069 5.36846 11.9013Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import { cn, Flex } from \"@orderly.network/ui\";\nimport { MainNavItem, NavItem } from \"./navItem\";\nimport { FC } from \"react\";\n\nexport type MainNavClassNames = {\n root?: string;\n navItem?: string;\n subMenu?: string;\n};\n\nexport type MainNavItemsProps = {\n items?: MainNavItem[];\n current?: string[];\n classNames?: MainNavClassNames;\n onItemClick?: (item: MainNavItem[]) => void;\n};\n\nexport const MainNavMenusUI: FC<MainNavItemsProps> = (props) => {\n const { items, classNames } = props;\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex className={cn(\"oui-gap-[6px] 2xl:oui-gap-2\", classNames?.root)}>\n {items?.map((item, index) => (\n <NavItem\n key={index}\n item={item}\n // active={item.href === props.current?.[0]}\n currentPath={props.current}\n onClick={props.onItemClick}\n />\n ))}\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { MainNavMenusUI, type MainNavItemsProps } from \"./mainNavMenus.ui\";\nimport {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@orderly.network/ui\";\n\nexport const MainNavMenusWidget: FC<MainNavItemsProps> = (props) => {\n return <MainNavMenusUI {...props} />;\n};\n\ninstallExtension<MainNavItemsProps>({\n name: \"default-main-nav-menus\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MainMenus],\n __isInternal: true,\n})((props: MainNavItemsProps) => {\n return <MainNavMenusUI {...props} />;\n});\n\nexport const MainNavMenusExtension: FC<MainNavItemsProps> = (props) => {\n return (\n <ExtensionSlot position={ExtensionPositionEnum.MainMenus} {...props} />\n );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { useAccount, useChains, useEventEmitter } from \"@orderly.network/hooks\";\nimport { EnumTrackerKeys } from \"@orderly.network/types\";\n\nexport type UseLinkDeviceScriptReturn = ReturnType<typeof useLinkDeviceScript>;\n\nconst ExpireSeconds = 60;\n\nexport function useLinkDeviceScript() {\n const [open, setOpen] = useState(false);\n const [loading, setLoading] = useState(true);\n const [confirm, setConfirm] = useState(false);\n const [seconds, setSeconds] = useState(ExpireSeconds);\n const [secretKey, setSecretKey] = useState(\"\");\n const [url, setUrl] = useState(\"\");\n const ee = useEventEmitter();\n\n const { state, account } = useAccount();\n\n const [_, { findByChainId }] = useChains(undefined, {\n pick: \"network_infos\",\n filter: (chain: any) =>\n chain.network_infos?.bridge_enable || chain.network_infos?.bridgeless,\n });\n\n const createTrackParams = () => {\n const chain = findByChainId(account.chainId as number);\n return {\n wallet: state?.connectWallet?.name,\n network: chain?.network_infos.name,\n };\n };\n\n const getOrderlyKey = useCallback(async () => {\n try {\n const res = await account.createApiKey(30);\n setSecretKey(res.secretKey);\n setLoading(false);\n\n ee.emit(\n EnumTrackerKeys.SIGN_LINK_DEVICE_MESSAGE_SUCCESS,\n createTrackParams()\n );\n } catch (e) {\n console.error(\"getOrderlyKey\", e);\n\n if (e instanceof Error) {\n if (\n e.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: e.message,\n userAddress: account.address,\n });\n }\n }\n hideDialog();\n }\n }, [account]);\n\n const showDialog = useCallback(() => {\n setOpen(true);\n getOrderlyKey();\n ee.emit(EnumTrackerKeys.CLICK_LINK_DEVICE_BUTTON, createTrackParams());\n }, [account]);\n\n const hideDialog = useCallback(() => {\n setOpen(false);\n }, []);\n\n const onConfirm = useCallback(() => {\n setConfirm(true);\n ee.emit(EnumTrackerKeys.LINK_DEVICE_MODAL_CLICK_CONFIRM, {});\n }, []);\n\n const copyUrl = useCallback(() => {\n navigator.clipboard.writeText(url);\n }, [url]);\n\n useEffect(() => {\n // when hide dialog, reset data\n if (!open) {\n setConfirm(false);\n setLoading(true);\n setSeconds(ExpireSeconds);\n setSecretKey(\"\");\n setUrl(\"\");\n }\n }, [open]);\n\n useEffect(() => {\n if (seconds === 0) {\n hideDialog();\n return;\n }\n\n if (!confirm) {\n return;\n }\n\n const timer = setTimeout(() => {\n setSeconds(seconds - 1);\n }, 1000);\n\n return () => clearTimeout(timer);\n }, [seconds, confirm]);\n\n useEffect(() => {\n if (confirm && secretKey) {\n const timestamp = Math.floor(Date.now() / 1000) + ExpireSeconds;\n const params = {\n k: secretKey,\n t: timestamp,\n a: account.address,\n i: account.chainId,\n n: account.walletAdapter?.chainNamespace,\n };\n const url = createUrl(params);\n setUrl(url);\n }\n }, [confirm, secretKey]);\n\n return {\n open,\n onOpenChange: setOpen,\n showDialog,\n hideDialog,\n loading,\n seconds,\n confirm,\n onConfirm,\n url,\n copyUrl,\n };\n}\n\nfunction createUrl(params: Record<string, any>) {\n const str = JSON.stringify(params);\n const base64 = window.btoa(str);\n console.log(\"str\", str.length, str);\n console.log(\"base64\", base64.length, base64);\n return `${window.location.origin}?link=${base64}`;\n}\n","import { FC, SVGProps, useEffect, useRef } from \"react\";\nimport {\n cn,\n CopyIcon,\n Flex,\n SimpleDialog,\n SimpleDialogFooter,\n SimpleDialogFooterProps,\n Text,\n} from \"@orderly.network/ui\";\nimport { qrcode as qr } from \"@akamfoad/qr\";\n\nimport { MainLogo } from \"../mainLogo\";\nimport { UseLinkDeviceScriptReturn } from \"./linkDevice.script\";\n\nexport type LinkDeviceProps = UseLinkDeviceScriptReturn;\n\nexport const LinkDevice: FC<LinkDeviceProps> = (props) => {\n return (\n <>\n <LinkDeviceIcon\n className=\"oui-text-base-contrast-80 oui-cursor-pointer\"\n onClick={props.showDialog}\n />\n <SimpleDialog\n title={<Text weight=\"semibold\">Confirm</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n >\n <LinkDeviceContent {...props} />\n </SimpleDialog>\n </>\n );\n};\n\nexport const LinkDeviceContent: FC<LinkDeviceProps> = (props) => {\n if (props.loading) {\n return <Loading />;\n }\n\n if (props.confirm) {\n return (\n <QRCode\n hideDialog={props.hideDialog}\n seconds={props.seconds}\n url={props.url}\n copyUrl={props.copyUrl}\n />\n );\n }\n\n return (\n <LinkDeviceConfirm\n hideDialog={props.hideDialog}\n onConfirm={props.onConfirm}\n />\n );\n};\n\ntype QRCodeProps = Pick<\n LinkDeviceProps,\n \"seconds\" | \"hideDialog\" | \"copyUrl\"\n> & {\n url?: string;\n};\n\nconst QRCode: FC<QRCodeProps> = (props) => {\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n primary: {\n label: \"Ok\",\n onClick: props.hideDialog,\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\" gapY={3}>\n <Text size=\"base\" intensity={98}>\n Scan QR Code\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center\"\n >\n {/* need to break the line by \"/\" */}\n Scan the QR code or paste the URL into another browser/{\"\\n\"}device to\n continue.\n </Text>\n\n <Text size=\"sm\" intensity={54}>\n Countdown:{\" \"}\n <Text.gradient color=\"brand\" className=\"oui-tabular-nums\">\n {props.seconds}s\n </Text.gradient>\n </Text>\n\n <Flex\n className={cn(\n \"oui-w-[240px] oui-h-[240px] \",\n \"oui-border oui-border-base-contrast-20 oui-rounded-2xl\"\n )}\n justify=\"center\"\n itemAlign=\"center\"\n >\n <Flex\n className=\"oui-w-[220px] oui-h-[220px] oui-rounded-lg oui-bg-white\"\n justify=\"center\"\n itemAlign=\"center\"\n >\n <QRCodeCanvas width={196} height={196} content={props.url} />\n </Flex>\n </Flex>\n\n <Flex\n direction=\"row\"\n gap={1}\n className={cn(\n \"oui-cursor-pointer\",\n \"oui-group oui-text-base-contrast-54 hover:oui-text-base-contrast\"\n )}\n onClick={props.copyUrl}\n >\n <CopyIcon\n size={16}\n opacity={1}\n className=\"oui-text-base-contrast-54 group-hover:oui-text-base-contrast\"\n />\n <Text size=\"2xs\" weight=\"regular\">\n Copy URL\n </Text>\n </Flex>\n\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\ntype QRCodeCanvasProps = {\n width: number;\n height: number;\n content?: string;\n};\n\nconst QRCodeCanvas: FC<QRCodeCanvasProps> = (props) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n if (!canvasRef.current || !props.content) return;\n\n const qrcode = qr(props.content);\n const width = props.width;\n const height = props.height;\n\n const ctx = canvasRef.current.getContext(\"2d\")!;\n\n const cells = qrcode.modules!;\n\n const tileW = width / cells.length;\n const tileH = height / cells.length;\n\n for (let r = 0; r < cells.length; ++r) {\n const row = cells[r];\n for (let c = 0; c < row.length; ++c) {\n ctx.fillStyle = row[c] ? \"#000\" : \"#fff\";\n const w = Math.ceil((c + 1) * tileW) - Math.floor(c * tileW);\n const h = Math.ceil((r + 1) * tileH) - Math.floor(r * tileH);\n ctx.fillRect(Math.round(c * tileW), Math.round(r * tileH), w, h);\n }\n }\n }, [canvasRef, props.content]);\n\n return <canvas width={props.width} height={props.height} ref={canvasRef} />;\n};\n\ntype LinkDeviceConfirmProps = Pick<LinkDeviceProps, \"hideDialog\" | \"onConfirm\">;\n\nconst LinkDeviceConfirm: FC<LinkDeviceConfirmProps> = (props) => {\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n secondary: {\n label: \"Cancel\",\n onClick: props.hideDialog,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n primary: {\n label: \"Confirm\",\n onClick: props.onConfirm,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n };\n\n return (\n <Flex direction=\"column\">\n <MainLogo />\n <Text size=\"base\" intensity={98} className=\"oui-mt-5\">\n Link Mobile Device\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center oui-mt-3\"\n >\n Open pro.woofi.com on your mobile device and scan the QR code to link\n this wallet. For security, the QR code will expire in 60 seconds. <br />\n The QR code allows mobile trading but does not enable withdrawals.\n Ensure you are not sharing your screen or any screenshots of the QR\n code.\n </Text>\n <SimpleDialogFooter\n actions={actions}\n className=\"oui-w-full oui-p-0 !oui-pt-8\"\n />\n </Flex>\n );\n};\n\nconst Loading = () => {\n return (\n <Flex direction=\"column\" gap={5}>\n <Spinner />\n <Text size=\"sm\" intensity={98}>\n Approve QR code with wallet...\n </Text>\n </Flex>\n );\n};\n\nconst Spinner = () => {\n return (\n <svg\n width=\"80\"\n height=\"80\"\n viewBox=\"0 0 80 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-animate-spin\"\n >\n <path\n d=\"M11.4858 52.1631C10.4698 52.5965 9.28872 52.1259 8.91766 51.0855C7.68926 47.6412 7.04029 44.0121 7.00182 40.3463C6.95634 36.0129 7.76483 31.713 9.38113 27.6921C10.9974 23.6712 13.3899 20.0079 16.4219 16.9116C18.9868 14.2923 21.967 12.122 25.2375 10.4861C26.2253 9.99202 27.4035 10.4698 27.8369 11.4858L28.8571 13.8773C29.2904 14.8933 28.8139 16.0615 27.8336 16.5706C25.3569 17.8567 23.0959 19.5294 21.1375 21.5293C18.7119 24.0064 16.7979 26.9369 15.5049 30.1537C14.2119 33.3704 13.5651 36.8103 13.6015 40.277C13.6308 43.076 14.1051 45.8482 15.0026 48.4906C15.3579 49.5365 14.8933 50.7096 13.8773 51.143L11.4858 52.1631Z\"\n fill=\"url(#paint0_linear_177_6754)\"\n />\n <path\n d=\"M73 40C73 58.2254 58.2254 73 40 73C21.7746 73 7 58.2254 7 40C7 21.7746 21.7746 7 40 7C58.2254 7 73 21.7746 73 40ZM13.6 40C13.6 54.5803 25.4197 66.4 40 66.4C54.5803 66.4 66.4 54.5803 66.4 40C66.4 25.4197 54.5803 13.6 40 13.6C25.4197 13.6 13.6 25.4197 13.6 40Z\"\n fill=\"white\"\n fill-opacity=\"0.06\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_177_6754\"\n x1=\"73\"\n y1=\"40\"\n x2=\"7\"\n y2=\"40\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LinkDeviceIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M19.167 7.583a1.74 1.74 0 0 0-1.731-1.75h-4.038a1.74 1.74 0 0 0-1.731 1.75v8.167c0 .967.775 1.75 1.73 1.75h4.039a1.74 1.74 0 0 0 1.73-1.75zm-1.154 0v7.584H12.82V7.583A.58.58 0 0 1 13.398 7h4.038a.58.58 0 0 1 .577.583m-2.02 8.75a.58.58 0 0 1-.576.584.58.58 0 0 1-.577-.584.58.58 0 0 1 .577-.583.58.58 0 0 1 .577.583\" />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.666 5a2.5 2.5 0 0 1 2.5-2.5h10a2.5 2.5 0 0 1 2.5 2.5.08.08 0 0 1-.078.078h-1.51a.08.08 0 0 1-.08-.078.834.834 0 0 0-.833-.833h-10A.834.834 0 0 0 3.333 5v5.633c0 .11.09.2.2.2h7.1c.11 0 .2.09.2.2V12.3a.2.2 0 0 1-.2.2H2.7a.2.2 0 0 0-.2.2v.633c0 .511.308.834.834.834h7.3c.11 0 .2.09.2.2v1.266a.2.2 0 0 1-.2.2h-7.3c-1.465 0-2.5-1.086-2.5-2.5v-1.666c0-.392.27-.72.635-.81.107-.026.198-.113.198-.224z\"\n />\n </svg>\n );\n};\n","import { useLinkDeviceScript } from \"./linkDevice.script\";\nimport { LinkDevice } from \"./linkDevice.ui\";\n\nexport const LinkDeviceWidget = () => {\n const state = useLinkDeviceScript();\n return <LinkDevice {...state} />;\n};\n","import { PropsWithChildren } from \"react\";\nimport { MainNav, MainNavProps } from \"./mainNav.ui\";\nimport { MainNavItem } from \"./mainMenus/navItem\";\nimport {\n CampaignPositionEnum,\n useMainNavBuilder,\n} from \"./useWidgetBuilder.script\";\n\nexport type MainNavWidgetProps = PropsWithChildren<{\n logo?: {\n src: string;\n alt: string;\n };\n mainMenus?: MainNavItem[];\n\n products?: MainNavItem[];\n\n campaigns?: MainNavItem;\n campaignPosition?: CampaignPositionEnum;\n\n initialProduct?: string;\n /**\n * initial menu path, if it has submenus, use array\n * @type string | string[]\n */\n initialMenu?: string | string[];\n\n onItemClick?: (options: {\n href: string;\n name: string;\n scope?: string;\n }) => void;\n}> &\n Pick<MainNavProps, \"classNames\">;\n\nexport const MainNavWidget = (props: MainNavWidgetProps) => {\n const { children, classNames, ...rest } = props;\n const state = useMainNavBuilder(rest);\n return (\n <MainNav classNames={classNames} {...state}>\n {children}\n </MainNav>\n );\n};\n","import React, { FC, memo, SVGProps } from \"react\";\nimport {\n Box,\n Flex,\n tv,\n VariantProps,\n Text,\n cn,\n Tooltip,\n} from \"@orderly.network/ui\";\n\ntype SideMenuItem = {\n name: string;\n icon?: React.ReactNode;\n href?: string;\n disabled?: boolean;\n onClick?: () => void;\n};\n\nconst menuItemVariants = tv({\n slots: {\n button: [\n \"oui-h-10\",\n \"oui-px-3\",\n \"oui-rounded-md\",\n \"oui-w-full\",\n \"oui-text-left\",\n \"oui-text-base\",\n \"oui-text-base-contrast-36\",\n // \"oui-flex\",\n \"oui-group\",\n // \"oui-space-x-2\",\n // \"oui-items-center\",\n \"hover:oui-bg-base-8\",\n \"oui-transition-colors\",\n \"group-data-[state=closed]/bar:oui-w-[42px]\",\n \"oui-overflow-hidden\",\n ],\n icon: [],\n },\n variants: {\n mode: {\n \"icon-only\": {\n button: \"oui-w-10\",\n icon: \"w-6 h-6\",\n },\n full: {\n button: \"oui-full\",\n icon: \"w-6 h-6\",\n },\n },\n active: {\n true: {\n button: \"oui-bg-base-5 hover:oui-bg-base-5\",\n },\n },\n open: {\n true: {\n button: \"\",\n },\n },\n },\n});\n\nconst MenuItem: FC<\n {\n item: SideMenuItem;\n active?: boolean;\n open?: boolean;\n onClick?: (item: SideMenuItem) => void;\n } & VariantProps<typeof menuItemVariants>\n> = memo((props) => {\n const { item, mode, open, onClick, active, ...rest } = props;\n const { button } = menuItemVariants({\n mode,\n active: props.active,\n open: props.open,\n });\n const children = (\n <button\n data-actived={props.active}\n disabled={item.disabled}\n className={button()}\n onClick={() => {\n props.onClick?.(item);\n }}\n >\n <Flex itemAlign={\"center\"} gap={2} as=\"span\">\n {item.icon}\n {props.open && (\n <Text.gradient\n color={props.active ? \"brand\" : \"inherit\"}\n angle={45}\n size=\"base\"\n className=\"oui-animate-in oui-fade-in\"\n >\n {item.name}\n </Text.gradient>\n )}\n </Flex>\n </button>\n );\n\n if (props.open) {\n return <li className=\"oui-min-w-[120px]\">{children}</li>;\n }\n\n return (\n <li>\n <Tooltip content={item.name} side=\"right\" align=\"center\" sideOffset={20}>\n {children}\n </Tooltip>\n </li>\n );\n});\n\nMenuItem.displayName = \"LeftMenuItem\";\n\nconst SideMenus: FC<{\n menus?: SideMenuItem[];\n current?: string;\n open?: boolean;\n onItemSelect?: (item: SideMenuItem) => void;\n}> = (props) => {\n return (\n <Box py={6}>\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 18 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"oui-absolute oui-invisible oui-pointer-events-none\"\n >\n <defs>\n <linearGradient\n id=\"side-menu-gradient\"\n x1=\"15.7432\"\n y1=\"8.94726\"\n x2=\"2.24316\"\n y2=\"8.94726\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n </linearGradient>\n </defs>\n </svg>\n <ul className=\"oui-space-y-4\">\n {props.menus?.map((item, index) => {\n return (\n <MenuItem\n key={index}\n item={item}\n open={props.open}\n active={item.href === props.current}\n onClick={props.onItemSelect}\n />\n );\n })}\n </ul>\n </Box>\n );\n};\n\ntype SideBarHeaderProps = {\n onToggle?: () => void;\n open?: boolean;\n title?: React.ReactNode;\n};\n\nconst SideBarHeader: FC<SideBarHeaderProps> = (props) => {\n const { title } = props;\n\n const titleElemet =\n typeof title === \"string\" ? (\n <Text intensity={54} size=\"xs\">\n {title}\n </Text>\n ) : (\n title\n );\n\n const iconProps = {\n className:\n \"oui-text-base-contrast-36 hover:oui-text-base-contrast-80 oui-cursor-pointer\",\n onClick: props.onToggle,\n };\n\n return (\n <Flex\n justify={props.open ? \"between\" : \"center\"}\n itemAlign=\"center\"\n className=\"oui-h-6\"\n >\n {props.open ? titleElemet : null}\n\n {props.open ? (\n <CollapseIcon {...iconProps} />\n ) : (\n <ExpandIcon {...iconProps} />\n )}\n </Flex>\n );\n};\n\ntype SideBarProps = {\n title?: React.ReactNode;\n items?: SideMenuItem[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n onItemSelect?: (item: SideMenuItem) => void;\n current?: string;\n className?: string;\n maxWidth?: number;\n minWidth?: number;\n style?: React.CSSProperties;\n};\n\nconst SideBar = (props: SideBarProps) => {\n const { open = true, items, current, onItemSelect } = props;\n\n return (\n <Box\n data-state={open ? \"opened\" : \"closed\"}\n className={cn(\"oui-group/bar\", props.className)}\n style={props.style}\n >\n <SideBarHeader\n open={open}\n title={props.title}\n onToggle={() => {\n props.onOpenChange?.(!open);\n }}\n />\n <SideMenus\n menus={items}\n current={current}\n onItemSelect={onItemSelect}\n open={open}\n />\n </Box>\n );\n};\n\nSideBar.displayName = \"SideBar\";\n\nconst ExpandIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M6.326 8.826a.84.84 0 0 0-.6.234L2.16 12.627v-2.135H.492v4.167c0 .46.373.833.834.833h4.166v-1.667H3.357l3.567-3.567a.857.857 0 0 0 0-1.198.84.84 0 0 0-.598-.234M10.502.492V2.16h2.135L9.07 5.726a.857.857 0 0 0 0 1.199.86.86 0 0 0 1.197 0l3.568-3.568v2.135h1.667V1.326a.834.834 0 0 0-.834-.834z\" />\n </svg>\n);\n\nconst CollapseIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M14.668.492a.85.85 0 0 0-.599.234l-3.567 3.568V2.159H8.835v4.167c0 .46.373.833.833.833h4.167V5.492H11.7l3.569-3.567a.86.86 0 0 0 0-1.199.85.85 0 0 0-.6-.234m-12.5 8.334v1.666h2.135L.736 14.06a.86.86 0 0 0 0 1.198.86.86 0 0 0 1.198 0l3.568-3.567v2.134h1.666V9.66a.834.834 0 0 0-.833-.833z\" />\n </svg>\n);\n\nexport { SideBar };\n\nexport type { SideBarProps, SideMenuItem };\n","import React, { useEffect } from \"react\";\nimport { useMemo, useState } from \"react\";\nimport { SideBarProps } from \"./sidebar.ui\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\n\nexport const useSideNavBuilder = (\n props?: Partial<SideBarProps>\n): SideBarProps => {\n const [current, setCurrent] = useState(props?.items?.[0].href || \"/\");\n const { expanded, setExpand } = useScaffoldContext();\n\n if (typeof setExpand === \"undefined\") {\n console.warn(\"SideBar component must be used within a Scaffold component\");\n }\n\n return {\n items: [],\n current,\n open: expanded,\n onOpenChange: (open) => {\n setExpand?.(open);\n },\n onItemSelect: (item) => {\n if (item.href) {\n setCurrent(item.href);\n }\n },\n ...props,\n };\n};\n","import { SideBar, SideBarProps } from \"./sidebar.ui\";\nimport { useSideNavBuilder } from \"./useSideNavBuilder.script\";\n\nexport const SideNavbarWidget = (props?: Partial<SideBarProps>) => {\n const state = useSideNavBuilder(props);\n\n return <SideBar {...state} />;\n};\n","import { FC, useMemo } from \"react\";\nimport { Divider, Flex, Text } from \"@orderly.network/ui\";\nimport {\n CommuntiyDiscordIcon,\n CommuntiyTelegramIcon,\n CommuntiyXIcon,\n OrderlyTextIcon,\n SignalIcon,\n} from \"../icons/index\";\nimport { FooterReturns } from \"./footer.script\";\nimport { WsNetworkStatus } from \"@orderly.network/hooks\";\nimport { FooterProps } from \"./footer.widget\";\n\nexport const Footer: FC<FooterReturns & FooterProps> = (props) => {\n const signalClsName = useMemo(() => {\n switch (props.wsStatus) {\n case WsNetworkStatus.Connected:\n return \"oui-fill-success-light oui-text-success-light\";\n case WsNetworkStatus.Disconnected:\n return \"oui-fill-danger-light oui-text-danger-light\";\n case WsNetworkStatus.Unstable:\n return \"oui-fill-warning-light oui-text-warning-light\";\n }\n }, [props.wsStatus]);\n\n const openUrl = (url?: string) => {\n window.open(url, \"_blank\");\n };\n\n return (\n <Flex\n direction={\"row\"}\n justify={\"between\"}\n height={28}\n px={3}\n width={\"100%\"}\n >\n <Flex>\n <Flex\n direction={\"row\"}\n itemAlign={\"center\"}\n gap={1}\n className={signalClsName}\n >\n <SignalIcon\n // className={cn(signalClsName, \"oui-fill-success-light\")}\n fillOpacity={1}\n fill=\"currentColor\"\n />\n <Text size=\"2xs\">Operational</Text>\n </Flex>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-px-1 oui-ml-2 oui-border-line-12\"\n />\n <Flex gap={2}>\n <Text intensity={54} size=\"2xs\">\n Join our community\n </Text>\n <Flex direction={\"row\"} gap={1}>\n {typeof props.telegramUrl !== \"undefined\" && (\n <CommuntiyTelegramIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.telegramUrl)}\n />\n )}\n {typeof props.discordUrl !== \"undefined\" && (\n <CommuntiyDiscordIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.discordUrl)}\n />\n )}\n {typeof props.twitterUrl !== \"undefined\" && (\n <CommuntiyXIcon\n className=\"oui-fill-white/[.54] hover:oui-fill-white/[.98] oui-cursor-pointer\"\n fill=\"currentColor\"\n fillOpacity={1}\n onClick={(e) => openUrl(props.twitterUrl)}\n />\n )}\n </Flex>\n {typeof props?.trailing !== \"undefined\" && (\n <>\n <Divider\n direction=\"vertical\"\n className=\"oui-h-[18px] oui-border-line-12\"\n />\n {props?.trailing}\n </>\n )}\n </Flex>\n </Flex>\n <Flex direction={\"row\"} gap={1}>\n <Text intensity={54} size=\"2xs\">\n Powered by\n </Text>\n <OrderlyTextIcon />\n </Flex>\n </Flex>\n );\n};\n","import { useWsStatus, WsNetworkStatus } from \"@orderly.network/hooks\";\n\nexport type FooterReturns = {\n wsStatus: WsNetworkStatus;\n};\n\nexport const useFooterScript = (): FooterReturns => {\n const wsStatus = useWsStatus();\n\n return {\n wsStatus,\n };\n};\n","import { useFooterScript } from \"./footer.script\";\nimport { Footer } from \"./footer.ui\";\n\nexport type FooterProps = {\n telegramUrl?: string;\n twitterUrl?: string;\n discordUrl?: string;\n trailing?: React.ReactNode;\n};\n\nexport const FooterWidget = (props: FooterProps) => {\n const state = useFooterScript();\n return <Footer {...state} {...props} />;\n};\n","import {\n Box,\n cn,\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n Divider,\n Flex,\n} from \"@orderly.network/ui\";\nimport { CloseIcon, InfoIcon } from \"../icons\";\nimport { MaintenanceTipInterface } from \"./script\";\nimport { useMediaQuery } from \"@orderly.network/hooks\";\nimport { MEDIA_TABLET } from \"@orderly.network/types\";\n\nexport const MaintenanceTipsUI = (props: MaintenanceTipInterface) => {\n const { showTips, showDialog, tipsContent, closeTips, dialogContent } = props;\n if (showDialog) {\n return (\n <Dialog open={true}>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[320px] md:oui-w-auto\"\n >\n <DialogHeader>\n <DialogTitle>System upgrade in progress</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className='oui-text-2xs md:oui-text-xs'>{dialogContent}</DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n if (!showTips) {\n return <></>;\n }\n return (\n <Flex\n className={cn(\n \"oui-bg-warning-darken/10 oui-text-warning-darken oui-text-2xs md:oui-text-sm oui-relative oui-gap-1\",\n \"oui-mx-1 md:oui-mx-0 md:oui-w-full oui-pl-2 md:oui-pl-4 oui-pr-9 md:oui-pr-[60px] oui-py-2 md:oui-py-3\",\n \"oui-leading-4\",\n \"oui-rounded-xl md:oui-rounded-none\",\n \"oui-min-h-[48px]\",\n \"oui-justify-start oui-items-start\",\n \"xl:oui-justify-center xl:oui-items-center xl:oui-px-4\"\n )}\n >\n <div className='oui-flex oui-items-start oui-justify-start oui-gap-1 '>\n <InfoIcon size={20} className=\"oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 \" />\n <Box className=\"oui-font-semibold oui-leading-4\">{tipsContent}</Box>\n </div>\n <CloseIcon\n size={16}\n className=\"oui-absolute oui-right-2 md:oui-right-4 oui-text-secondary/[0.36] hover:oui-text-secondary/80 oui-cursor-pointer -oui-translate-y-2/4 oui-top-2/4\"\n onClick={closeTips}\n />\n </Flex>\n );\n};\n","import { useMaintenanceStatus } from \"@orderly.network/hooks\";\nimport { useContext, useEffect, useMemo, useState } from \"react\";\nimport { format } from \"date-fns\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { getTimestamp } from \"@orderly.network/utils\";\nfunction getTimeString(timestamp: number) {\n const date = format(new UTCDateMini(timestamp), \"MMM dd\");\n const time = format(new UTCDateMini(timestamp), \"h:mm aa\");\n return `${time} (UTC) on ${date}`;\n}\n\nconst oneDay = 1000 * 60 * 60 * 24;\n\nexport interface MaintenanceTipInterface {\n tipsContent: string;\n showTips: boolean;\n closeTips: () => void;\n showDialog: boolean;\n dialogContent?: string;\n}\n\nexport const useMaintenanceScript = (): MaintenanceTipInterface => {\n const [showTips, setShowTips] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\n\n const startDate = useMemo(() => {\n if (!startTime) {\n return \"-\";\n }\n return getTimeString(startTime);\n }, [startTime]);\n\n const endDate = useMemo(() => {\n if (!endTime) {\n return \"-\";\n }\n return getTimeString(endTime);\n }, [endTime]);\n\n const closeTips = () => {\n window.localStorage.setItem(`Maintenance_${startTime}`, \"1\");\n setShowTips(false);\n };\n\n useEffect(() => {\n console.log('-- start time', {\n startTime,\n status,\n });\n if (status === 2) {\n setShowTips(false);\n setShowDialog(true);\n return;\n }\n setShowDialog(false);\n if (startTime) {\n if (startTime < getTimestamp() + oneDay) {\n // check localstorage\n if (!window.localStorage.getItem(`Maintenance_${startTime}`)) {\n setShowTips(true);\n }\n }\n }\n }, [startTime, status]);\n const tipsContent = `${brokerName} will be temporarily unavailable for a scheduled upgrade from ${startDate} to ${endDate}.`;\n const dialogContent = `Sorry, ${brokerName} is temporarily unavailable due to a scheduled upgrade. The service is expected to be back by ${endDate}.`;\n return {\n tipsContent,\n showTips,\n closeTips,\n showDialog,\n dialogContent,\n };\n};\n","import { MaintenanceTipsUI } from \"./ui\";\nimport { useMaintenanceScript } from \"./script\";\n\nexport const MaintenanceTipsWidget = () => {\n const props = useMaintenanceScript();\n return <MaintenanceTipsUI {...props} />;\n};\n","import { FC } from \"react\";\nimport { RestrictedInfo } from \"./restrictedAreas.script\";\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n Divider,\n} from \"@orderly.network/ui\";\n\nexport const RestrictedAreas: FC<RestrictedInfo> = (props: RestrictedInfo) => {\n const modalTitle = \"We're sorry...\";\n return (\n <>\n <Dialog open={props.restrictedAreasOpen}>\n <DialogContent\n closable={false}\n onOpenAutoFocus={(event) => event.preventDefault()}\n className=\"oui-w-[480px] md:oui-w-[480px] sm:oui-w-[320px]\"\n >\n <DialogHeader>\n <DialogTitle>{modalTitle}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-xs md:oui-text-xs sm:oui-text-2xs\">\n <div>\n It seems you are accessing {props.brokerName} from an IP address (\n {props?.ip}) belonging to one of the following countries/regions:\n </div>\n <div>\n {props.invalidRegions?.join(\", \")} , or a restricted IP address\n </div>\n <br />\n {props?.contact?.url && props?.contact?.text && (\n <div>\n Please noted that accessing Orderly Network is not available\n from the countries listed above. If you are not in one of those\n regions and belive this message was received in error, please\n contact{\" \"}\n <a\n className=\"oui-text-link\"\n href={`${props?.contact?.url}`}\n target=\"_blank\"\n >\n {props?.contact?.text}\n </a>\n .\n </div>\n )}\n </DialogBody>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n","import { useAppContext } from \"@orderly.network/react-app\";\nimport { useConfig } from \"@orderly.network/hooks\";\ntype AppContextReturnType = ReturnType<typeof useAppContext>;\n\nexport type RestrictedInfo = AppContextReturnType[\"restrictedInfo\"] & {\n brokerName?: string;\n};\n\nexport const useRestrictedAreasScript = (): RestrictedInfo => {\n const {\n restrictedInfo = {\n ip: \"\",\n invalidRegions: [],\n restrictedAreasOpen: false,\n contact: {\n url: \"\",\n text: \"\",\n },\n },\n } = useAppContext();\n const config = useConfig();\n const brokerName = config.get(\"brokerName\");\n return {\n ...restrictedInfo,\n brokerName,\n };\n};\n","import { useRestrictedAreasScript } from \"./restrictedAreas.script\";\nimport { RestrictedAreas } from \"./restrictedAreas.ui\";\n\nexport const RestrictedAreasWidget = () => {\n const state = useRestrictedAreasScript();\n return <RestrictedAreas {...state} />;\n};\n","import { Box, cn, Grid, useScreen } from \"@orderly.network/ui\";\nimport { MainNavWidget, MainNavWidgetProps } from \"./main/mainNav.widget\";\nimport React, {\n PropsWithChildren,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { SideNavbarWidget } from \"./sidebar\";\nimport { SideBarProps } from \"./sidebar\";\nimport {\n OrderlyContext,\n useChains,\n useLocalStorage,\n} from \"@orderly.network/hooks\";\nimport { isValidElement } from \"react\";\nimport { ExpandableContext, RouterAdapter } from \"./scaffoldContext\";\nimport { checkChainSupport } from \"../utils/chain\";\nimport { FooterProps, FooterWidget } from \"./footer\";\nimport { MaintenanceTipsWidget } from \"./maintenanceTips\";\nimport { RestrictedAreasWidget } from \"./restrictedAreas\";\n\nexport type LayoutProps = {\n /**\n * Custom left sidebar component,\n * if provided, the layout will use this component over the default sidebar component\n */\n gap?: number;\n leftSidebar?: React.ReactNode;\n leftSideProps?: SideBarProps;\n // rightSidebar?: React.ReactNode;\n topBar?: React.ReactNode;\n // topBarProps?:\n mainNavProps?: MainNavWidgetProps;\n footer?: React.ReactNode;\n footerProps?: FooterProps;\n routerAdapter?: RouterAdapter;\n classNames?: {\n root?: string;\n content?: string;\n body?: string;\n leftSidebar?: string;\n topNavbar?: string;\n footer?: string;\n };\n};\n\nexport const Scaffold = (props: PropsWithChildren<LayoutProps>) => {\n const { classNames, footerProps, routerAdapter } = props;\n const [footerHeight, setFooterHeight] = useState(29);\n const footerRef = useRef<HTMLDivElement>(null);\n const [expand, setExpand] = useLocalStorage(\n \"orderly_scaffold_expanded\",\n true\n );\n const [chains] = useChains();\n\n const { networkId } = useContext<any>(OrderlyContext);\n\n const checkChainSupportHandle = (chainId: number | string) => {\n return checkChainSupport(\n chainId,\n networkId === \"testnet\" ? chains.testnet : chains.mainnet\n );\n };\n\n const onExpandChange = (expand: boolean) => {\n setExpand(expand);\n };\n\n useEffect(() => {\n if (!footerRef) {\n return;\n }\n\n const height = footerRef.current?.getBoundingClientRect().height;\n setFooterHeight(height!);\n }, [footerRef]);\n\n const sideBarExpandWidth = props.leftSideProps?.maxWidth || 185;\n const sideBarCollaspedWidth = props.leftSideProps?.minWidth || 98;\n\n const hasLeftSidebar = !!props.leftSidebar;\n const { isMobile } = useScreen();\n\n return (\n <div\n className={cn(\n \"oui-scaffold-root oui-font-semibold\",\n // default text and background color\n \"oui-text-base-contrast oui-bg-base-10\",\n \"oui-flex oui-flex-col\",\n \"oui-overflow-auto oui-custom-scrollbar\",\n classNames?.root\n )}\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n >\n <ExpandableContext.Provider\n value={{\n routerAdapter,\n expanded: expand,\n setExpand: onExpandChange,\n checkChainSupport: checkChainSupportHandle,\n }}\n >\n {/* Top main nav */}\n <Box\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n \"oui-hidden lg:oui-block\",\n // 1024px - 6px (scrollbar widt) = 1018px\n \"oui-min-w-[1018px]\",\n // \"oui-border-b oui-border-line-12\",\n classNames?.topNavbar\n )}\n >\n {props.topBar ?? <MainNavWidget {...props.mainNavProps} />}\n </Box>\n <div\n className={cn(\n \"oui-scaffold-maintenance-tips\",\n \"oui-hidden lg:oui-block\",\n // 1024px - 6px (scrollbar widt) = 1018px\n \"oui-min-w-[1018px]\"\n )}\n >\n {!isMobile && <MaintenanceTipsWidget />}\n </div>\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box height=\"100%\" className={classNames?.content}>\n {props.children}\n </Box>\n ) : (\n // ----------No leftSidebar layout end ---------\n // ---------- left & body layout start ---------\n <Grid\n className={cn(\n \"oui-box-content oui-transition-all oui-flex xl:oui-grid\",\n \"oui-flex-1\",\n classNames?.body\n )}\n style={{\n gridTemplateColumns: `${\n expand\n ? `${sideBarExpandWidth}px`\n : `${sideBarCollaspedWidth}px`\n } 1fr`,\n // gridTemplateRows: \"auto 1fr\",\n // gridTemplateAreas: `\"left main\" \"left main\"`,\n }}\n >\n <div className={cn(classNames?.leftSidebar)}>\n {/* {typeof props.leftSidebar !== \"undefined\" ? ( */}\n {isValidElement(props.leftSidebar) ? (\n props.leftSidebar\n ) : (\n <SideNavbarWidget {...props.leftSideProps} />\n )}\n </div>\n <Box\n width={\"100%\"}\n className={cn(\"oui-overflow-hidden\", classNames?.content)}\n >\n {props.children}\n </Box>\n </Grid>\n // ---------- left & body layout end ---------\n )}\n <Box\n ref={footerRef}\n className={cn(\n \"oui-scaffold-footer oui-w-full oui-bg-base-10\",\n \"oui-fixed oui-bottom-0 oui-z-50\",\n \"oui-hidden lg:oui-flex\",\n \"oui-border-t-[1px] oui-border-line-12\",\n classNames?.footer\n )}\n >\n {props.footer || <FooterWidget {...footerProps} />}\n </Box>\n <RestrictedAreasWidget />\n </ExpandableContext.Provider>\n </div>\n );\n};\n","import { API } from \"@orderly.network/types\";\n\nexport function checkChainSupport(\n chainId: number | string,\n chains: API.Chain[]\n) {\n if (typeof chainId === \"string\") {\n chainId = parseInt(chainId);\n }\n return chains.some((chain) => {\n return chain.network_infos.chain_id === chainId;\n });\n}\n"]}