@orderly.network/ui-scaffold 2.0.0 → 2.0.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/accountMenu/menu.ui.tsx","../src/components/accountMenu/useWidgetBuilder.script.ts","../src/components/scaffoldContext.ts","../src/components/accountMenu/menu.widget.tsx","../src/components/main/mainNav.ui.tsx","../src/components/main/navItem.tsx","../src/components/main/mainNavItems.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/useWidgetBuilder.script.ts","../src/components/chainMenu/chainMenu.widget.tsx","../src/components/main/useWidgetBuilder.script.ts","../src/components/main/campaignButton.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/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/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/scaffold.tsx","../src/utils/chain.ts"],"names":["AccountStatusEnum","Button","Divider","DropdownMenuContent","DropdownMenuGroup","DropdownMenuItem","DropdownMenuPortal","DropdownMenuRoot","DropdownMenuTrigger","EVMAvatar","Flex","Text","Tooltip","jsx","jsxs","AccountMenu","props","state","onDisconnect","onOpenExplorer","r","e","WalletMenu","address","event","useAccount","useChains","useWalletConnector","WalletConnectorModalId","modal","toast","useCallback","createContext","useContext","ExpandableContext","useScaffoldContext","useAppContext","ChainSelectorId","useAccountMenu","disconnect","connectedChain","account","checkChainSupport","connectWallet","_","findByChainId","onCrateAccount","res","err","onCreateOrderlyKey","switchChain","status","statusChangeHandler","error","connect","nextState","chainInfo","explorer_base_url","AccountMenuWidget","useMemo","ChevronDownIcon","PopoverContent","Box","cn","PopoverAnchor","PopoverRoot","cloneElement","useRef","useState","Fragment","NavItem","classNames","currentPath","item","onClick","buttonProps","isActive","onClickHandler","button","ItemIcon","SubMenus","subItem","open","setOpen","timer","onMouseEnter","index","SubMenu","SubMenuTitle","name","Tag","OutlinkIcon","ICON_CLASSNAME","MainNavItems","items","ProductItem","active","ProductsMenu","onItemClick","current","className","currentItem","product","Logo","EyeCloseIcon","EyeIcon","Popover","AccountSummary","type","rest","element","FreeCollateral","UnrealPnL","CurrentLeverage","MaxLeverage","TotalValue","AccountInfoPopover","totalValue","visible","onToggleVisibility","freeCollateral","currentLeverage","IdentityButton","useLeverage","useLocalStorage","useMarginRatio","usePositionStream","useCollateral","useTotalValueBuilderScript","setType","setVisible","aggregated","totalUnrealizedROI","wrongNetwork","maxLeverage","onTypeChange","unavailable","AccountSummaryWidget","Select","ChainMenu","useConfig","useEffect","useChainMenuBuilderScript","chains","setChain","currentChainId","setCurrentChainId","onChainChanged","networkId","firstChain","onChainChange","chain","ChainMenuWidget","CampaignPositionEnum","useMainNavBuilder","campaignPosition","routerAdapter","setCurrent","currentProduct","setCurrentProduct","onItemClickHandler","scope","lastItem","args","mainNavConfig","config","converted","CampaignButton","MainNav","logo","products","campaigns","children","MainNavWidget","memo","tv","menuItemVariants","MenuItem","mode","SideMenus","SideBarHeader","title","titleElemet","SideBar","onItemSelect","useSideNavBuilder","expanded","setExpand","SideNavbarWidget","React","CommuntiyTelegramIcon","ref","size","CommuntiyDiscordIcon","CommuntiyXIcon","OrderlyNetworkTextIcon","opacity","SignalIcon","InfoIcon","viewBox","CloseIcon","WsNetworkStatus","FooterUI","signalClsName","openUrl","url","useWsStatus","useFooterScript","wsStatus","footerConfig","FooterWidget","Dialog","DialogBody","DialogContent","DialogHeader","DialogTitle","useMediaQuery","MEDIA_TABLET","MaintenanceTipsUI","showTips","showDialog","tipsContent","closeTips","dialogContent","useMaintenanceStatus","format","UTCDateMini","getTimestamp","getTimeString","timestamp","date","oneDay","useMaintenanceScript","setShowTips","setShowDialog","startTime","endTime","brokerName","startDate","endDate","MaintenanceTipsWidget","Grid","OrderlyContext","chainId","Scaffold","expand","sideBarDefaultWidth","checkChainSupportHandle","onExpandChange","footerHeight"],"mappings":"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","sourcesContent":["import { AccountStatusEnum } from \"@orderly.network/types\";\nimport {\n Button,\n Divider,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuPortal,\n DropdownMenuRoot,\n DropdownMenuTrigger,\n EVMAvatar,\n Flex,\n Match,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { accountState: state, onDisconnect, onOpenExplorer } = props;\n\n if (state.status <= AccountStatusEnum.NotConnected || state.validating) {\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 <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={state.validating}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n Connect wallet\n </Button>\n </Tooltip>\n );\n }\n\n console.log(\n \"🔗 account state\",\n state.status,\n state.status <= AccountStatusEnum.NotSignedIn\n );\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\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 <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n Sign in\n </Button>\n </Tooltip>\n );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\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 <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 </Tooltip>\n );\n }\n\n if (state.status === AccountStatusEnum.EnableTrading) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\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 size=\"md\" variant=\"gradient\" angle={45} data-testid=\"oui-testid-nav-bar-address-btn\">\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 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\"\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\"\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, useEffect, useMemo } from \"react\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { ChainSelectorId } from \"@orderly.network/ui-chain-selector\";\n\nexport const useAccountMenu = (): any => {\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { checkChainSupport } = useScaffoldContext();\n const { connectWallet } = useAppContext();\n\n const [_, { findByChainId }] = useChains();\n\n const onCrateAccount = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const onCreateOrderlyKey = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({\n status,\n });\n } else {\n toast.success(\"Wallet connected\");\n }\n });\n\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorId)\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 return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect: async () => {\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n },\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\n","import { createContext, useContext } from \"react\";\nimport { FooterConfig } from \"./footer\";\n\nexport type routerAdapter = {\n onRouteChange: (options: {\n href: string;\n name: string;\n scope?: string;\n }) => void;\n currentPath?: string;\n};\n\nexport type ExpandableState = {\n routerAdapter?: routerAdapter;\n expanded?: boolean;\n setExpand: (expand: boolean) => void;\n // unsupported: boolean;\n checkChainSupport: (chainId: number | string) => boolean;\n footerConfig?: FooterConfig;\n};\n\nexport const ExpandableContext = createContext<ExpandableState>(\n {} as ExpandableState\n);\n\nexport const useScaffoldContext = () => {\n return useContext(ExpandableContext);\n};\n","import { AccountMenu } from \"./menu.ui\";\nimport { useAccountMenu } from \"./useWidgetBuilder.script\";\n\nexport const AccountMenuWidget = () => {\n const state = useAccountMenu();\n return <AccountMenu {...state} />;\n};\n","import { FC, PropsWithChildren, useMemo } from \"react\";\nimport {\n MainNavClassNames,\n MainNavItems,\n MainNavItemsProps,\n} from \"./mainNavItems\";\n\nimport { ProductsMenu, ProductsProps } from \"./products\";\nimport { Flex, Logo } from \"@orderly.network/ui\";\nimport type { LogoProps } from \"@orderly.network/ui\";\nimport { AccountMenuWidget } from \"../accountMenu\";\nimport { AccountSummaryWidget } from \"../accountSummary\";\nimport { ChainMenuWidget } from \"../chainMenu\";\nimport type { MainNavItem } from \"./navItem\";\nimport { CampaignPositionEnum } from \"./useWidgetBuilder.script\";\nimport { CampaignButton, CampaignProps } from \"./campaignButton\";\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};\n\nexport const MainNav: FC<PropsWithChildren<MainNavProps>> = (props) => {\n console.log(\"MainNavProps\", props);\n const { className, logo, products, classNames, campaigns, campaignPosition } =\n props;\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") return null;\n\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n return (\n <Flex\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n className={`orderly-main-nav ${className} ${classNames?.root} oui-font-semibold`}\n >\n <Flex itemAlign={\"center\"} gap={4}>\n <Logo {...logo} />\n <ProductsMenu {...products} className={classNames?.products} />\n <MainNavItems {...props.mainMenus} classNames={classNames?.mainNav} />\n </Flex>\n {children}\n\n <Flex itemAlign={\"center\"} gap={4}>\n {campaignPosition === CampaignPositionEnum.navTailing && campaigns ? (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n ) : null}\n <AccountSummaryWidget />\n <ChainMenuWidget />\n {props.wrongNetwork && props.isConnected ? null : <AccountMenuWidget />}\n </Flex>\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\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 stop-color=\"#59B0FE\" />\n <stop offset=\"1\" stop-color=\"#26FEFE\" />\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=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\n </linearGradient>\n </defs>\n </svg>\n </>\n );\n};\n","import { FC } from \"react\";\nimport { MainNavItem, NavItem } from \"./navItem\";\nimport { Flex } from \"@orderly.network/ui\";\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 MainNavItems: FC<MainNavItemsProps> = (props) => {\n const { items, classNames } = props;\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex gap={2} className={classNames?.root}>\n {items?.map((item, index) => (\n <NavItem\n key={index}\n item={item}\n // active={item.href === props.current?.[0]}\n currentPath={props.current}\n onClick={props.onItemClick}\n />\n ))}\n </Flex>\n );\n};\n","import { FC, 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 } from \"react\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@orderly.network/ui\";\nimport { AccountSummaryType } from \"./useWidgetBuilder.script\";\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 onTypeChange: (type: AccountSummaryType) => void;\n};\n\nexport const AccountSummary = (props: AccountSummaryUi) => {\n const { type, ...rest } = props;\n let element;\n switch (props.type) {\n case \"freeCollateral\":\n element = (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n />\n );\n break;\n case \"unrealPnL\":\n element = (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n />\n );\n break;\n case \"currentLeverage\":\n element = <CurrentLeverage currentLeverage={props.currentLeverage} />;\n break;\n case \"maxLeverage\":\n element = <MaxLeverage maxLeverage={props.maxLeverage} />;\n break;\n case \"totalValue\":\n default:\n element = (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n />\n );\n }\n\n return (\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 type={props.type}\n onTypeChange={props.onTypeChange}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n }}\n arrow\n >\n <div className={\"oui-cursor-pointer\"}>{element}</div>\n </Popover>\n );\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}> = (props) => {\n const { totalValue = 0, visible = true, onToggleVisibility } = 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 <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={12} className=\"oui-text-primary-light\" opacity={1} />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\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}> = (props) => {\n const { freeCollateral, visible, onToggleVisibility } = 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 <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={12} className=\"oui-text-primary-light\" opacity={1} />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\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}> = (props) => {\n const { visible, onToggleVisibility } = 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 <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={12} className=\"oui-text-primary-light\" opacity={1} />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\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 visible?: boolean;\n onTypeChange: (type: AccountSummaryType) => void;\n}) => {\n const { totalValue } = props;\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"totalValue\"}\n onClick={() => props.onTypeChange(\"totalValue\")}\n />\n <span>Total Value</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"freeCollateral\"}\n onClick={() => props.onTypeChange(\"freeCollateral\")}\n />\n <span>Free collateral</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"unrealPnL\"}\n onClick={() => props.onTypeChange(\"unrealPnL\")}\n />\n <span>Unreal. PnL</span>\n </Flex>\n <Text.numeral\n coloring\n showIdentifier\n visible={props.visible}\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 </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"currentLeverage\"}\n onClick={() => props.onTypeChange(\"currentLeverage\")}\n />\n <span>Current leverage</span>\n </Flex>\n <Text.numeral unit=\"x\">{props.currentLeverage ?? \"-\"}</Text.numeral>\n </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"maxLeverage\"}\n onClick={() => props.onTypeChange(\"maxLeverage\")}\n />\n <span>Max leverage</span>\n </Flex>\n <Text color=\"primary\">{`${props.maxLeverage ?? \"-\"}x`}</Text>\n </Flex>\n </Flex>\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","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\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [type, setType] = useLocalStorage<AccountSummaryType>(\n \"accountSummaryType\",\n \"totalValue\"\n );\n const { freeCollateral, totalValue } = useCollateral({\n dp: 2,\n });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const [maxLeverage] = useLeverage();\n\n const onTypeChange = (type: AccountSummaryType) => {\n setType(type);\n };\n\n const unavailable =\n wrongNetwork || state.status < AccountStatusEnum.EnableTrading;\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?.unrealPnL,\n unrealized_pnl_ROI: unavailable ? null : totalUnrealizedROI,\n type,\n onTypeChange,\n visible,\n wrongNetwork,\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\";\n\nexport const AccountSummaryWidget = () => {\n const state = useTotalValueBuilderScript();\n return <AccountSummary {...state} />;\n};\n","import { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Button, Flex, modal, Select, Tooltip } from \"@orderly.network/ui\";\nimport { ChainSelectorId } from \"@orderly.network/ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@orderly.network/ui-connector\";\n\ntype ChainItem = {\n name: string;\n id: number;\n lowestFee?: boolean;\n isTestnet?: boolean;\n};\n\nexport const ChainMenu = (props: {\n chains: {\n mainnet: ChainItem[];\n testnet: ChainItem[];\n };\n onChange?: (chain: ChainItem) => Promise<any>;\n // currentChain?: ChainItem;\n currentChainId?: number;\n wrongNetwork: boolean;\n isConnected: boolean;\n accountStatus: AccountStatusEnum;\n networkId: NetworkId\n}) => {\n if (props.wrongNetwork && props.isConnected) {\n return (\n <Tooltip\n open\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<{\n wrongNetwork: boolean;\n }>(ChainSelectorId,{\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 return (\n <Flex justify={\"center\"}>\n {/* @ts-ignore */}\n <Select.chains\n chains={props.chains}\n size=\"md\"\n value={props.currentChainId}\n variant=\"contained\"\n onChange={props.onChange}\n />\n </Flex>\n );\n};\n","import {\n useConfig,\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { NetworkId } from \"@orderly.network/types\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useChainMenuBuilderScript = () => {\n const [chains] = useChains();\n const { state } = useAccount();\n const { setChain, connectedChain } = useWalletConnector();\n\n const [currentChainId, setCurrentChainId] = useState<number | undefined>();\n\n const { wrongNetwork, onChainChanged } = useAppContext();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n const firstChain =\n networkId === \"mainnet\"\n ? chains.mainnet?.[0]?.network_infos\n : chains.testnet?.[0]?.network_infos;\n if (!firstChain) return;\n setCurrentChainId(firstChain.chain_id);\n }\n }, [connectedChain, chains, currentChainId, networkId]);\n\n const onChainChange = async (chain: { id: number; isTestnet: boolean }) => {\n // if (!connectedChain) return;\n\n if (connectedChain) {\n const result = await setChain({\n chainId: chain.id,\n });\n if (!result) return;\n onChainChanged?.(chain.id, {\n isTestnet: chain.isTestnet,\n isWalletConnected: true,\n });\n } else {\n onChainChanged?.(chain.id, {\n isTestnet: chain.isTestnet,\n isWalletConnected: false,\n });\n }\n };\n\n return {\n chains: {\n mainnet: chains.mainnet.map((chain) => ({\n name: chain.network_infos.name,\n id: chain.network_infos.chain_id,\n lowestFee: chain.network_infos.bridgeless,\n isTestnet: false,\n })),\n testnet: chains.testnet.map((chain) => ({\n name: chain.network_infos.name,\n id: chain.network_infos.chain_id,\n lowestFee: chain.network_infos.bridgeless,\n isTestnet: true,\n })),\n },\n // currentChain,\n currentChainId,\n onChange: onChainChange,\n isConnected: !!connectedChain,\n wrongNetwork,\n accountStatus: state.status,\n networkId,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<\n typeof useChainMenuBuilderScript\n>;\n","import { ChainMenu } from \"./chainMenu.ui\";\nimport { useChainMenuBuilderScript } from \"./useWidgetBuilder.script\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuBuilderScript();\n // @ts-ignore\n return <ChainMenu {...state} />;\n};\n","import { useMemo, useState } from \"react\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\nimport { useWalletConnector } from \"@orderly.network/hooks\";\nimport { ProductItem } from \"./productItem\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport type { MainNavItem } from \"./navItem\";\n\n// export type CampaignPosition = \"menuLeading\" | \"menuTailing\" | \"navTailing\";\nexport enum CampaignPositionEnum {\n menuLeading = \"menuLeading\",\n menuTailing = \"menuTailing\",\n navTailing = \"navTailing\",\n}\n\nexport type MainNavWidgetProps = {\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\nexport const useMainNavBuilder = (props: Partial<MainNavWidgetProps>) => {\n const { onItemClick, campaignPosition = CampaignPositionEnum.navTailing } =\n props;\n\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n const [currentProduct, setCurrentProduct] = useState(\n () => props?.initialProduct ?? props?.products?.[0].href ?? \"\"\n );\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n logo: {\n //https://mintlify.s3-us-west-1.amazonaws.com/orderly/logo/dark.png\n src: \"https://testnet-dex-evm.woo.org/images/woofipro.svg\",\n alt: \"woofipro\",\n },\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 // 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 };\n};\n\nexport type MainNavBuilder = ReturnType<typeof useMainNavBuilder>;\n","import { Divider } from \"@orderly.network/ui\";\nimport { MainNavItem, NavItem } from \"./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 style={{\n // @ts-ignore\n \"--oui-gradient-angle\": \"188deg\",\n \"--oui-gradient-primary-stop-start\": \"26%\",\n \"--oui-gradient-primary-stop-end\": \"80%\",\n // \"--oui-gradient-primary-start\": \"var(--oui-gradient-primary-end)\",\n // \"--oui-gradient-primary-end\": \"var(--oui-gradient-primary-start)\",\n }}\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 { MainNav, MainNavProps } from \"./mainNav.ui\";\nimport {\n MainNavWidgetProps,\n useMainNavBuilder,\n} from \"./useWidgetBuilder.script\";\n\nimport { PropsWithChildren } from \"react\";\n\nexport const MainNavWidget = (\n props: PropsWithChildren<\n Partial<MainNavWidgetProps & Pick<MainNavProps, \"classNames\">>\n >\n) => {\n const { children, ...rest } = props;\n const state = useMainNavBuilder(rest);\n return <MainNav {...state} children={children} />;\n};\n","import React, { FC, memo } 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\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=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\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 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 <button\n onClick={() => {\n props.onToggle?.();\n }}\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=\"group-data-[state=closed]/bar:oui-rotate-90\"\n >\n <path\n d=\"M5.82552 17.4922C3.98469 17.4922 2.49219 15.9997 2.49219 14.1589V5.82552C2.49219 3.98469 3.98469 2.49219 5.82552 2.49219H14.1589C15.9997 2.49219 17.4922 3.98469 17.4922 5.82552V14.1589C17.4922 15.9997 15.9997 17.4922 14.1589 17.4922H5.82552ZM12.4922 13.3255C12.7055 13.3255 12.928 13.2538 13.0913 13.0913C13.4163 12.7655 13.4163 12.2189 13.0913 11.893L9.75802 8.55969L11.6589 6.65885H6.65885V11.6589L8.55969 9.75802L11.893 13.0913C12.0555 13.2538 12.2789 13.3255 12.4922 13.3255Z\"\n fill=\"white\"\n fillOpacity=\"0.2\"\n />\n </svg>\n </button>\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\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 { cn, Divider, Flex, Text } from \"@orderly.network/ui\";\n\nimport {\n CommuntiyDiscordIcon,\n CommuntiyTelegramIcon,\n CommuntiyXIcon,\n OrderlyNetworkTextIcon,\n SignalIcon,\n} from \"../icons/index\";\n\nimport { FooterReturns } from \"./footer.script\";\nimport { BaseIcon, BaseIconProps } from \"@orderly.network/ui/src/icon/baseIcon\";\nimport { WsNetworkStatus } from \"@orderly.network/hooks\";\n\nexport const FooterUI: FC<FooterReturns> = (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={29}\n px={3}\n className=\"oui-hidden lg:oui-flex oui-bg-base-9 oui-border-t-2 oui-border-line-6\"\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.config?.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.config?.telegramUrl)}\n />\n )}\n {typeof props.config?.discordmUrl !== \"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.config?.discordmUrl)}\n />\n )}\n {typeof props.config?.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.config?.twitterUrl)}\n />\n )}\n </Flex>\n </Flex>\n </Flex>\n <Flex direction={\"row\"} gap={1}>\n <Text intensity={54} size=\"2xs\">\n Powered by\n </Text>\n <OrderlyNetworkTextIcon />\n </Flex>\n </Flex>\n );\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 { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n\nexport const OrderlyNetworkTextIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { opacity = 0.54, ...rest } = props;\n return (\n <svg\n width={96}\n hanging={11}\n ref={ref}\n viewBox=\"0 0 96 11\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.757 8.635h1.862V6.164c0-1.485.874-1.904 1.69-1.904.148 0 .284.011.477.034V2.729a1.8 1.8 0 0 0-.454-.056c-.896 0-1.452.6-1.68 1.53h-.033V2.74h-1.862zm7.221.113c.874 0 1.475-.464 1.634-.907v.794h1.861V.7h-1.86v2.834c-.16-.442-.761-.907-1.635-.907-1.203 0-2.565.885-2.565 3.06 0 2.188 1.362 3.061 2.565 3.061m-.817-3.06c0-1.043.624-1.52 1.282-1.52.647 0 1.249.477 1.249 1.52s-.602 1.519-1.249 1.519c-.658 0-1.282-.476-1.282-1.52m8.538 3.061c1.453 0 2.508-.748 2.78-2.108h-1.634c-.102.385-.352.703-1.112.703-.726 0-1.18-.329-1.282-1.19h4.074c.023-.136.034-.25.034-.465 0-2.301-1.34-3.06-2.86-3.06-1.578 0-3.007.838-3.007 3.037 0 2.29 1.543 3.083 3.007 3.083m-1.237-3.672c.114-.68.5-1.043 1.192-1.043.85 0 1.112.533 1.146 1.043zm5.304 3.559h1.861V6.164c0-1.485.874-1.904 1.691-1.904.148 0 .284.011.477.034V2.729a1.8 1.8 0 0 0-.454-.056c-.897 0-1.453.6-1.68 1.53h-.034V2.74h-1.861zm5.117 0h1.861V.7h-1.861zm3.481.725v1.565c1.827.192 2.588-.42 3.382-2.358L44.13 2.74h-1.906L40.93 6.265 39.67 2.74h-1.895l2.145 5.293c.148.352.159.533.034.816-.102.227-.363.669-1.589.51m9.808-.724h1.895V3.897h.045l2.86 4.738h2.043V.7h-1.907v4.863h-.045L50.136.7h-1.963zm11.054.113c1.453 0 2.508-.748 2.78-2.108h-1.633c-.102.385-.352.703-1.113.703-.726 0-1.18-.329-1.282-1.19h4.074c.023-.136.034-.25.034-.465 0-2.301-1.339-3.06-2.86-3.06-1.577 0-3.007.838-3.007 3.037 0 2.29 1.543 3.083 3.007 3.083M57.99 5.076c.114-.68.5-1.043 1.192-1.043.851 0 1.112.533 1.146 1.043zm8.005 3.638c.352 0 .692-.045.976-.124V7.218c-.26.023-.363.023-.488.023-.601 0-.715-.329-.715-.737V4.18h1.158V2.74h-1.158V1.2h-1.86v1.54h-1.01v1.44h1.01v2.585c0 1.371.816 1.95 2.087 1.95m3.365-.08h2.1l.942-3.423.942 3.423h2.088l1.543-5.894h-1.759l-.919 4.103h-.045l-1.056-4.103h-1.6l-1.055 4.103h-.046l-.919-4.103h-1.748zm11.195.113c1.486 0 2.995-.895 2.995-3.06s-1.509-3.06-2.995-3.06c-1.499 0-2.997.895-2.997 3.06s1.498 3.06 2.996 3.06m-1.26-3.06c0-1.043.533-1.52 1.26-1.52.714 0 1.248.477 1.248 1.52s-.534 1.519-1.248 1.519c-.727 0-1.26-.476-1.26-1.52m5.461 2.948h1.86V6.164c0-1.485.875-1.904 1.692-1.904.147 0 .283.011.476.034V2.729a1.8 1.8 0 0 0-.454-.056c-.896 0-1.452.6-1.68 1.53h-.033V2.74h-1.861zm5.117 0h1.86v-1.7l.466-.5 1.76 2.2H96l-2.667-3.4 2.36-2.494h-2.03l-1.93 2.199V.7h-1.861z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.632 1.043c.046.037.02.11-.04.11H1.779c-.06 0-.087-.073-.04-.11A4.67 4.67 0 0 1 4.685 0a4.66 4.66 0 0 1 2.947 1.043M2.862 5.96a.18.18 0 0 0-.146-.078H.265a.084.084 0 0 0-.081.107 4.687 4.687 0 0 0 9.001 0 .084.084 0 0 0-.081-.107H6.653a.18.18 0 0 0-.146.078 2.22 2.22 0 0 1-1.823.948c-.753 0-1.42-.375-1.822-.948m3.471-2.77c.034.037.082.06.132.06H9.03c.058 0 .1-.057.08-.112a4.7 4.7 0 0 0-.79-1.412.17.17 0 0 0-.13-.061H1.18a.17.17 0 0 0-.13.061c-.34.417-.609.894-.79 1.412a.084.084 0 0 0 .08.111h2.564c.05 0 .098-.022.132-.06.407-.448.995-.73 1.648-.73a2.22 2.22 0 0 1 1.648.73M6.89 5.37a.066.066 0 0 1-.063-.084 2.23 2.23 0 0 0-.077-1.43.067.067 0 0 1 .06-.091h2.417c.03 0 .057.021.063.051a4.7 4.7 0 0 1 .038 1.5.064.064 0 0 1-.063.054zm-4.347-.084a.066.066 0 0 1-.063.084H.105a.064.064 0 0 1-.063-.055A4.7 4.7 0 0 1 .08 3.816a.064.064 0 0 1 .063-.051H2.56c.046 0 .078.048.06.091a2.22 2.22 0 0 0-.077 1.43\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\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 { useWsStatus, WsNetworkStatus } from \"@orderly.network/hooks\";\nimport { FooterConfig } from \".\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\n\nexport type FooterReturns = {\n wsStatus: WsNetworkStatus,\n config?: FooterConfig,\n};\n\nexport const useFooterScript = (): FooterReturns => {\n\n const wsStatus = useWsStatus();\n const { footerConfig } = useScaffoldContext();\n\n return {\n wsStatus,\n config: footerConfig,\n };\n};\n","import { useFooterScript } from \"./footer.script\";\nimport { FooterUI } from \"./footer.ui\";\n\nexport const FooterWidget = () => {\n const state = useFooterScript();\n return (\n <FooterUI {...state}/>\n );\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 isTable = useMediaQuery(MEDIA_TABLET);\n if (isTable) {\n return <></>;\n }\n const { showTips, showDialog, tipsContent, closeTips, dialogContent } = props;\n if (showDialog) {\n return (\n <Dialog open={true}>\n <DialogContent closable={false}>\n <DialogHeader>\n <DialogTitle>System upgrade in progress</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody>{dialogContent}</DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n if (!showTips) {\n return <></>;\n }\n return (\n <Flex\n className={cn(\n \"oui-w-full oui-bg-warning/10 oui-text-warning oui-text-sm oui-relative oui-gap-1 oui-pl-4 oui-pr-[60px] oui-py-3\",\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 <InfoIcon size={20} className=\"oui-flex-shrink-0 oui-w-5 oui-h-5 \" />\n <Box className=\"oui-font-semibold \">{tipsContent}</Box>\n <CloseIcon\n size={16}\n className=\"oui-absolute 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 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 { Box, cn, Grid, type SizeType } from \"@orderly.network/ui\";\nimport { MainNavWidget } from \"./main/mainNav.widget\";\nimport React, { PropsWithChildren, useContext } from \"react\";\nimport { SideNavbarWidget } from \"./sidebar\";\nimport { SideBarProps } from \"./sidebar\";\nimport {\n OrderlyContext,\n useChains,\n useLocalStorage,\n} from \"@orderly.network/hooks\";\nimport { useMemo } from \"react\";\nimport {\n ExpandableContext,\n // MainNavProps,\n routerAdapter,\n} from \"./scaffoldContext\";\nimport { checkChainSupport } from \"../utils/chain\";\nimport { FooterConfig, FooterWidget } from \"./footer\";\nimport { MainNavWidgetProps } from \"./main/useWidgetBuilder.script\";\nimport { MaintenanceTipsWidget } from \"./maintenanceTips\";\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 leftSidebar?: React.ReactNode;\n gap?: number;\n maxWidth?: number;\n bodyPadding?: SizeType;\n leftSideProps?: SideBarProps;\n rightSidebar?: React.ReactNode;\n topBar?: React.ReactNode;\n // topBarProps?:\n mainNavProps?: PropsWithChildren<MainNavWidgetProps>;\n footer?: React.ReactNode;\n routerAdapter?: routerAdapter;\n footerHeight?: number;\n footerIsSticky?: boolean;\n footerConfig?: FooterConfig;\n classNames?: {\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, footerConfig, routerAdapter } = props;\n const [expand, setExpand] = useLocalStorage(\n \"orderly_scaffold_expanded\",\n true\n );\n // const [unsupported, setUnsupported] = useState(true);\n const [chains] = useChains();\n\n const sideBarDefaultWidth = useMemo(() => props.maxWidth || 185, []);\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 const footerHeight =\n props.footerHeight !== undefined ? props.footerHeight : 29;\n\n return (\n <div\n className=\"oui-flex oui-flex-col oui-overflow-auto\"\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n >\n <ExpandableContext.Provider\n value={{\n routerAdapter,\n expanded: expand,\n setExpand: onExpandChange,\n // unsupported,\n checkChainSupport: checkChainSupportHandle,\n footerConfig,\n // mainNavProps: props.mainNavProps,\n }}\n >\n {/* Top main nav */}\n <Box\n className={cn(\n \"oui-hidden xl:oui-block\",\n \"oui-border-b oui-border-line-12\",\n classNames?.topNavbar\n )}\n >\n {props.topBar ?? <MainNavWidget {...props.mainNavProps} />}\n </Box>\n <MaintenanceTipsWidget />\n {/*--------- body start ------ */}\n {props.leftSidebar === null ? (\n // ----------No leftSidebar layout start ---------\n <Box className={classNames?.content}>{props.children}</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 // marginBottom: `${props.footerHeight ?? 29}px`,\n gridTemplateColumns: `${\n expand ? sideBarDefaultWidth + \"px\" : \"98px\"\n } 1fr`,\n // gridTemplateRows: \"auto 1fr\",\n // gridTemplateAreas: `\"left main\" \"left main\"`,\n }}\n >\n <div className={cn(classNames?.leftSidebar)}>\n {/* @ts-ignore */}\n {typeof props.leftSidebar !== \"undefined\" ? (\n props.leftSidebar\n ) : (\n <SideNavbarWidget {...props.leftSideProps} />\n )}\n\n {/* <SideNavbarWidget {...props.leftSideProps} /> */}\n </div>\n <Box width={\"100%\"} className={classNames?.content}>\n {props.children}\n </Box>\n </Grid>\n // ---------- left & body layout end ---------\n )}\n\n <Box\n className={cn(\n \"oui-fixed oui-bottom-0 oui-z-50\",\n \"oui-w-full\",\n classNames?.footer\n )}\n >\n {props.footer || <FooterWidget />}\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/scaffoldContext.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/useWidgetBuilder.script.ts","../src/components/chainMenu/chainMenu.widget.tsx","../src/components/main/useWidgetBuilder.script.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/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/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","e","WalletMenu","address","event","useAccount","useChains","useWalletConnector","WalletConnectorModalId","modal","toast","useCallback","createContext","useContext","ExpandableContext","useScaffoldContext","useAppContext","ChainSelectorId","useAccountMenu","disconnect","connectedChain","account","checkChainSupport","connectWallet","_","findByChainId","onCrateAccount","res","err","onCreateOrderlyKey","switchChain","status","statusChangeHandler","r","error","connect","nextState","chainInfo","explorer_base_url","AccountMenuWidget","WalletConnectButtonExtension","useMemo","cn","ProductItem","active","item","onClick","ProductsMenu","items","onItemClick","current","className","currentItem","product","index","Box","EyeCloseIcon","EyeIcon","Popover","AccountSummary","type","rest","element","FreeCollateral","UnrealPnL","CurrentLeverage","MaxLeverage","TotalValue","AccountInfoPopover","totalValue","visible","onToggleVisibility","freeCollateral","currentLeverage","IdentityButton","useLeverage","useLocalStorage","useMarginRatio","usePositionStream","useCollateral","useTotalValueBuilderScript","setType","setVisible","aggregated","totalUnrealizedROI","wrongNetwork","maxLeverage","onTypeChange","unavailable","AccountSummaryWidget","Select","Tooltip","ChainMenu","useConfig","useEffect","useChainMenuBuilderScript","chains","setChain","onChainChanged","currentChainId","setCurrentChainId","networkId","firstChain","onChainChange","chain","ChainMenuWidget","useState","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","open","setOpen","timer","onMouseEnter","SubMenu","SubMenuTitle","name","Tag","OutlinkIcon","ICON_CLASSNAME","CampaignButton","useAppConfig","React","CommuntiyTelegramIcon","ref","size","CommuntiyDiscordIcon","CommuntiyXIcon","OrderlyNetworkTextIcon","opacity","SignalIcon","InfoIcon","viewBox","CloseIcon","OrderlyLogo","Logo","MainLogo","appIcons","main","MainNavMenusUI","MainNavMenusExtension","MainNav","logo","products","campaigns","children","MainNavWidget","memo","tv","menuItemVariants","MenuItem","mode","SideMenus","SideBarHeader","title","titleElemet","iconProps","CollapseIcon","ExpandIcon","SideBar","onItemSelect","useSideNavBuilder","expanded","setExpand","SideNavbarWidget","WsNetworkStatus","Footer","signalClsName","openUrl","url","useWsStatus","useFooterScript","FooterWidget","Dialog","DialogBody","DialogContent","DialogHeader","DialogTitle","useMediaQuery","MEDIA_TABLET","MaintenanceTipsUI","showTips","showDialog","tipsContent","closeTips","dialogContent","useMaintenanceStatus","format","UTCDateMini","getTimestamp","getTimeString","timestamp","date","oneDay","useMaintenanceScript","setShowTips","setShowDialog","startTime","endTime","brokerName","startDate","endDate","MaintenanceTipsWidget","Grid","OrderlyContext","isValidElement","chainId","Scaffold","footerProps","footerHeight","setFooterHeight","footerRef","expand","checkChainSupportHandle","onExpandChange","height","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 Match,\n Text,\n Tooltip,\n} from \"@orderly.network/ui\";\n\nexport type AccountMenuProps = {\n accountState: AccountState;\n address?: string;\n onDisconnect: () => void;\n connect: () => Promise<void>;\n onCrateAccount: () => Promise<void>;\n onCreateOrderlyKey: () => Promise<void>;\n onOpenExplorer: () => void;\n};\n\nexport const AccountMenu = (props: AccountMenuProps) => {\n const { accountState: state, onDisconnect, onOpenExplorer } = props;\n\n if (state.status <= AccountStatusEnum.NotConnected || state.validating) {\n return (\n <Button\n data-testid=\"oui-testid-nav-bar-connectWallet-btn\"\n size=\"md\"\n variant=\"gradient\"\n angle={45}\n className=\"wallet-connect-button\"\n loading={state.validating}\n disabled={state.validating}\n onClick={() => {\n props\n .connect()\n .then((r) => {\n console.log(\"*****\", r);\n })\n .catch((e) => console.error(e));\n }}\n >\n Connect wallet\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please connect wallet before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.NotSignedIn) {\n return (\n <Button size=\"md\" onClick={() => props.onCrateAccount()}>\n Sign in\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // content={\"Please sign in before starting to trade\"}\n // align={\"end\"}\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status <= AccountStatusEnum.DisabledTrading) {\n return (\n <Button\n size=\"md\"\n onClick={() => {\n props\n .onCreateOrderlyKey()\n .then((r) => console.log(r))\n .catch((e) => console.error(e));\n }}\n >\n Enable trading\n </Button>\n );\n // return (\n // <Tooltip\n // open\n // className=\"oui-bg-base-5\"\n // arrow={{ className: \"oui-fill-base-5\" }}\n // content={\"Please enable trading before starting to trade\"}\n // align={\"end\"}\n // >\n\n // </Tooltip>\n // );\n }\n\n if (state.status === AccountStatusEnum.EnableTrading) {\n return (\n <WalletMenu\n address={state.address!}\n onDisconnect={onDisconnect}\n onOpenExplorer={onOpenExplorer}\n />\n );\n }\n};\n\nexport type AccountState = {\n status: AccountStatusEnum;\n\n /**\n * whether the account is validating\n */\n validating: boolean;\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 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, useEffect, useMemo } from \"react\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\nimport { AccountStatusEnum } from \"@orderly.network/types\";\nimport { useAppContext } from \"@orderly.network/react-app\";\nimport { ChainSelectorId } from \"@orderly.network/ui-chain-selector\";\n\nexport const useAccountMenu = (): any => {\n const { disconnect, connectedChain } = useWalletConnector();\n const { account, state } = useAccount();\n const { checkChainSupport } = useScaffoldContext();\n const { connectWallet } = useAppContext();\n\n const [_, { findByChainId }] = useChains();\n\n const onCrateAccount = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const onCreateOrderlyKey = async () => {\n modal.show(WalletConnectorModalId).then(\n (res) => console.log(\"return ::\", res),\n (err) => console.log(\"error:::\", err)\n );\n };\n\n const switchChain = () => {\n account.once(\"validate:end\", (status) => {\n if (status < AccountStatusEnum.EnableTrading) {\n statusChangeHandler({\n status,\n });\n } else {\n toast.success(\"Wallet connected\");\n }\n });\n\n modal\n .show<{\n wrongNetwork: boolean;\n }>(ChainSelectorId)\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 return {\n address: state.address,\n accountState: state,\n connect,\n onCrateAccount,\n onCreateOrderlyKey,\n onOpenExplorer,\n onDisconnect: async () => {\n await disconnect({\n label: state.connectWallet?.name,\n });\n await account.disconnect();\n },\n } as const;\n};\n\nexport type AccountMenuProps = ReturnType<typeof useAccountMenu>;\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 { FC, PropsWithChildren, useMemo } from \"react\";\nimport {\n MainNavClassNames,\n MainNavItems,\n MainNavItemsProps,\n} from \"./mainNavItems\";\n\nimport { ProductsMenu, ProductsProps } from \"./products\";\nimport { cn, Flex } from \"@orderly.network/ui\";\nimport type { LogoProps } from \"@orderly.network/ui\";\nimport { AccountMenuWidget } from \"../accountMenu\";\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\";\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};\n\nexport const MainNav: FC<PropsWithChildren<MainNavProps>> = (props) => {\n const { className, logo, products, classNames, campaigns, campaignPosition } =\n props;\n\n const children = useMemo(() => {\n if (typeof props.children === \"undefined\") return null;\n\n return <Flex grow>{props.children}</Flex>;\n }, [props.children]);\n\n return (\n <Flex\n as=\"header\"\n itemAlign={\"center\"}\n height={\"48px\"}\n justify={\"between\"}\n px={3}\n className={cn(\n \"oui-main-nav oui-font-semibold\",\n className,\n classNames?.root\n )}\n >\n <Flex itemAlign={\"center\"} gap={4}>\n <MainLogo {...logo} />\n <ProductsMenu {...products} className={classNames?.products} />\n {/* <MainNavItems {...props.mainMenus} classNames={classNames?.mainNav} /> */}\n <MainNavMenusExtension\n {...props.mainMenus}\n classNames={classNames?.mainNav}\n />\n </Flex>\n {children}\n\n <Flex itemAlign={\"center\"} gap={4}>\n {campaignPosition === CampaignPositionEnum.navTailing && campaigns ? (\n <CampaignButton\n {...campaigns}\n className={classNames?.campaignButton}\n />\n ) : null}\n <AccountSummaryWidget />\n <ChainMenuWidget />\n {props.wrongNetwork && props.isConnected ? null : (\n <WalletConnectButtonExtension />\n )}\n </Flex>\n </Flex>\n );\n};\n\nMainNav.displayName = \"MainNav\";\n","import { FC, useMemo } from \"react\";\n\nimport { ProductItem } from \"./productItem\";\nimport { cn, Flex } from \"@orderly.network/ui\";\n\nexport type ProductsProps = {\n items?: ProductItem[];\n current?: string;\n className?: string;\n onItemClick?: (product: ProductItem) => void;\n};\n\nexport const ProductsMenu: FC<ProductsProps> = (props) => {\n const { items, onItemClick, current, className } = props;\n const currentItem = useMemo(() => {\n if (typeof current !== \"undefined\") return current;\n\n return items?.[0]?.href;\n }, [current, items]);\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex\n gap={0}\n border\n r=\"md\"\n className={cn(\"oui-p-[1px]\", className)}\n borderColor={12}\n >\n {items?.map((product, index) => {\n return (\n <ProductItem\n key={index}\n item={product}\n onClick={onItemClick}\n active={currentItem == product.href}\n />\n );\n })}\n </Flex>\n );\n};\n","import { Button, cn } from \"@orderly.network/ui\";\nimport { FC } from \"react\";\n\nexport type ProductItem = {\n name: string;\n href: string;\n};\n\nexport const ProductItem: FC<{\n item: ProductItem;\n active?: boolean;\n onClick?: (product: ProductItem) => void;\n}> = (props) => {\n const { active, item, onClick } = props;\n return (\n <Button\n variant={active ? \"gradient\" : \"text\"}\n color=\"secondary\"\n size=\"sm\"\n angle={45}\n className={cn(\n active ? \"oui-text-[rgba(0_,_0_,_0_,_0.88)]\" : \"hover:oui-bg-base-7\"\n )}\n onClick={() => {\n onClick?.(item);\n }}\n >\n {item.name}\n </Button>\n );\n};\n","import React, { FC } from \"react\";\nimport {\n Box,\n EyeCloseIcon,\n EyeIcon,\n Flex,\n Popover,\n Text,\n} from \"@orderly.network/ui\";\nimport { AccountSummaryType } from \"./useWidgetBuilder.script\";\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 onTypeChange: (type: AccountSummaryType) => void;\n};\n\nexport const AccountSummary = (props: AccountSummaryUi) => {\n const { type, ...rest } = props;\n let element;\n switch (props.type) {\n case \"freeCollateral\":\n element = (\n <FreeCollateral\n freeCollateral={props.freeCollateral}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n />\n );\n break;\n case \"unrealPnL\":\n element = (\n <UnrealPnL\n unrealPnL={props.unrealPnL}\n unrealized_pnl_ROI={props.unrealized_pnl_ROI}\n visible={props.visible}\n onToggleVisibility={props.onToggleVisibility}\n />\n );\n break;\n case \"currentLeverage\":\n element = <CurrentLeverage currentLeverage={props.currentLeverage} />;\n break;\n case \"maxLeverage\":\n element = <MaxLeverage maxLeverage={props.maxLeverage} />;\n break;\n case \"totalValue\":\n default:\n element = (\n <TotalValue\n totalValue={props.totalValue}\n onToggleVisibility={props.onToggleVisibility}\n visible={props.visible}\n />\n );\n }\n\n return (\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 type={props.type}\n onTypeChange={props.onTypeChange}\n visible={props.visible}\n />\n }\n contentProps={{\n onOpenAutoFocus: (event) => event.preventDefault(),\n sideOffset: 12,\n }}\n arrow\n >\n <div className={\"oui-cursor-pointer\"}>{element}</div>\n </Popover>\n );\n};\n\n//----------------- TotalValue -----------------\nconst TotalValue: FC<{\n totalValue: number | null;\n visible?: boolean;\n onToggleVisibility?: () => void;\n}> = (props) => {\n const { totalValue = 0, visible = true, onToggleVisibility } = 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 <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={12} className=\"oui-text-primary-light\" opacity={1} />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\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}> = (props) => {\n const { freeCollateral, visible, onToggleVisibility } = 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 <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={12} className=\"oui-text-primary-light\" opacity={1} />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\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}> = (props) => {\n const { visible, onToggleVisibility } = 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 <button onClick={() => onToggleVisibility?.()}>\n {visible ? (\n <EyeIcon size={12} className=\"oui-text-primary-light\" opacity={1} />\n ) : (\n <EyeCloseIcon\n size={12}\n className=\"oui-text-primary-light\"\n opacity={1}\n />\n )}\n </button>\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 visible?: boolean;\n onTypeChange: (type: AccountSummaryType) => void;\n}) => {\n const { totalValue } = props;\n return (\n <Flex\n className={\"oui-text-2xs oui-font-semibold\"}\n direction={\"column\"}\n gapY={1}\n >\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"totalValue\"}\n onClick={() => props.onTypeChange(\"totalValue\")}\n />\n <span>Total Value</span>\n </Flex>\n <Text.numeral\n visible={props.visible}\n unit=\"USDC\"\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {totalValue ?? \"-\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"freeCollateral\"}\n onClick={() => props.onTypeChange(\"freeCollateral\")}\n />\n <span>Free collateral</span>\n </Flex>\n <Text.numeral\n unit=\"USDC\"\n visible={props.visible}\n unitClassName={\"oui-text-base-contrast-36 oui-ml-1\"}\n >\n {props.freeCollateral ?? \"-\"}\n </Text.numeral>\n </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"unrealPnL\"}\n onClick={() => props.onTypeChange(\"unrealPnL\")}\n />\n <span>Unreal. PnL</span>\n </Flex>\n <Text.numeral\n coloring\n showIdentifier\n visible={props.visible}\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 </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"currentLeverage\"}\n onClick={() => props.onTypeChange(\"currentLeverage\")}\n />\n <span>Current leverage</span>\n </Flex>\n <Text.numeral unit=\"x\">{props.currentLeverage ?? \"-\"}</Text.numeral>\n </Flex>\n <Flex justify={\"between\"} width={\"100%\"}>\n <Flex className={\"oui-text-base-contrast-54\"} gapX={2}>\n <IdentityButton\n active={props.type === \"maxLeverage\"}\n onClick={() => props.onTypeChange(\"maxLeverage\")}\n />\n <span>Max leverage</span>\n </Flex>\n <Text color=\"primary\">{`${props.maxLeverage ?? \"-\"}x`}</Text>\n </Flex>\n </Flex>\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","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\";\n\nexport type AccountSummaryType =\n | \"totalValue\"\n | \"freeCollateral\"\n | \"unrealPnL\"\n | \"currentLeverage\"\n | \"maxLeverage\";\n\nexport const useTotalValueBuilderScript = () => {\n const [type, setType] = useLocalStorage<AccountSummaryType>(\n \"accountSummaryType\",\n \"totalValue\"\n );\n const { freeCollateral, totalValue } = useCollateral({\n dp: 2,\n });\n\n const { state } = useAccount();\n\n const [visible, setVisible] = useLocalStorage(\"orderly_assets_visible\", true);\n\n const [{ aggregated, totalUnrealizedROI }] = usePositionStream();\n const { wrongNetwork } = useAppContext();\n\n const { currentLeverage } = useMarginRatio();\n\n const [maxLeverage] = useLeverage();\n\n const onTypeChange = (type: AccountSummaryType) => {\n setType(type);\n };\n\n const unavailable =\n wrongNetwork || state.status < AccountStatusEnum.EnableTrading;\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 onTypeChange,\n visible,\n wrongNetwork,\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\";\n\nexport const AccountSummaryWidget = () => {\n const state = useTotalValueBuilderScript();\n return <AccountSummary {...state} />;\n};\n","import { AccountStatusEnum, NetworkId } from \"@orderly.network/types\";\nimport { Button, Flex, modal, Select, Tooltip } from \"@orderly.network/ui\";\nimport { ChainSelectorId } from \"@orderly.network/ui-chain-selector\";\nimport { WalletConnectorModalId } from \"@orderly.network/ui-connector\";\n\ntype ChainItem = {\n name: string;\n id: number;\n lowestFee?: boolean;\n isTestnet?: boolean;\n};\n\nexport const ChainMenu = (props: {\n chains: {\n mainnet: ChainItem[];\n testnet: ChainItem[];\n };\n onChange?: (chain: ChainItem) => Promise<any>;\n // currentChain?: ChainItem;\n currentChainId?: number;\n wrongNetwork: boolean;\n isConnected: boolean;\n accountStatus: AccountStatusEnum;\n networkId: NetworkId\n}) => {\n if (props.wrongNetwork && props.isConnected) {\n return (\n <Tooltip\n open\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<{\n wrongNetwork: boolean;\n }>(ChainSelectorId,{\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 return (\n <Flex justify={\"center\"}>\n {/* @ts-ignore */}\n <Select.chains\n chains={props.chains}\n size=\"md\"\n value={props.currentChainId}\n variant=\"contained\"\n onChange={props.onChange}\n />\n </Flex>\n );\n};\n","import {\n useConfig,\n useAccount,\n useChains,\n useWalletConnector,\n} from \"@orderly.network/hooks\";\nimport { NetworkId } from \"@orderly.network/types\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useAppContext } from \"@orderly.network/react-app\";\n\nexport const useChainMenuBuilderScript = () => {\n const [chains] = useChains();\n const { state } = useAccount();\n const { setChain, connectedChain } = useWalletConnector();\n\n\n const { wrongNetwork, onChainChanged, currentChainId, setCurrentChainId } = useAppContext();\n\n const networkId = useConfig(\"networkId\") as NetworkId;\n\n useEffect(() => {\n if (connectedChain) {\n setCurrentChainId(\n typeof connectedChain.id === \"number\"\n ? connectedChain.id\n : parseInt(connectedChain.id)\n );\n } else {\n if (!!currentChainId) return;\n const firstChain =\n networkId === \"mainnet\"\n ? chains.mainnet?.[0]?.network_infos\n : chains.testnet?.[0]?.network_infos;\n if (!firstChain) return;\n setCurrentChainId(firstChain.chain_id);\n }\n }, [connectedChain, chains, currentChainId, networkId]);\n\n const onChainChange = async (chain: { id: number; isTestnet: boolean }) => {\n // if (!connectedChain) return;\n setCurrentChainId(chain.id);\n\n if (connectedChain) {\n const result = await setChain({\n chainId: chain.id,\n });\n if (!result) return;\n onChainChanged?.(chain.id, {\n isTestnet: chain.isTestnet,\n isWalletConnected: true,\n });\n } else {\n onChainChanged?.(chain.id, {\n isTestnet: chain.isTestnet,\n isWalletConnected: false,\n });\n }\n };\n\n return {\n chains: {\n mainnet: chains.mainnet.map((chain) => ({\n name: chain.network_infos.name,\n id: chain.network_infos.chain_id,\n lowestFee: chain.network_infos.bridgeless,\n isTestnet: false,\n })),\n testnet: chains.testnet.map((chain) => ({\n name: chain.network_infos.name,\n id: chain.network_infos.chain_id,\n lowestFee: chain.network_infos.bridgeless,\n isTestnet: true,\n })),\n },\n // currentChain,\n currentChainId,\n onChange: onChainChange,\n isConnected: !!connectedChain,\n wrongNetwork,\n accountStatus: state.status,\n networkId,\n };\n};\n\nexport type UseChainMenuBuilderScript = ReturnType<\n typeof useChainMenuBuilderScript\n>;\n","import { ChainMenu } from \"./chainMenu.ui\";\nimport { useChainMenuBuilderScript } from \"./useWidgetBuilder.script\";\n\nexport const ChainMenuWidget = () => {\n const state = useChainMenuBuilderScript();\n // @ts-ignore\n return <ChainMenu {...state} />;\n};\n","import { useMemo, useState } from \"react\";\nimport { useScaffoldContext } from \"../scaffoldContext\";\nimport { useWalletConnector } 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\n const { routerAdapter } = useScaffoldContext();\n const { connectedChain } = useWalletConnector();\n const { wrongNetwork } = useAppContext();\n const [current, setCurrent] = useState(() => {\n if (typeof props.initialMenu === \"undefined\") return [];\n\n return !Array.isArray(props.initialMenu)\n ? [props.initialMenu]\n : props.initialMenu;\n });\n const [currentProduct, setCurrentProduct] = useState(\n () => props?.initialProduct ?? props?.products?.[0].href ?? \"\"\n );\n\n const onItemClickHandler = (scope: string) => (item: MainNavItem[]) => {\n const lastItem = item[item.length - 1];\n\n if (!lastItem) return;\n\n /**\n * If the target is not _blank, we should update the current state\n */\n if (lastItem.target !== \"_blank\") {\n setCurrent(item.map((item) => item.href));\n }\n\n const current = item[item.length - 1];\n const args = {\n href: current.href,\n name: current.name,\n scope,\n target: current.target,\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n };\n\n const mainNavConfig = useMemo(() => {\n const config = {\n logo: {},\n mainMenus: [\n // { name: \"Trading\", href: \"/trading\" },\n // { name: \"Portfolio\", href: \"/portfolio\" },\n // { name: \"Markets\", href: \"/markets\" },\n // { name: \"Rewards\", href: \"/rewards\" },\n ],\n products: [\n // { name: \"Swap\", href: \"/swap\" },\n // { name: \"Perps\", href: \"/perps\" },\n ],\n ...props,\n campaignPosition,\n };\n\n if (props.campaigns) {\n if (campaignPosition === CampaignPositionEnum.menuTailing) {\n config.mainMenus = [...config.mainMenus, props.campaigns];\n } else if (campaignPosition === CampaignPositionEnum.menuLeading) {\n config.mainMenus = [props.campaigns, ...config.mainMenus];\n } else {\n config.campaigns = props.campaigns;\n }\n }\n\n return config;\n }, [props]);\n\n const converted: any = {};\n\n if (mainNavConfig.products && mainNavConfig.products.length) {\n converted.products = {\n items: mainNavConfig.products,\n current: currentProduct,\n onItemClick: (product: ProductItem) => {\n // No need to modify the intenal state\n const args = {\n href: product.href,\n name: product.name,\n scope: \"product\",\n };\n\n if (typeof onItemClick === \"function\") {\n onItemClick(args);\n return;\n }\n\n routerAdapter?.onRouteChange(args);\n },\n };\n }\n\n if (mainNavConfig.mainMenus && mainNavConfig.mainMenus.length) {\n converted.mainMenus = {\n items: mainNavConfig.mainMenus,\n /**\n * @type string\n * The current item of the router\n */\n current,\n onItemClick: onItemClickHandler(\"mainMenu\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"mainMenu\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n if (mainNavConfig.campaigns && mainNavConfig.campaigns.children?.length) {\n converted.campaigns = {\n item: mainNavConfig.campaigns,\n current,\n onItemClick: onItemClickHandler(\"campaign\"),\n // onItemClick: (item: MainNavItem[]) => {\n // const lastItem = item[item.length - 1];\n\n // if (!lastItem) return;\n\n // /**\n // * If the target is not _blank, we should update the current state\n // */\n // if (lastItem.target !== \"_blank\") {\n // setCurrent(item.map((item) => item.href));\n // }\n\n // const current = item[item.length - 1];\n // const args = {\n // href: current.href,\n // name: current.name,\n // scope: \"campaign\",\n // target: current.target,\n // };\n\n // if (typeof onItemClick === \"function\") {\n // onItemClick(args);\n // return;\n // }\n\n // routerAdapter?.onRouteChange(args);\n // },\n };\n }\n\n // return converted;\n\n return {\n // currentProduct,\n // logo: mainNavConfig.logo,\n ...mainNavConfig,\n\n isConnected: !!connectedChain,\n wrongNetwork,\n ...converted,\n };\n};\n\nexport type MainNavBuilder = ReturnType<typeof useMainNavBuilder>;\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 style={{\n // @ts-ignore\n \"--oui-gradient-angle\": \"188deg\",\n \"--oui-gradient-primary-stop-start\": \"26%\",\n \"--oui-gradient-primary-stop-end\": \"80%\",\n // \"--oui-gradient-primary-start\": \"var(--oui-gradient-primary-end)\",\n // \"--oui-gradient-primary-end\": \"var(--oui-gradient-primary-start)\",\n }}\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=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\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=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\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 { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n\nexport const OrderlyNetworkTextIcon = React.forwardRef<\n SVGSVGElement,\n BaseIconProps\n>((props, ref) => {\n const { opacity = 0.54, ...rest } = props;\n return (\n <svg\n width={96}\n hanging={11}\n ref={ref}\n viewBox=\"0 0 96 11\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M10.757 8.635h1.862V6.164c0-1.485.874-1.904 1.69-1.904.148 0 .284.011.477.034V2.729a1.8 1.8 0 0 0-.454-.056c-.896 0-1.452.6-1.68 1.53h-.033V2.74h-1.862zm7.221.113c.874 0 1.475-.464 1.634-.907v.794h1.861V.7h-1.86v2.834c-.16-.442-.761-.907-1.635-.907-1.203 0-2.565.885-2.565 3.06 0 2.188 1.362 3.061 2.565 3.061m-.817-3.06c0-1.043.624-1.52 1.282-1.52.647 0 1.249.477 1.249 1.52s-.602 1.519-1.249 1.519c-.658 0-1.282-.476-1.282-1.52m8.538 3.061c1.453 0 2.508-.748 2.78-2.108h-1.634c-.102.385-.352.703-1.112.703-.726 0-1.18-.329-1.282-1.19h4.074c.023-.136.034-.25.034-.465 0-2.301-1.34-3.06-2.86-3.06-1.578 0-3.007.838-3.007 3.037 0 2.29 1.543 3.083 3.007 3.083m-1.237-3.672c.114-.68.5-1.043 1.192-1.043.85 0 1.112.533 1.146 1.043zm5.304 3.559h1.861V6.164c0-1.485.874-1.904 1.691-1.904.148 0 .284.011.477.034V2.729a1.8 1.8 0 0 0-.454-.056c-.897 0-1.453.6-1.68 1.53h-.034V2.74h-1.861zm5.117 0h1.861V.7h-1.861zm3.481.725v1.565c1.827.192 2.588-.42 3.382-2.358L44.13 2.74h-1.906L40.93 6.265 39.67 2.74h-1.895l2.145 5.293c.148.352.159.533.034.816-.102.227-.363.669-1.589.51m9.808-.724h1.895V3.897h.045l2.86 4.738h2.043V.7h-1.907v4.863h-.045L50.136.7h-1.963zm11.054.113c1.453 0 2.508-.748 2.78-2.108h-1.633c-.102.385-.352.703-1.113.703-.726 0-1.18-.329-1.282-1.19h4.074c.023-.136.034-.25.034-.465 0-2.301-1.339-3.06-2.86-3.06-1.577 0-3.007.838-3.007 3.037 0 2.29 1.543 3.083 3.007 3.083M57.99 5.076c.114-.68.5-1.043 1.192-1.043.851 0 1.112.533 1.146 1.043zm8.005 3.638c.352 0 .692-.045.976-.124V7.218c-.26.023-.363.023-.488.023-.601 0-.715-.329-.715-.737V4.18h1.158V2.74h-1.158V1.2h-1.86v1.54h-1.01v1.44h1.01v2.585c0 1.371.816 1.95 2.087 1.95m3.365-.08h2.1l.942-3.423.942 3.423h2.088l1.543-5.894h-1.759l-.919 4.103h-.045l-1.056-4.103h-1.6l-1.055 4.103h-.046l-.919-4.103h-1.748zm11.195.113c1.486 0 2.995-.895 2.995-3.06s-1.509-3.06-2.995-3.06c-1.499 0-2.997.895-2.997 3.06s1.498 3.06 2.996 3.06m-1.26-3.06c0-1.043.533-1.52 1.26-1.52.714 0 1.248.477 1.248 1.52s-.534 1.519-1.248 1.519c-.727 0-1.26-.476-1.26-1.52m5.461 2.948h1.86V6.164c0-1.485.875-1.904 1.692-1.904.147 0 .283.011.476.034V2.729a1.8 1.8 0 0 0-.454-.056c-.896 0-1.452.6-1.68 1.53h-.033V2.74h-1.861zm5.117 0h1.86v-1.7l.466-.5 1.76 2.2H96l-2.667-3.4 2.36-2.494h-2.03l-1.93 2.199V.7h-1.861z\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.632 1.043c.046.037.02.11-.04.11H1.779c-.06 0-.087-.073-.04-.11A4.67 4.67 0 0 1 4.685 0a4.66 4.66 0 0 1 2.947 1.043M2.862 5.96a.18.18 0 0 0-.146-.078H.265a.084.084 0 0 0-.081.107 4.687 4.687 0 0 0 9.001 0 .084.084 0 0 0-.081-.107H6.653a.18.18 0 0 0-.146.078 2.22 2.22 0 0 1-1.823.948c-.753 0-1.42-.375-1.822-.948m3.471-2.77c.034.037.082.06.132.06H9.03c.058 0 .1-.057.08-.112a4.7 4.7 0 0 0-.79-1.412.17.17 0 0 0-.13-.061H1.18a.17.17 0 0 0-.13.061c-.34.417-.609.894-.79 1.412a.084.084 0 0 0 .08.111h2.564c.05 0 .098-.022.132-.06.407-.448.995-.73 1.648-.73a2.22 2.22 0 0 1 1.648.73M6.89 5.37a.066.066 0 0 1-.063-.084 2.23 2.23 0 0 0-.077-1.43.067.067 0 0 1 .06-.091h2.417c.03 0 .057.021.063.051a4.7 4.7 0 0 1 .038 1.5.064.064 0 0 1-.063.054zm-4.347-.084a.066.066 0 0 1-.063.084H.105a.064.064 0 0 1-.063-.055A4.7 4.7 0 0 1 .08 3.816a.064.064 0 0 1 .063-.051H2.56c.046 0 .078.048.06.091a2.22 2.22 0 0 0-.077 1.43\"\n fill=\"#fff\"\n fillOpacity={opacity}\n />\n </svg>\n );\n});\n","import { BaseIconProps } from \"@orderly.network/ui\";\nimport React from \"react\";\n// import { BaseIcon, BaseIconProps } from \"./baseIcon\";\n\nexport const SignalIcon = React.forwardRef<SVGSVGElement, BaseIconProps>(\n (props, ref) => {\n const { size = 18, ...rest } = props;\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 18 18\"\n ref={ref}\n className=\"oui-fill-success-light\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path d=\"M9.02092 2.92969C6.18562 2.92969 3.51037 4.13854 1.68502 6.18754C1.40947 6.49676 1.446 6.96671 1.75537 7.24218C2.0646 7.51743 2.53447 7.48143 2.81002 7.17183C4.35112 5.44196 6.6141 4.42969 9.02092 4.42969C11.4205 4.42969 13.6369 5.43123 15.185 7.17183C15.4603 7.48143 15.9301 7.51743 16.2397 7.24218C16.5492 6.96694 16.5853 6.49699 16.31 6.18754C14.4787 4.12856 11.8512 2.92969 9.02092 2.92969ZM9.02092 5.92969C7.04092 5.92969 5.20867 6.78461 3.93502 8.25019C3.6633 8.56294 3.6927 9.03318 4.00537 9.30468C4.31797 9.57618 4.7883 9.54693 5.06002 9.23418C6.05175 8.09343 7.47982 7.42968 9.02092 7.42968C10.5348 7.42968 11.9446 8.08144 12.935 9.18769C13.2113 9.49593 13.681 9.51093 13.9897 9.23418C14.2983 8.95818 14.3364 8.48793 14.06 8.17968C12.7879 6.75896 10.9659 5.92969 9.02092 5.92969ZM9.02092 8.92968C7.91917 8.92968 6.89242 9.40218 6.18502 10.2189C5.91375 10.5317 5.94225 11.0019 6.25537 11.2734C6.56835 11.5449 7.03875 11.5164 7.31002 11.2029C7.73542 10.7124 8.3589 10.4297 9.02092 10.4297C9.6684 10.4297 10.2604 10.7072 10.685 11.1797C10.962 11.4879 11.4552 11.5037 11.7631 11.2262C12.0712 10.9494 12.087 10.4799 11.81 10.1717C11.1037 9.38643 10.0983 8.92968 9.02092 8.92968ZM8.99752 11.9297C8.81609 11.9297 8.64374 12.0047 8.50537 12.1404C8.50537 12.1404 7.3935 13.2362 6.95842 13.6637C6.52342 14.0919 6.7968 14.9319 7.49752 14.9297H9.63037H10.4975C11.1864 14.9319 11.477 14.0739 11.0366 13.6404C10.5961 13.2069 9.51322 12.1404 9.51314 12.1404C9.37469 12.0047 9.17894 11.9297 8.99752 11.9297Z\" />\n </svg>\n );\n }\n);\n\nSignalIcon.displayName = \"SignalIcon\";\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const InfoIcon: FC<IconProps> = (props) => {\n const { size = 20, viewBox, ...rest } = props;\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={`${size}px`}\n height={`${size}px`}\n fill=\"none\"\n viewBox={`0 0 20 20`}\n {...rest}\n >\n <path\n d=\"M10.012 1.66602C5.40954 1.66602 1.67871 5.39685 1.67871 9.99935C1.67871 14.6018 5.40954 18.3327 10.012 18.3327C14.6145 18.3327 18.3454 14.6018 18.3454 9.99935C18.3454 5.39685 14.6145 1.66602 10.012 1.66602ZM10.012 5.83268C10.472 5.83268 10.8454 6.20602 10.8454 6.66602V10.8327C10.8454 11.2927 10.472 11.666 10.012 11.666C9.55204 11.666 9.17871 11.2927 9.17871 10.8327V6.66602C9.17871 6.20602 9.55204 5.83268 10.012 5.83268ZM10.012 12.4993C10.472 12.4993 10.8454 12.8727 10.8454 13.3327C10.8454 13.7927 10.472 14.166 10.012 14.166C9.55204 14.166 9.17871 13.7927 9.17871 13.3327C9.17871 12.8727 9.55204 12.4993 10.012 12.4993Z\"\n fill=\"#FF7D00\"\n />\n </svg>\n );\n};\n","import React, { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport interface IconProps extends SVGProps<SVGSVGElement> {\n size: number;\n}\n\nexport const CloseIcon: FC<IconProps> = (props) => {\n const { size = 16, viewBox, ...rest } = props;\n return (\n <svg\n width={`${size}px`}\n height={`${size}px`}\n viewBox=\"0 0 16 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...rest}\n >\n <path\n d=\"M3.32972 2.60449C3.15912 2.60449 2.98072 2.66183 2.85052 2.79183C2.59019 3.0525 2.59019 3.48982 2.85052 3.75049L7.03806 7.93782L2.85052 12.1252C2.59019 12.3858 2.59019 12.8232 2.85052 13.0838C3.11092 13.3438 3.54852 13.3438 3.80892 13.0838L7.99639 8.89649L12.1839 13.0838C12.4443 13.3438 12.8819 13.3438 13.1423 13.0838C13.4026 12.8232 13.4026 12.3858 13.1423 12.1252L8.95472 7.93782L13.1423 3.75049C13.4026 3.48982 13.4026 3.0525 13.1423 2.79183C13.0121 2.66183 12.8336 2.60449 12.6631 2.60449C12.4925 2.60449 12.3141 2.66183 12.1839 2.79183L7.99639 6.97916L3.80892 2.79183C3.67872 2.66183 3.50032 2.60449 3.32972 2.60449Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","import { FC } from \"react\";\nimport { SVGProps } from \"react\";\n\nexport const OrderlyLogo: FC<SVGProps<SVGSVGElement>> = (props) => {\n return (\n <svg\n width=\"200\"\n height=\"24\"\n viewBox=\"0 0 200 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M22.2637 18.5152H26.1444V13.3629C26.1444 10.2669 27.9664 9.39239 29.6701 9.39239C29.9777 9.39239 30.2617 9.41602 30.6639 9.46329V6.20176C30.2853 6.10722 29.9777 6.08359 29.7174 6.08359C27.8481 6.08359 26.6886 7.3362 26.2153 9.27421H26.1444V6.22539H22.2637V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M37.3191 18.7516C39.1411 18.7516 40.3952 17.7826 40.7265 16.8608V18.5152H44.6072V1.97122H40.7265V7.87979C40.3952 6.95806 39.1411 5.98905 37.3191 5.98905C34.8108 5.98905 31.9713 7.83252 31.9713 12.3703C31.9713 16.9317 34.8108 18.7516 37.3191 18.7516ZM35.6153 12.3703C35.6153 10.196 36.9168 9.20331 38.2892 9.20331C39.638 9.20331 40.8921 10.196 40.8921 12.3703C40.8921 14.5447 39.638 15.5373 38.2892 15.5373C36.9168 15.5373 35.6153 14.5447 35.6153 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M53.418 18.7516C56.4468 18.7516 58.6475 17.1917 59.2154 14.3556H55.8079C55.595 15.1592 55.0744 15.8209 53.489 15.8209C51.9746 15.8209 51.0281 15.1355 50.8151 13.3393H59.31C59.3573 13.0557 59.381 12.8194 59.381 12.3703C59.381 7.57255 56.5888 5.98905 53.418 5.98905C50.1289 5.98905 47.1474 7.73799 47.1474 12.323C47.1474 17.0972 50.3655 18.7516 53.418 18.7516ZM50.8388 11.0941C51.0754 9.676 51.8799 8.9197 53.3234 8.9197C55.0981 8.9197 55.6423 10.0305 55.7133 11.0941H50.8388Z\"\n fill=\"white\"\n />\n <path\n d=\"M61.8978 18.5152H65.7784V13.3629C65.7784 10.2669 67.6005 9.39239 69.3042 9.39239C69.6118 9.39239 69.8957 9.41602 70.298 9.46329V6.20176C69.9194 6.10722 69.6118 6.08359 69.3515 6.08359C67.4821 6.08359 66.3227 7.3362 65.8494 9.27421H65.7784V6.22539H61.8978V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M72.5672 18.5152H76.4479V1.97122H72.5672V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M79.8261 20.0278V23.2893C83.6358 23.6911 85.2212 22.4149 86.8776 18.3734L91.8468 6.22539H87.8714L85.1739 13.5757L82.5473 6.22539H78.5957L83.0679 17.2626C83.3755 17.9953 83.3992 18.3734 83.1389 18.9643C82.9259 19.437 82.3817 20.3587 79.8261 20.0278Z\"\n fill=\"white\"\n />\n <path\n d=\"M100.278 18.5152H104.229V8.63609H104.324L110.287 18.5152H114.546V1.97122H110.571V12.1103H110.476L104.371 1.97122H100.278V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M123.327 18.7516C126.356 18.7516 128.557 17.1917 129.125 14.3556H125.717C125.504 15.1592 124.984 15.8209 123.398 15.8209C121.884 15.8209 120.937 15.1355 120.724 13.3393H129.219C129.267 13.0557 129.29 12.8194 129.29 12.3703C129.29 7.57255 126.498 5.98905 123.327 5.98905C120.038 5.98905 117.057 7.73799 117.057 12.323C117.057 17.0972 120.275 18.7516 123.327 18.7516ZM120.748 11.0941C120.985 9.676 121.789 8.9197 123.233 8.9197C125.007 8.9197 125.552 10.0305 125.623 11.0941H120.748Z\"\n fill=\"white\"\n />\n <path\n d=\"M137.439 18.6807C138.172 18.6807 138.882 18.5861 139.474 18.4207V15.5609C138.93 15.6082 138.717 15.6082 138.456 15.6082C137.202 15.6082 136.966 14.9228 136.966 14.072V9.22695H139.379V6.22539H136.966V3.01113H133.085V6.22539H130.979V9.22695H133.085V14.6156C133.085 17.4753 134.789 18.6807 137.439 18.6807Z\"\n fill=\"white\"\n />\n <path\n d=\"M144.456 18.5152H148.833L150.797 11.3777L152.761 18.5152H157.115L160.333 6.22539H156.666L154.749 14.781H154.654L152.454 6.22539H149.117L146.917 14.781H146.822L144.905 6.22539H141.261L144.456 18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M167.796 18.7516C170.896 18.7516 174.043 16.8845 174.043 12.3703C174.043 7.85616 170.896 5.98905 167.796 5.98905C164.673 5.98905 161.549 7.85616 161.549 12.3703C161.549 16.8845 164.673 18.7516 167.796 18.7516ZM165.169 12.3703C165.169 10.196 166.282 9.20331 167.796 9.20331C169.287 9.20331 170.399 10.196 170.399 12.3703C170.399 14.5447 169.287 15.5373 167.796 15.5373C166.282 15.5373 165.169 14.5447 165.169 12.3703Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.554 18.5152H180.434V13.3629C180.434 10.2669 182.256 9.39239 183.96 9.39239C184.268 9.39239 184.552 9.41602 184.954 9.46329V6.20176C184.575 6.10722 184.268 6.08359 184.007 6.08359C182.138 6.08359 180.979 7.3362 180.505 9.27421H180.434V6.22539H176.554V18.5152Z\"\n fill=\"white\"\n />\n <path\n d=\"M187.223 18.5152H191.104V14.9701L192.074 13.9302L195.742 18.5152H200.001L194.44 11.4249L199.362 6.22539H195.126L191.104 10.8104V1.97122H187.223V18.5152Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.66235 0.640167L9.70838 0.640167C12.1367 0.64581 14.355 1.54403 16.052 3.02375C16.1722 3.1286 16.0961 3.32102 15.9365 3.32102L3.43427 3.32102C3.27465 3.32102 3.1985 3.1286 3.31874 3.02375C5.01571 1.54403 7.23406 0.645809 9.66235 0.640167Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.9175 12.9472C5.84821 12.8485 5.73663 12.7865 5.61594 12.7865L0.606422 12.7865C0.461299 12.7865 0.355489 12.924 0.39667 13.063C1.58273 17.0661 5.29234 19.9869 9.68495 19.9869C14.0776 19.9869 17.7872 17.0661 18.9732 13.063C19.0144 12.924 18.9086 12.7865 18.7635 12.7865L13.754 12.7865C13.6333 12.7865 13.5218 12.8485 13.4525 12.9472C12.6208 14.1317 11.2434 14.9061 9.68499 14.9061C8.12654 14.9061 6.74917 14.1317 5.9175 12.9472Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M13.3322 7.51577C13.4208 7.63078 13.5556 7.7029 13.7009 7.7029L18.7216 7.7029C18.868 7.7029 18.9741 7.56325 18.9304 7.42361C18.551 6.2113 17.9392 5.10154 17.147 4.14637C17.0811 4.06686 16.9826 4.02197 16.8792 4.02197L2.4903 4.02197C2.38694 4.02197 2.28845 4.06686 2.22251 4.14637C1.43037 5.10153 0.818541 6.2113 0.439134 7.42361C0.395431 7.56325 0.501494 7.7029 0.647976 7.7029L5.66868 7.7029C5.81394 7.7029 5.9488 7.63078 6.03735 7.51577C6.87801 6.42387 8.19911 5.72017 9.68478 5.72017C11.1704 5.72017 12.4916 6.42387 13.3322 7.51577Z\"\n fill=\"white\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.1283 12.0868C14.0334 12.0868 13.969 11.9902 14.0018 11.9013C14.184 11.4069 14.2835 10.8724 14.2835 10.3148C14.2835 9.70687 14.1652 9.12653 13.9505 8.59547C13.9142 8.50592 13.9788 8.40582 14.0755 8.40582L19.0003 8.40582C19.1057 8.40582 19.1968 8.48012 19.2156 8.58377C19.3172 9.14546 19.3702 9.72401 19.3702 10.3149C19.3702 10.8567 19.3256 11.3881 19.2399 11.9057C19.2225 12.0108 19.1307 12.0868 19.0241 12.0868L14.1283 12.0868ZM5.36846 11.9013C5.40122 11.9902 5.33678 12.0868 5.24195 12.0868L0.346163 12.0868C0.239492 12.0868 0.147732 12.0108 0.130321 11.9057C0.0445957 11.3881 0 10.8567 0 10.3149C0 9.72401 0.0530502 9.14546 0.154653 8.58377C0.173403 8.48011 0.264481 8.40582 0.369941 8.40582L5.29476 8.40582C5.39146 8.40582 5.45599 8.50592 5.41977 8.59547C5.20498 9.12653 5.08673 9.70687 5.08673 10.3148C5.08673 10.8724 5.18623 11.4069 5.36846 11.9013Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n","import { Flex } from \"@orderly.network/ui\";\nimport { MainNavItem, NavItem } from \"./navItem\";\nimport { FC } from \"react\";\n\nexport type MainNavClassNames = {\n root?: string;\n navItem?: string;\n subMenu?: string;\n};\n\nexport type MainNavItemsProps = {\n items?: MainNavItem[];\n current?: string[];\n classNames?: MainNavClassNames;\n onItemClick?: (item: MainNavItem[]) => void;\n};\n\nexport const MainNavMenusUI: FC<MainNavItemsProps> = (props) => {\n const { items, classNames } = props;\n\n if (!Array.isArray(items) || items.length === 0) return null;\n\n return (\n <Flex gap={2} className={classNames?.root}>\n {items?.map((item, index) => (\n <NavItem\n key={index}\n item={item}\n // active={item.href === props.current?.[0]}\n currentPath={props.current}\n onClick={props.onItemClick}\n />\n ))}\n </Flex>\n );\n};\n","import { FC } from \"react\";\nimport { MainNavMenusUI, type MainNavItemsProps } from \"./mainNavMenus.ui\";\nimport {\n ExtensionPositionEnum,\n ExtensionSlot,\n installExtension,\n} from \"@orderly.network/ui\";\n\nexport const MainNavMenusWidget: FC<MainNavItemsProps> = (props) => {\n return <MainNavMenusUI {...props} />;\n};\n\ninstallExtension<MainNavItemsProps>({\n name: \"default-main-nav-menus\",\n scope: [\"*\"],\n positions: [ExtensionPositionEnum.MainMenus],\n __isInternal: true,\n})((props: MainNavItemsProps) => {\n return <MainNavMenusUI {...props} />;\n});\n\nexport const MainNavMenusExtension: FC<MainNavItemsProps> = (props) => {\n return (\n <ExtensionSlot position={ExtensionPositionEnum.MainMenus} {...props} />\n );\n};\n","import { 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=\"#59B0FE\" />\n <stop offset=\"1\" stopColor=\"#26FEFE\" />\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 OrderlyNetworkTextIcon,\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 direction={\"row\"} justify={\"between\"} height={28} px={3} width={\"100%\"}>\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.discordmUrl !== \"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.discordmUrl)}\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 </Flex>\n </Flex>\n <Flex direction={\"row\"} gap={1}>\n <Text intensity={54} size=\"2xs\">\n Powered by\n </Text>\n <OrderlyNetworkTextIcon />\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 discordmUrl?: string;\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 isTable = useMediaQuery(MEDIA_TABLET);\n if (isTable) {\n return <></>;\n }\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 >\n <DialogHeader>\n <DialogTitle>System upgrade in progress</DialogTitle>\n </DialogHeader>\n <Divider />\n <DialogBody>{dialogContent}</DialogBody>\n </DialogContent>\n </Dialog>\n );\n }\n if (!showTips) {\n return <></>;\n }\n return (\n <Flex\n className={cn(\n \"oui-w-full oui-bg-warning-darken/10 oui-text-warning-darken oui-text-sm oui-relative oui-gap-1 oui-pl-4 oui-pr-[60px] oui-py-3\",\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 <InfoIcon size={20} className=\"oui-flex-shrink-0 oui-w-5 oui-h-5 \" />\n <Box className=\"oui-font-semibold \">{tipsContent}</Box>\n <CloseIcon\n size={16}\n className=\"oui-absolute 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 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 { Box, cn, Grid } 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 { useMemo, isValidElement } from \"react\";\nimport { ExpandableContext, routerAdapter } from \"./scaffoldContext\";\nimport { checkChainSupport } from \"../utils/chain\";\nimport { FooterProps, FooterWidget } from \"./footer\";\nimport { MaintenanceTipsWidget } from \"./maintenanceTips\";\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 \n return (\n <div\n className={cn(\n \"oui-scaffold-root oui-font-semibold\",\n // default text and background color\n \"oui-text-base-contrast oui-bg-base-10\",\n \"oui-flex oui-flex-col\",\n \"oui-overflow-auto oui-custom-scrollbar\",\n classNames?.root\n )}\n style={{\n height: `calc(100vh - ${footerHeight}px)`,\n }}\n >\n <ExpandableContext.Provider\n value={{\n routerAdapter,\n expanded: expand,\n setExpand: onExpandChange,\n checkChainSupport: checkChainSupportHandle,\n }}\n >\n {/* Top main nav */}\n <Box\n className={cn(\n \"oui-scaffold-topNavbar oui-bg-base-9\",\n \"oui-hidden xl:oui-block oui-min-w-[1440px]\",\n // \"oui-border-b oui-border-line-12\",\n classNames?.topNavbar\n )}\n >\n {props.topBar ?? <MainNavWidget {...props.mainNavProps} />}\n </Box>\n <MaintenanceTipsWidget />\n {/*--------- body start ------ */}\n {!hasLeftSidebar ? (\n // ----------No leftSidebar layout start ---------\n <Box className={classNames?.content}>{props.children}</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\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"]}