@orderly.network/ui-scaffold 2.0.7 → 2.0.8-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.d.mts +60 -7
- package/dist/index.d.ts +60 -7
- package/dist/index.js +29 -24
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +7 -7
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +10 -9
package/dist/index.mjs.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/restrictedInfo/restrictedInfo.ui.tsx","../src/components/restrictedInfo/restrictedInfo.script.tsx","../src/components/restrictedInfo/restrictedInfo.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","disabled","WalletMenu","r","e","address","event","useAccount","useChains","useWalletConnector","WalletConnectorModalId","modal","toast","useCallback","useAppContext","ChainSelectorDialogId","useAccountMenu","disconnect","connectedChain","account","connectWallet","disabledConnect","_","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","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","showCampaignButton","showLinkIcon","hideWalletConnectButton","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","RestrictedInfo","ip","content","restrictedOpen","renderContent","useRestrictedInfoScript","restrictedInfo","container","mutiLine","setMutiLine","element","entry","RestrictedInfoWidget","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 disabledConnect?: boolean;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { accountState: state, onDisconnect, onOpenExplorer } = props;\n const disabled = state.validating || props.disabledConnect;\n\n if (\n !disabled &&\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 || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={disabled}\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, disabledConnect } = 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 disabledConnect,\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 disabledConnect?: boolean;\n};\n\nexport const MainNav: FC<PropsWithChildren<MainNavProps>> = (props) => {\n const { className, logo, products, classNames, campaigns, campaignPosition } =\n props;\n\n const showCampaignButton =\n campaignPosition === CampaignPositionEnum.navTailing && campaigns;\n\n const showLinkIcon =\n !props.wrongNetwork &&\n !props.disabledConnect &&\n props.status! >= AccountStatusEnum.SignedIn;\n\n const hideWalletConnectButton =\n !props.disabledConnect && props.wrongNetwork && props.isConnected;\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 {!!showCampaignButton && (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n )}\n <AccountSummaryWidget />\n {showLinkIcon && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n <LinkDeviceWidget />\n </>\n )}\n <ChainMenuWidget />\n {!hideWalletConnectButton && <WalletConnectButtonExtension />}\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, disabledConnect } = 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 disabledConnect ||\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 && !props.disabledConnect) {\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 { currentChainId, wrongNetwork, disabledConnect } = 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 disabledConnect,\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, disabledConnect } = 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 disabledConnect,\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 { cn, Flex } from \"@orderly.network/ui\";\nimport { InfoIcon } from \"../icons\";\nimport { UseRestrictedInfoScriptReturn } from \"./restrictedInfo.script\";\n\nexport type RestrictedInfoProps = UseRestrictedInfoScriptReturn & {\n className?: string;\n};\n\nexport const RestrictedInfo: FC<RestrictedInfoProps> = (props) => {\n const { brokerName } = props;\n const { ip, content, restrictedOpen } = props.restrictedInfo;\n\n if (!restrictedOpen) {\n return;\n }\n\n const renderContent = () => {\n if (typeof content === \"function\") {\n return content({ ip: ip!, brokerName });\n }\n return (\n content || (\n <span>\n You are accessing {brokerName} from an IP address ({ip}) associated\n with a restricted country.\n </span>\n )\n );\n };\n\n return (\n <Flex\n ref={props.container}\n className={cn(\n \"oui-p-2 oui-rounded-xl\",\n \"oui-bg-warning-darken/10 oui-text-warning-darken\",\n props.className\n )}\n >\n <Flex\n className={cn(\n \"oui-min-h-7 oui-gap-1\",\n \"oui-text-2xs md:oui-text-sm oui-leading-4\",\n \"oui-items-start lg:oui-justify-center\",\n props.mutiLine ? \"lg:oui-items-start\" : \"lg:oui-items-center\"\n )}\n >\n <InfoIcon\n size={20}\n className=\"oui-flex-shrink-0 oui-w-4 oui-h-4 lg:oui-w-5 lg:oui-h-5\"\n />\n {renderContent()}\n </Flex>\n </Flex>\n );\n};\n","import { useAppContext } from \"@orderly.network/react-app\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { useEffect, useRef, useState } from \"react\";\n\nexport type UseRestrictedInfoScriptReturn = ReturnType<\n typeof useRestrictedInfoScript\n> & {\n brokerName?: string;\n};\n\nexport const useRestrictedInfoScript = () => {\n const { restrictedInfo } = useAppContext();\n const brokerName = useConfig(\"brokerName\");\n const container = useRef<HTMLDivElement>(null);\n const [mutiLine, setMutiLine] = useState(false);\n\n useEffect(() => {\n const element = container.current;\n\n if (!element) return;\n\n const resizeObserver = new ResizeObserver((entries) => {\n for (let entry of entries) {\n const height = entry.contentRect.height;\n setMutiLine(height > 28);\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.unobserve(element);\n };\n }, []);\n\n return {\n restrictedInfo,\n brokerName,\n container,\n mutiLine,\n };\n};\n","import { FC } from \"react\";\nimport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\nimport { RestrictedInfo, RestrictedInfoProps } from \"./restrictedInfo.ui\";\n\nexport type RestrictedInfoWidgetProps = Pick<RestrictedInfoProps, \"className\">;\n\nexport const RestrictedInfoWidget: FC<RestrictedInfoWidgetProps> = (props) => {\n const state = useRestrictedInfoScript();\n return <RestrictedInfo {...props} {...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 { RestrictedInfoWidget } from \"./restrictedInfo\";\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\n <RestrictedInfoWidget\n className={cn(\n \"oui-mx-3 oui-mt-3\",\n \"oui-hidden lg:oui-block\",\n // 1024px - 6px (scrollbar widt) - 12 * 2 = 994px\n \"oui-min-w-[994px]\"\n )}\n />\n\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 </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/languageSwitcher/languageSwitcher.script.ts","../src/components/languageSwitcher/languageSwitcher.ui.tsx","../src/components/languageSwitcher/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/announcement-tips/ui.tsx","../src/components/announcement-tips/script.tsx","../src/components/announcement-tips/widget.tsx","../src/components/restrictedInfo/restrictedInfo.ui.tsx","../src/components/restrictedInfo/restrictedInfo.script.tsx","../src/components/restrictedInfo/restrictedInfo.widget.tsx","../src/components/scaffold.tsx","../src/components/scaffoldProvider.tsx","../src/utils/chain.ts","../src/components/scaffold.script.ts"],"names":["ExtensionPositionEnum","ExtensionSlot","installExtension","AccountStatusEnum","Button","Divider","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","EVMAvatar","Flex","Text","useTranslation","jsx","jsxs","AccountMenu","props","state","onDisconnect","onOpenExplorer","disabled","WalletMenu","r","e","address","t","event","useAccount","useChains","useWalletConnector","WalletConnectorModalId","modal","toast","useCallback","useAppContext","ChainSelectorDialogId","useAccountMenu","disconnect","connectedChain","account","connectWallet","disabledConnect","_","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","useScreen","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","ScaffoldContext","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","useTrack","EnumTrackerKeys","ExpireSeconds","useLinkDeviceScript","confirm","setConfirm","seconds","setSeconds","secretKey","setSecretKey","url","setUrl","ee","track","chain","createTrackParams","getOrderlyKey","hideDialog","showDialog","onConfirm","copyUrl","timestamp","params","createUrl","str","base64","CopyIcon","SimpleDialog","SimpleDialogFooter","qr","Trans","LinkDevice","LinkDeviceIcon","LinkDeviceContent","Loading","QRCode","LinkDeviceConfirm","actions","QRCodeCanvas","canvasRef","qrcode","height","ctx","cells","tileW","tileH","row","c","w","h","LinkDeviceWidget","i18n","useLocaleContext","useLanguageSwitcherScript","selectedLang","setSelectedLang","languages","lang","LanguageSwitcher","LanguageIcon","header","context","selected","LanguageItem","LanguageSwitcherWidget","MainNav","logo","products","campaigns","showCampaignButton","showLinkIcon","hideWalletConnectButton","isDesktop","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","ChevronLeftIcon","ChevronRightIcon","windowGuard","useQuery","useWS","getMaintentTipsContent","getMaintentDialogContent","useAnnouncementTipsScript","options","currentIndex","setCurrentIndex","setShowAnnouncement","announcements","tips","setTips","maintenanceDialogInfo","setMaintenanceDialogInfo","ws","nextTips","prevTips","unsubscribe","message","tip","maintentanceTip","newTips","announcement","showAnnouncement","AnnouncementTipsUI","isMobile","currentTip","MobileTips","DeskTopTips","RenderTipsType","SwitchTips","ClosePart","tipsCount","type","AnnouncementTipsWidget","hideTips","RestrictedInfo","ip","content","restrictedOpen","renderContent","useObserverElement","useRestrictedInfoScript","restrictedInfo","container","mutiLine","setMutiLine","entry","RestrictedInfoWidget","Grid","isValidElement","OrderlyContext","checkChainSupport","chainId","chains","ScaffoldProvider","checkChainSupportHandle","onExpandChange","expand","useScaffoldScript","topNavbarRef","topNavbarHeight","useRefAndHeight","footerRef","footerHeight","announcementRef","announcementHeight","defaultHeight","deps","setHeight","Scaffold","footerProps","sideBarExpandWidth","sideBarCollaspedWidth","hasLeftSidebar"],"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 Text,\n} from \"@orderly.network/ui\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 disabledConnect?: boolean;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { t } = useTranslation();\n const { accountState: state, onDisconnect, onOpenExplorer } = props;\n const disabled = state.validating || props.disabledConnect;\n\n if (\n !disabled &&\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 || disabled) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant={disabled ? undefined : \"gradient\"}\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={disabled}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n {t(\"connector.connectWallet\")}\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 {t(\"connector.signIn\")}\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 {t(\"connector.enableTrading\")}\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 const { t } = useTranslation();\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>{t(\"connector.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\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const useAccountMenu = (): any => {\n const { t } = useTranslation();\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { connectWallet, disabledConnect } = 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(t(\"connector.walletConnected\"));\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(t(\"connector.walletConnected\"));\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 disabledConnect,\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, useScreen } 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\";\nimport { LanguageSwitcherWidget } from \"../languageSwitcher\";\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 disabledConnect?: boolean;\n};\n\nexport const MainNav: FC<PropsWithChildren<MainNavProps>> = (props) => {\n const { className, logo, products, classNames, campaigns, campaignPosition } =\n props;\n\n const showCampaignButton =\n campaignPosition === CampaignPositionEnum.navTailing && campaigns;\n\n const showLinkIcon =\n !props.wrongNetwork &&\n !props.disabledConnect &&\n props.status! >= AccountStatusEnum.SignedIn;\n\n const hideWalletConnectButton =\n !props.disabledConnect && props.wrongNetwork && props.isConnected;\n\n const { isDesktop } = useScreen();\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 gapX={3}\n className={cn(\n \"oui-main-nav oui-font-semibold\",\n className,\n classNames?.root\n )}\n >\n <Flex\n itemAlign={\"center\"}\n className={cn(\n \"oui-gap-3 2xl:oui-gap-4\",\n // let the left and right views show spacing when overlapping\n \"oui-overflow-hidden\"\n )}\n >\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 {!!showCampaignButton && (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n )}\n <AccountSummaryWidget />\n {showLinkIcon && (\n <>\n <Divider direction=\"vertical\" className=\"oui-h-8\" intensity={8} />\n <LinkDeviceWidget />\n </>\n )}\n <LanguageSwitcherWidget />\n {isDesktop && <ChainMenuWidget />}\n {!hideWalletConnectButton && <WalletConnectButtonExtension />}\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\";\nimport { useTranslation } from \"@orderly.network/i18n\";\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 const { t } = useTranslation();\n\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 {t(\"common.totalValue\")}\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 const { t } = useTranslation();\n\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 {t(\"trading.asset.freeCollateral\")}\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 const { t } = useTranslation();\n\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 {t(\"leverage.currentLeverage\")}\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 const { t } = useTranslation();\n\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 {t(\"leverage.maxLeverage\")}\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 const { t } = useTranslation();\n\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 {t(\"common.unrealizedPnl\")}\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 <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 const { t } = useTranslation();\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>{t(\"common.totalValue\")}</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>{t(\"trading.asset.freeCollateral\")}</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>{t(\"common.unrealizedPnl\")}</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>{t(\"leverage.currentLeverage\")}</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>{t(\"leverage.maxLeverage\")}</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, disabledConnect } = 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 disabledConnect ||\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\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const ChainMenu = (props: UseChainMenuScriptReturn) => {\n const { t } = useTranslation();\n\n if (props.wrongNetwork && props.isConnected && !props.disabledConnect) {\n return (\n <Tooltip\n open\n hideWhenDetached\n content={t(\"connector.wrongNetwork.tooltip\")}\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 {t(\"connector.wrongNetwork\")}\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 { currentChainId, wrongNetwork, disabledConnect } = 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 disabledConnect,\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, disabledConnect } = 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 disabledConnect,\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 ScaffoldState = {\n routerAdapter?: RouterAdapter;\n expanded?: boolean;\n setExpand: (expand: boolean) => void;\n checkChainSupport: (chainId: number | string) => boolean;\n topNavbarHeight: number;\n footerHeight: number;\n announcementHeight: number;\n};\n\nexport const ScaffoldContext = createContext<ScaffoldState>(\n {} as ScaffoldState\n);\n\nexport const useScaffoldContext = () => {\n return useContext(ScaffoldContext);\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\n color={isActive ? \"brand\" : \"inherit\"}\n angle={45}\n className=\"oui-break-normal oui-whitespace-nowrap\"\n >\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, useTrack } 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 const {track} = useTrack();\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 track(\n EnumTrackerKeys.signLinkDeviceMessageSuccess,\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 track(EnumTrackerKeys.clickLinkDeviceButton, createTrackParams());\n }, [account]);\n\n const hideDialog = useCallback(() => {\n setOpen(false);\n }, []);\n\n const onConfirm = useCallback(() => {\n setConfirm(true);\n track(EnumTrackerKeys.linkDeviceModalClickConfirm, {});\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\";\nimport { MainLogo } from \"../mainLogo\";\nimport { UseLinkDeviceScriptReturn } from \"./linkDevice.script\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\n\nexport type LinkDeviceProps = UseLinkDeviceScriptReturn;\n\nexport const LinkDevice: FC<LinkDeviceProps> = (props) => {\n const { t } = useTranslation();\n\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\">{t(\"common.confirm\")}</Text>}\n open={props.open}\n onOpenChange={props.onOpenChange}\n size=\"sm\"\n contentProps={{\n onInteractOutside: (e) => {\n const el = document.querySelector(\"#privy-dialog\");\n if (el) {\n e.preventDefault();\n }\n },\n }}\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 { t } = useTranslation();\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n primary: {\n label: t(\"common.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 {t(\"linkDevice.scanQRCode\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center\"\n >\n {/* @ts-ignore */}\n <Trans i18nKey=\"linkDevice.createQRCode.success.description\" />\n </Text>\n\n <Text size=\"sm\" intensity={54}>\n {`${t(\"common.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 {t(\"linkDevice.createQRCode.success.copyUrl\")}\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 { t } = useTranslation();\n\n const actions: SimpleDialogFooterProps[\"actions\"] = {\n secondary: {\n label: t(\"common.cancel\"),\n onClick: props.hideDialog,\n className: \"oui-flex-1\",\n size: \"md\",\n },\n primary: {\n label: t(\"common.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 {t(\"linkDevice.createQRCode.linkMobileDevice\")}\n </Text>\n <Text\n size=\"2xs\"\n intensity={54}\n weight=\"regular\"\n className=\"oui-text-center oui-mt-3\"\n >\n {/* @ts-ignore */}\n <Trans\n i18nKey=\"linkDevice.createQRCode.linkMobileDevice.description\"\n values={{\n hostname: window.location.hostname,\n }}\n />\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 const { t } = useTranslation();\n\n return (\n <Flex direction=\"column\" gap={5}>\n <Spinner />\n <Text size=\"sm\" intensity={98}>\n {t(\"linkDevice.createQRCode.loading.description\")}\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 fillOpacity=\"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 { useState } from \"react\";\nimport { i18n, useLocaleContext } from \"@orderly.network/i18n\";\n\nexport type LanguageSwitcherScriptReturn = ReturnType<\n typeof useLanguageSwitcherScript\n>;\n\nexport const useLanguageSwitcherScript = () => {\n const [open, setOpen] = useState(false);\n const [selectedLang, setSelectedLang] = useState(i18n.language);\n\n const { languages } = useLocaleContext();\n\n const onLangChange = (lang: string) => {\n setSelectedLang(lang);\n i18n.changeLanguage(lang);\n setOpen(false);\n };\n\n return {\n open,\n onOpenChange: setOpen,\n languages,\n selectedLang,\n onLangChange,\n };\n};\n","import {\n cn,\n Flex,\n DropdownMenuContent,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n Text,\n Box,\n} from \"@orderly.network/ui\";\nimport { FC, SVGProps } from \"react\";\nimport { LanguageSwitcherScriptReturn } from \"./languageSwitcher.script\";\nimport { useTranslation, Language } from \"@orderly.network/i18n\";\n\ntype LanguageSwitcherProps = LanguageSwitcherScriptReturn;\n\nexport const LanguageSwitcher: FC<LanguageSwitcherProps> = (props) => {\n const { languages } = props;\n const { t } = useTranslation();\n\n if (languages.length <= 1) {\n return null;\n }\n\n const trigger = (\n <div>\n <LanguageIcon\n className={cn(\n \"oui-w-6 oui-h-6 lg:oui-w-5 lg:oui-h-5\",\n \"oui-text-base-contrast-80 oui-cursor-pointer\"\n )}\n />\n </div>\n );\n\n const header = (\n <Box height={24}>\n <Text>{t(\"common.language\")}</Text>\n </Box>\n );\n\n const context = (\n <Box\n mt={4}\n className={cn(\n //40 * 8 + 4 * 7 = 348px, more than 8 will show scrollbars\n \"oui-max-h-[348px] oui-overflow-y-auto oui-custom-scrollbar\",\n \"oui-grid oui-gap-1 oui-pr-[6px]\"\n )}\n >\n {languages.map((item) => {\n const selected = props.selectedLang === item.localCode;\n return (\n <LanguageItem\n key={item.localCode}\n selected={selected}\n item={item}\n onClick={() => props.onLangChange(item.localCode)}\n />\n );\n })}\n </Box>\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={10}\n align=\"start\"\n collisionPadding={{ right: 16 }}\n className={cn(\n \"oui-w-[320px] lg:oui-w-[360px]\",\n \"oui-bg-base-8 oui-p-5 oui-rounded-xl\",\n \"oui-border oui-border-line-6\",\n \"oui-font-semibold\"\n )}\n >\n {header}\n {context}\n </DropdownMenuContent>\n </DropdownMenuPortal>\n </DropdownMenuRoot>\n );\n};\n\nexport const LanguageItem = (props: {\n selected: boolean;\n item: Language;\n onClick?: () => void;\n}) => {\n const { item } = props;\n return (\n <button\n className={cn(\n \"oui-group oui-rounded-md hover:oui-bg-base-5\",\n props.selected && \"oui-bg-base-5\"\n )}\n onClick={props.onClick}\n >\n <Flex justify=\"between\" className=\"oui-h-10\" px={3}>\n <Flex itemAlign=\"center\" width=\"100%\" className=\"oui-gap-x-[6px]\">\n <Text\n size=\"2xs\"\n className={cn(\n \"oui-text-base-contrast-36 group-hover:oui-text-base-contrast-80\",\n props.selected && \"oui-text-base-contrast-80\"\n )}\n >\n {item.displayName}\n </Text>\n </Flex>\n {props.selected && (\n <Box gradient=\"brand\" r=\"full\" width={4} height={4} />\n )}\n </Flex>\n </button>\n );\n};\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size?: number;\n}\n\nexport const LanguageIcon: FC<IconProps> = (props) => {\n const { size = 20, ...rest } = props;\n\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=\"M10 1.678a8.333 8.333 0 1 0 0 16.667 8.333 8.333 0 1 0 0-16.667m0 1.667c1.1 0 2.308 2.527 2.492 5.831l-4.975.01c.183-3.304 1.382-5.84 2.482-5.84m-2.943.67c-.717 1.393-1.1 3.242-1.193 5.165L3.38 9.174c.248-2.271 1.778-4.176 3.676-5.159m5.889.003c1.898.983 3.388 2.835 3.676 5.168l-2.483-.008c-.078-2-.52-3.758-1.193-5.16m-9.56 6.83 2.483-.02c.092 1.923.478 3.803 1.191 5.182a6.79 6.79 0 0 1-3.674-5.162m4.118.007 4.975-.01c-.184 3.303-1.38 5.833-2.48 5.833s-2.312-2.519-2.495-5.823m6.64-.008 2.471-.008c-.287 2.208-1.68 4.18-3.672 5.162.74-1.53 1.108-3.23 1.2-5.154\" />\n </svg>\n );\n};\n","import { useLanguageSwitcherScript } from \"./languageSwitcher.script\";\nimport { LanguageSwitcher } from \"./languageSwitcher.ui\";\n\nexport const LanguageSwitcherWidget = () => {\n const state = useLanguageSwitcherScript();\n return <LanguageSwitcher {...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\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const Footer: FC<FooterReturns & FooterProps> = (props) => {\n const { t } = useTranslation();\n\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\">{t(\"scaffold.footer.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 {t(\"scaffold.footer.joinCommunity\")}\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 {t(\"scaffold.footer.poweredBy\")}\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 DialogHeader,\n DialogTitle,\n Divider,\n Flex,\n} from \"@orderly.network/ui\";\nimport { CloseIcon, InfoIcon } from \"../icons\";\nimport { MaintenanceTipInterface } from \"./script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport const MaintenanceTipsUI = (props: MaintenanceTipInterface) => {\n const { showTips, showDialog, tipsContent, closeTips, dialogContent } = props;\n const { t } = useTranslation();\n\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>{t(\"scaffold.maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs md:oui-text-xs\">\n {dialogContent}\n </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\n size={20}\n className=\"oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 \"\n />\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 { useEffect, useMemo, useState } from \"react\";\nimport { format } from \"date-fns\";\nimport { UTCDateMini } from \"@date-fns/utc\";\nimport { getTimestamp } from \"@orderly.network/utils\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\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 { t } = useTranslation();\n const [showTips, setShowTips] = useState(false);\n const [showDialog, setShowDialog] = useState(false);\n const { startTime, endTime, status, brokerName } = useMaintenanceStatus();\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\n const tipsContent = t(\"scaffold.maintenance.tips.description\", {\n brokerName,\n startDate,\n endDate,\n });\n\n const dialogContent = t(\"scaffold.maintenance.dialog.description\", {\n brokerName,\n endDate,\n });\n\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 {\n Box,\n ChevronLeftIcon,\n ChevronRightIcon,\n CloseIcon,\n cn,\n DialogTitle,\n DialogHeader,\n Dialog,\n DialogBody,\n DialogContent,\n Divider,\n Flex,\n useScreen,\n} from \"@orderly.network/ui\";\nimport {\n AnnouncementTips,\n AnnouncementType,\n useAnnouncementTipsScript,\n} from \"./script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\n\nexport type AnnouncementTipsUIProps = ReturnType<\n typeof useAnnouncementTipsScript\n> & {\n style?: React.CSSProperties;\n className?: string;\n hideTips?: boolean;\n};\n\nexport const AnnouncementTipsUI = (props: AnnouncementTipsUIProps) => {\n const {\n closeTips,\n tips,\n currentIndex,\n nextTips,\n prevTips,\n maintenanceDialogInfo,\n showAnnouncement,\n } = props;\n const { isMobile } = useScreen();\n const { t } = useTranslation();\n\n if (maintenanceDialogInfo) {\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>{t(\"scaffold.maintenance.dialog.title\")}</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody className=\"oui-text-2xs md:oui-text-xs\">\n {maintenanceDialogInfo}\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n\n if (!showAnnouncement) {\n return null;\n }\n\n const currentTip = tips[currentIndex];\n\n return (\n <Flex\n style={props.style}\n className={cn(\n \"oui-text-2xs md:oui-text-sm oui-leading-4\",\n \"oui-relative oui-gap-1 oui-rounded-xl\",\n \"md:oui-w-full oui-pl-4 oui-py-3 oui-pr-0 md:oui-pr-[60px]\",\n \"oui-min-h-[48px] md:oui-h-[34px] md:oui-min-h-[34px]\",\n \"oui-justify-start oui-items-start\",\n \"xl:oui-justify-center xl:oui-items-center xl:oui-px-4\",\n props.className\n )}\n >\n {isMobile ? (\n <MobileTips\n currentTip={currentTip}\n currentIndex={currentIndex}\n tips={tips}\n prevTips={prevTips}\n nextTips={nextTips}\n closeTips={closeTips}\n />\n ) : (\n <DeskTopTips\n currentTip={currentTip}\n currentIndex={currentIndex}\n tips={tips}\n prevTips={prevTips}\n nextTips={nextTips}\n closeTips={closeTips}\n />\n )}\n </Flex>\n );\n};\n\nconst DeskTopTips = (props: {\n currentTip: AnnouncementTips;\n currentIndex: number;\n tips: AnnouncementTips[];\n prevTips: () => void;\n nextTips: () => void;\n closeTips: () => void;\n}) => {\n const { currentTip, currentIndex, tips, prevTips, nextTips, closeTips } =\n props;\n return (\n <>\n <div\n className={cn(\n \"oui-flex oui-items-start oui-justify-start oui-gap-1 oui-mx-[120px]\",\n currentTip.url ? \"oui-cursor-pointer\" : \"\"\n )}\n >\n <RenderTipsType type={currentTip.type} />\n <Box className=\"oui-font-semibold oui-leading-4 oui-ml-2 oui-text-base-contrast-80 oui-line-clamp-1 oui-overflow-hidden oui-text-ellipsis\">\n {currentTip.content}\n </Box>\n </div>\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-center oui-gap-1\",\n \"oui-absolute oui-right-2 md:oui-right-4 oui-top-2/4 -oui-translate-y-2/4\"\n )}\n >\n <SwitchTips\n currentIndex={currentIndex}\n tipsCount={tips.length}\n prevTips={prevTips}\n nextTips={nextTips}\n />\n <ClosePart closeTips={closeTips} />\n </div>\n </>\n );\n};\n\nconst MobileTips = (props: {\n currentTip: AnnouncementTips;\n currentIndex: number;\n tips: AnnouncementTips[];\n prevTips: () => void;\n nextTips: () => void;\n closeTips: () => void;\n}) => {\n const { currentTip, currentIndex, tips, prevTips, nextTips, closeTips } =\n props;\n return (\n <>\n <div\n className={cn(\n \"oui-flex oui-flex-col oui-items-start oui-justify-start oui-gap-5 oui-w-full oui-mr-[60px] \",\n currentTip.url ? \"oui-cursor-pointer\" : \"\"\n )}\n >\n <Box className=\"oui-font-semibold oui-leading-4 oui-ml-2 oui-text-base-contrast-80 oui-text-sm oui-line-clamp-2 oui-h-[36px] oui-overflow-hidden oui-text-ellipsis\">\n {currentTip.content}\n </Box>\n\n <div className=\"oui-flex oui-items-center oui-justify-between oui-gap-1 oui-w-full\">\n <RenderTipsType type={currentTip.type} />\n <SwitchTips\n currentIndex={currentIndex}\n tipsCount={tips.length}\n prevTips={prevTips}\n nextTips={nextTips}\n />\n </div>\n </div>\n\n <div className={cn(\"oui-absolute oui-right-4 oui-top-3\")}>\n <ClosePart closeTips={closeTips} />\n </div>\n </>\n );\n};\n\nconst SwitchTips = ({\n currentIndex,\n tipsCount,\n prevTips,\n nextTips,\n}: {\n currentIndex: number;\n tipsCount: number;\n prevTips: () => void;\n nextTips: () => void;\n}) => {\n return (\n <div className=\"oui-flex oui-items-center oui-justify-center oui-gap-1 oui-text-base-contrast-54\">\n <ChevronLeftIcon\n size={20}\n opacity={1}\n className=\" oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 oui-cursor-pointer \"\n onClick={prevTips}\n />\n <div className=\"oui-text-base-contrast-54 oui-text-xs\">\n {currentIndex + 1}/{tipsCount}\n </div>\n <ChevronRightIcon\n size={20}\n opacity={1}\n className=\"oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-flex-shrink-0 oui-w-4 md:oui-w-5 oui-h-4 md:oui-h-5 oui-cursor-pointer \"\n onClick={nextTips}\n />\n </div>\n );\n};\n\nconst ClosePart = ({ closeTips }: { closeTips: () => void }) => {\n return (\n <CloseIcon\n size={16}\n opacity={1}\n className=\" oui-ml-4 md:oui-ml-5 oui-w-5 oui-h-5 oui-text-base-contrast-80 md:oui-text-base-contrast-54 hover:oui-text-base-contrast-80 oui-cursor-pointer\"\n onClick={closeTips}\n />\n );\n};\n\nconst RenderTipsType = ({ type }: { type?: AnnouncementType }) => {\n if (type === AnnouncementType.Listing) {\n return (\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-center oui-px-2 oui-h-[18px] oui-rounded-sm \",\n \"oui-bg-primary/15 oui-text-primary oui-text-2xs oui-font-medium\"\n )}\n >\n Listing\n </div>\n );\n }\n if (type === AnnouncementType.Maintenance) {\n return (\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-center oui-px-2 oui-h-[18px] oui-rounded-sm \",\n \"oui-bg-[rgba(232,136,0,0.15)] oui-text-warning-darken oui-text-2xs oui-font-medium\"\n )}\n >\n Maintenance\n </div>\n );\n }\n if (type === AnnouncementType.Delisting) {\n return (\n <div\n className={cn(\n \"oui-flex oui-items-center oui-justify-center oui-px-2 oui-h-[18px] oui-rounded-sm \",\n \"oui-bg-[rgba(232,136,0,0.15)] oui-text-warning-darken oui-text-2xs oui-font-medium\"\n )}\n >\n Delisting\n </div>\n );\n }\n return <div />;\n};\n","import { UTCDateMini } from \"@date-fns/utc\";\nimport { getTimestamp, windowGuard } from \"@orderly.network/utils\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { format } from \"date-fns\";\nimport { useMaintenanceStatus, useQuery, useWS } from \"@orderly.network/hooks\";\nimport { API, WSMessage } from \"@orderly.network/types\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\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\nconst getMaintentTipsContent = (\n brokerName: string,\n startDate: string,\n endDate: string\n) =>\n i18n.t(\"scaffold.maintenance.tips.description\", {\n brokerName,\n startDate,\n endDate,\n });\n\nconst getMaintentDialogContent = (brokerName: string, endDate: string) =>\n i18n.t(\"scaffold.maintenance.dialog.description\", {\n brokerName,\n endDate,\n });\n\nexport enum AnnouncementType {\n Listing = \"listing\",\n Maintenance = \"maintenance\",\n Delisting = \"delisting\",\n}\n\nexport interface AnnouncementTips {\n announcementId: string;\n type?: AnnouncementType;\n content: string;\n url?: string;\n}\n\nexport type AnnouncementTipsScriptOptions = {\n hideTips?: boolean;\n};\n\nexport const useAnnouncementTipsScript = (\n options?: AnnouncementTipsScriptOptions\n) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const { setShowAnnouncement } = useAppContext();\n const { data: announcements } = useQuery<API.Announcement[]>(\n `/v1/public/announcement`,\n {\n revalidateOnFocus: false,\n refreshInterval: 60 * 60 * 1000, // refresh every 1 hour\n }\n );\n const [tips, setTips] = useState<AnnouncementTips[]>([]);\n\n const [maintenanceDialogInfo, setMaintenanceDialogInfo] = useState<\n string | undefined\n >(undefined);\n\n const [showTips, setShowTips] = useState(() =>\n window.sessionStorage.getItem(\"announcementTips\") === \"hidden\"\n ? false\n : true\n );\n const ws = useWS();\n\n const closeTips = useCallback(() => {\n windowGuard(() => {\n window.sessionStorage.setItem(\"announcementTips\", \"hidden\");\n setShowTips(false);\n });\n }, []);\n\n const nextTips = () => {\n setCurrentIndex((currentIndex + 1) % tips.length);\n };\n\n const prevTips = () => {\n setCurrentIndex((currentIndex - 1 + tips.length) % tips.length);\n };\n\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 useEffect(() => {\n const unsubscribe = ws.subscribe(`announcement`, {\n onMessage: (message: WSMessage.Announcement) => {\n if (message) {\n setTips((prevTips) => [\n ...prevTips.filter(\n (tip) => tip.announcementId !== message.announcement_id\n ),\n {\n announcementId: message.announcement_id,\n content: message.message,\n url: message.url,\n },\n ]);\n }\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n }, []);\n\n useEffect(() => {\n if (!announcements) {\n return;\n }\n if (!announcements.length) {\n setTips((prevTips) =>\n prevTips.filter((tip) => tip.announcementId !== \"-1\")\n );\n return;\n }\n setTips((prevTips) => {\n const tips = new Set(prevTips.map((tip) => tip.announcementId));\n const maintentanceTip = prevTips.find(\n (tip) => tip.announcementId === \"-1\"\n );\n const newTips: AnnouncementTips[] = [];\n announcements.forEach((announcement) => {\n if (tips.has(announcement.announcement_id)) {\n return;\n }\n newTips.push({\n announcementId: announcement.announcement_id,\n content: announcement.message,\n url: announcement.url,\n });\n });\n if (maintentanceTip) {\n newTips.unshift(maintentanceTip);\n }\n return newTips;\n });\n }, [announcements]);\n\n useEffect(() => {\n console.log(\"-- start time\", {\n startTime,\n status,\n });\n if (status === 2) {\n setMaintenanceDialogInfo(getMaintentDialogContent(brokerName, endDate));\n return;\n }\n setMaintenanceDialogInfo(undefined);\n\n if (startTime) {\n if (startTime < getTimestamp() + oneDay) {\n setTips((prevTips) => [\n {\n announcementId: \"-1\",\n type: AnnouncementType.Maintenance,\n content: getMaintentTipsContent(brokerName, startDate, endDate),\n },\n ...prevTips.filter(\n (tip) => tip.type !== AnnouncementType.Maintenance\n ),\n ]);\n }\n } else {\n // remove maintenance tip\n setTips((prevTips) =>\n prevTips.filter((tip) => tip.announcementId !== \"-1\")\n );\n }\n }, [startTime, status, endDate, brokerName]);\n\n const showAnnouncement = useMemo(() => {\n return !!tips.length && showTips && !options?.hideTips;\n }, [tips, showTips, options?.hideTips]);\n\n useEffect(() => {\n setShowAnnouncement(showAnnouncement);\n }, [showAnnouncement]);\n\n return {\n maintenanceDialogInfo,\n tips,\n currentIndex,\n showTips,\n closeTips,\n nextTips,\n prevTips,\n showAnnouncement,\n };\n};\n","import { useAnnouncementTipsScript } from \"./script\";\nimport { AnnouncementTipsUI, AnnouncementTipsUIProps } from \"./ui\";\n\nexport type AnnouncementTipsWidgetProps = Pick<\n AnnouncementTipsUIProps,\n \"style\" | \"className\" | \"hideTips\"\n>;\n\nexport const AnnouncementTipsWidget = (props: AnnouncementTipsWidgetProps) => {\n const { hideTips, ...rest } = props;\n const state = useAnnouncementTipsScript({ hideTips });\n return <AnnouncementTipsUI {...state} {...rest} />;\n};\n","import { FC } from \"react\";\nimport { cn, Flex } from \"@orderly.network/ui\";\nimport { InfoIcon } from \"../icons\";\nimport { UseRestrictedInfoScriptReturn } from \"./restrictedInfo.script\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nexport type RestrictedInfoProps = UseRestrictedInfoScriptReturn & {\n className?: string;\n};\n\nexport const RestrictedInfo: FC<RestrictedInfoProps> = (props) => {\n const { brokerName } = props;\n const { ip, content, restrictedOpen } = props.restrictedInfo || {};\n const { t } = useTranslation();\n\n if (!restrictedOpen) {\n return;\n }\n\n const renderContent = () => {\n if (typeof content === \"function\") {\n return <span>{content({ ip: ip!, brokerName })}</span>;\n }\n return (\n content || (\n <span>\n {t(\"scaffold.restrictedInfo.description.default\", {\n brokerName,\n ip,\n })}\n </span>\n )\n );\n };\n\n return (\n <Flex\n ref={props.container}\n justify=\"center\"\n className={cn(\n \"oui-rounded-xl oui-p-[7px]\",\n \"oui-text-warning-darken\",\n props.className\n )}\n >\n <Flex\n className={cn(\n \"oui-min-h-[20px] oui-gap-1\",\n \"oui-text-2xs md:oui-text-sm oui-leading-4\",\n \"oui-items-start lg:oui-justify-center\",\n props.mutiLine ? \"lg:oui-items-start\" : \"lg:oui-items-center\"\n )}\n >\n <InfoIcon\n size={20}\n className=\"oui-flex-shrink-0 oui-w-4 oui-h-4 lg:oui-w-5 lg:oui-h-5\"\n />\n {renderContent()}\n </Flex>\n </Flex>\n );\n};\n","import { useRef, useState } from \"react\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { useConfig } from \"@orderly.network/hooks\";\nimport { useObserverElement } from \"@orderly.network/ui\";\n\nexport type UseRestrictedInfoScriptReturn = ReturnType<\n typeof useRestrictedInfoScript\n> & {\n brokerName?: string;\n};\n\nexport const useRestrictedInfoScript = () => {\n const { restrictedInfo } = useAppContext();\n const brokerName = useConfig(\"brokerName\");\n const container = useRef<HTMLDivElement>(null);\n const [mutiLine, setMutiLine] = useState(false);\n\n useObserverElement(container.current, (entry) => {\n setMutiLine(entry.contentRect.height > 28);\n });\n\n return {\n restrictedInfo,\n brokerName,\n container,\n mutiLine,\n };\n};\n","import { FC } from \"react\";\nimport { useRestrictedInfoScript } from \"./restrictedInfo.script\";\nimport { RestrictedInfo, RestrictedInfoProps } from \"./restrictedInfo.ui\";\n\nexport type RestrictedInfoWidgetProps = Pick<RestrictedInfoProps, \"className\">;\n\nexport const RestrictedInfoWidget: FC<RestrictedInfoWidgetProps> = (props) => {\n const state = useRestrictedInfoScript();\n return <RestrictedInfo {...props} {...state} />;\n};\n","import React, { PropsWithChildren } from \"react\";\nimport { Box, cn, Grid } from \"@orderly.network/ui\";\nimport { MainNavWidget, MainNavWidgetProps } from \"./main/mainNav.widget\";\nimport { SideNavbarWidget } from \"./sidebar\";\nimport { SideBarProps } from \"./sidebar\";\nimport { isValidElement } from \"react\";\nimport { RouterAdapter } from \"./scaffoldContext\";\nimport { FooterProps, FooterWidget } from \"./footer\";\nimport { RestrictedInfoWidget } from \"./restrictedInfo\";\nimport { AnnouncementTipsWidget } from \"./announcement-tips\";\nimport { ScaffoldProvider } from \"./scaffoldProvider\";\nimport { useScaffoldScript } from \"./scaffold.script\";\n\nexport type ScaffoldProps = {\n /**\n * Custom left sidebar component,\n * if provided, the layout will use this component over the default sidebar component\n */\n leftSidebar?: React.ReactNode;\n leftSideProps?: SideBarProps;\n topBar?: React.ReactNode;\n mainNavProps?: MainNavWidgetProps;\n footer?: React.ReactNode;\n footerProps?: FooterProps;\n routerAdapter?: RouterAdapter;\n classNames?: {\n // root = topNavbar + container + footer\n root?: string;\n container?: string;\n content?: string;\n // body = leftSidebar + content\n body?: string;\n leftSidebar?: string;\n topNavbar?: string;\n footer?: string;\n };\n};\n\nexport const Scaffold = (props: PropsWithChildren<ScaffoldProps>) => {\n const { classNames, footerProps, routerAdapter } = props;\n\n const {\n topNavbarHeight,\n footerHeight,\n topNavbarRef,\n footerRef,\n announcementRef,\n announcementHeight,\n restrictedInfo,\n expand,\n setExpand,\n isMobile,\n } = useScaffoldScript();\n\n const sideBarExpandWidth = props.leftSideProps?.maxWidth || 185;\n const sideBarCollaspedWidth = props.leftSideProps?.minWidth || 98;\n const hasLeftSidebar = !!props.leftSidebar;\n\n const renderContent = () => {\n if (isMobile) {\n return (\n <>\n <div className=\"oui-fixed oui-left-0 oui-right-0 oui-top-0 oui-z-50\">\n <RestrictedInfoWidget className=\"oui-bg-base-6 oui-mx-1\" />\n\n <AnnouncementTipsWidget\n className=\"oui-bg-base-6 oui-mx-1\"\n hideTips={restrictedInfo?.restrictedOpen}\n />\n </div>\n {props.children}\n </>\n );\n }\n return (\n <div\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\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 >\n {/* topNavbar */}\n <Box\n ref={topNavbarRef}\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n classNames?.topNavbar\n )}\n >\n {props.topBar ?? <MainNavWidget {...props.mainNavProps} />}\n </Box>\n <div\n className={cn(\n \"oui-scaffold-container\",\n \"oui-relative oui-h-full\",\n // 1024px - 6px (scrollbar widt) = 1018px\n \"oui-min-w-[1018px]\",\n props.classNames?.container\n )}\n >\n <Box px={3} ref={announcementRef}>\n <RestrictedInfoWidget\n className={cn(\n \"oui-scaffold-restricted-info\",\n \"oui-relative oui-z-[1]\",\n \"oui-mt-3\",\n \"oui-bg-base-9\",\n // 1024px - 6px (scrollbar widt) - 12 * 2px (padding) = 994px\n \"oui-min-w-[994px]\"\n )}\n />\n <AnnouncementTipsWidget\n className={cn(\n \"oui-scaffold-maintenance-tips\",\n \"oui-mt-3\",\n \"oui-relative oui-z-[1]\",\n \"oui-bg-base-9\",\n // 1024px - 6px (scrollbar widt) - 12 * 2px (padding) = 994px\n \"oui-min-w-[994px]\"\n )}\n hideTips={restrictedInfo.restrictedOpen}\n />\n </Box>\n\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box height=\"100%\" className={cn(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 oui-min-h-full\",\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 </div>\n\n {/* footer */}\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-border-t-[1px] oui-border-line-12\",\n classNames?.footer\n )}\n >\n {props.footer || <FooterWidget {...footerProps} />}\n </Box>\n </div>\n );\n };\n\n return (\n <ScaffoldProvider\n routerAdapter={routerAdapter}\n expanded={expand}\n setExpand={setExpand}\n topNavbarHeight={topNavbarHeight}\n footerHeight={footerHeight}\n announcementHeight={announcementHeight}\n >\n {renderContent()}\n </ScaffoldProvider>\n );\n};\n","import { OrderlyContext, useChains } from \"@orderly.network/hooks\";\nimport { ScaffoldContext, ScaffoldState } from \"./scaffoldContext\";\nimport { FC, ReactNode, useContext } from \"react\";\nimport { checkChainSupport } from \"../utils/chain\";\n\nexport type ScaffoldProviderProps = {\n children: ReactNode;\n} & Omit<ScaffoldState, \"checkChainSupport\">;\n\nexport const ScaffoldProvider: FC<ScaffoldProviderProps> = (props) => {\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 props.setExpand(expand);\n };\n\n return (\n <ScaffoldContext.Provider\n value={{\n routerAdapter: props.routerAdapter,\n expanded: props.expanded,\n setExpand: onExpandChange,\n checkChainSupport: checkChainSupportHandle,\n topNavbarHeight: props.topNavbarHeight,\n footerHeight: props.footerHeight,\n announcementHeight: props.announcementHeight,\n }}\n >\n {props.children}\n </ScaffoldContext.Provider>\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","import { useEffect, useRef, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { useObserverElement, useScreen } from \"@orderly.network/ui\";\n\nexport const useScaffoldScript = () => {\n const { restrictedInfo, showAnnouncement } = useAppContext();\n\n const [topNavbarRef, topNavbarHeight] = useRefAndHeight(48);\n const [footerRef, footerHeight] = useRefAndHeight(29);\n const [announcementRef, announcementHeight] = useRefAndHeight(0, [\n showAnnouncement,\n ]);\n\n const [expand, setExpand] = useLocalStorage(\n \"orderly_scaffold_expanded\",\n true\n );\n\n const { isMobile } = useScreen();\n\n return {\n topNavbarRef,\n footerRef,\n topNavbarHeight,\n footerHeight,\n announcementRef,\n announcementHeight,\n restrictedInfo,\n expand,\n setExpand,\n isMobile,\n };\n};\n\nconst useRefAndHeight = (defaultHeight: number, deps: any[] = []) => {\n const ref = useRef<HTMLDivElement>(null);\n const [height, setHeight] = useState(defaultHeight);\n\n useObserverElement(ref.current, (entry) => {\n setHeight(entry.contentRect.height);\n });\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n const height = ref.current?.getBoundingClientRect().height;\n setHeight(height!);\n }, [ref, ...deps]);\n\n return [ref, height] as const;\n};\n"]}
|