{"version":3,"sources":["../src/components/marketsProvider/index.tsx","../src/components/rwaDotTooltip.tsx","../src/components/symbolBadge.tsx","../src/components/symbolDisplay.tsx","../src/icons.tsx","../src/pages/home/marketsHeader/marketsHeader.ui.tsx","../src/utils.ts","../src/pages/home/marketsHeader/marketsHeader.script.tsx","../src/pages/home/marketsHeader/marketsHeader.mobile.ui.tsx","../src/pages/home/marketsHeader/marketsHeader.widget.tsx","../src/hooks/useCommunityTabs.ts","../src/components/communityBrokerTabs/communityBrokerTabs.ui.tsx","../src/components/communityBrokerTabs/index.ts","../src/components/collapseMarkets/index.tsx","../src/components/shared/lowVolumeMarketFilter.ts","../src/components/shared/lowVolumeEmptyView.tsx","../src/components/favoritesDropdownMenu/favoritesDropdownMenu.ui.tsx","../src/components/favoritesDropdownMenu/favoritesDropdownMenu.script.ts","../src/components/favoritesDropdownMenu/favoritesDropdownMenu.widget.tsx","../src/components/favoritesDropdownMenu/index.ts","../src/components/shared/column.tsx","../src/components/sideMarkets/column.tsx","../src/components/marketsList/marketsList.ui.tsx","../src/type.ts","../src/components/shared/marketVolumeFilter.ts","../src/components/marketsList/marketsList.script.ts","../src/components/marketsList/marketsList.widget.tsx","../src/components/marketsList/index.tsx","../src/components/rwaSubcategoryTabs/rwaSubcategoryTabs.ui.tsx","../src/components/rwaSubcategoryTabs/index.ts","../src/components/rwaTab.tsx","../src/components/searchInput/index.tsx","../src/components/favoritesEmpty/index.tsx","../src/components/favoritesTabs/favoritesTabs.ui.tsx","../src/components/favoritesTabs/favoritesTabs.script.ts","../src/components/favoritesTabs/favoritesTabs.widget.tsx","../src/components/favoritesTabs/index.ts","../src/components/shared/hooks/useFavoritesExtraProps.tsx","../src/components/shared/showLowVolumeFilter.tsx","../src/components/shared/tabUtils.tsx","../src/pages/home/marketsDataList/marketsDataList.mobile.ui.tsx","../src/components/shared/hooks/useTabSort.ts","../src/pages/home/marketsDataList/marketsDataList.script.ts","../src/components/marketsListFull/column.tsx","../src/components/favoritesListFull/favoritesListFull.ui.tsx","../src/components/favoritesListFull/favoritesListFull.script.ts","../src/components/favoritesListFull/favoritesListFull.widget.tsx","../src/components/favoritesListFull/index.tsx","../src/components/marketsListFull/marketsListFull.ui.tsx","../src/components/marketsListFull/marketsListFull.script.ts","../src/components/marketsListFull/marketsListFull.widget.tsx","../src/components/marketsListFull/index.tsx","../src/pages/home/marketsDataList/marketsDataList.ui.tsx","../src/pages/home/marketsDataList/marketsDataList.widget.tsx","../src/pages/home/marketsDataList/index.ts","../src/components/expandMarkets/expandMarkets.ui.tsx","../src/constant.ts","../src/components/expandMarkets/expandMarkets.script.ts","../src/registry/builtInTabRegistry.ts","../src/components/shared/hooks/useMarketCategories.ts","../src/components/expandMarkets/expandMarkets.widget.tsx","../src/components/expandMarkets/index.ts","../src/components/fundingOverview/columns.tsx","../src/components/fundingOverview/fundingOverview.ui.tsx","../src/components/fundingOverview/fundingOverview.script.tsx","../src/components/fundingOverview/fundingOverview.mobile.ui.tsx","../src/components/fundingOverview/fundingOverview.widget.tsx","../src/components/fundingOverview/index.tsx","../src/components/fundingComparison/useEXchanges.ts","../src/components/fundingComparison/columns.tsx","../src/components/fundingComparison/fundingComparison.ui.tsx","../src/components/fundingComparison/fundingComparison.script.tsx","../src/components/fundingComparison/fundingComparison.mobile.ui.tsx","../src/components/fundingComparison/fundingComparison.widget.tsx","../src/components/fundingComparison/index.tsx","../src/components/sideMarkets/sideMarkets.ui.tsx","../src/components/dropDownMarkets/column.tsx","../src/components/dropDownMarkets/dropDownMarkets.ui.tsx","../src/components/dropDownMarkets/dropDownMarkets.script.ts","../src/components/dropDownMarkets/dropDownMarkets.widget.tsx","../src/components/dropDownMarkets/index.ts","../src/components/symbolInfoBarFull/dataItem.ui.tsx","../src/components/horizontalMarkets/marketItem.ui.tsx","../src/components/horizontalMarkets/marketTypeFilter.ui.tsx","../src/components/horizontalMarkets/horizontalMarkets.ui.tsx","../src/pages/home/funding/funding.mobile.ui.tsx","../src/pages/home/funding/funding.script.tsx","../src/pages/home/funding/funding.ui.tsx","../src/pages/home/funding/funding.widget.tsx","../src/pages/home/marketsHeader/index.ts","../src/index.ts","../src/components/subMenuMarkets/subMenuMarkets.ui.tsx","../src/components/subMenuMarkets/subMenuMarkets.widget.tsx","../src/components/subMenuMarkets/subMenuMarkets.script.ts","../src/components/sideMarkets/index.ts","../src/components/sideMarkets/sideMarkets.script.ts","../src/components/sideMarkets/sideMarkets.widget.tsx","../src/components/marketsSheet/marketsSheet.ui.tsx","../src/components/marketsSheet/column.tsx","../src/components/marketsSheet/marketsSheet.script.ts","../src/components/marketsSheet/marketsSheet.widget.tsx","../src/components/symbolInfoBar/symbolInfoBar.ui.tsx","../src/components/symbolInfoBarFull/rwaTooltip.tsx","../src/components/symbolInfoBar/symbolInfoBar.script.ts","../src/components/symbolInfoBar/symbolInfoBar.widget.tsx","../src/components/symbolInfoBarFull/symbolInfoBarFull.ui.tsx","../src/components/fundingRateHint/fundingRateHint.ui.tsx","../src/components/fundingRateHint/fundingRateHint.script.tsx","../src/components/fundingRateHint/fundingRateHint.widget.tsx","../src/components/symbolInfoBarFull/symbolInfoBarFull.script.ts","../src/components/symbolInfoBarFull/symbolInfoBarFull.injectable.tsx","../src/components/symbolInfoBarFull/symbolInfoBarFull.widget.tsx","../src/components/horizontalMarkets/horizontalMarkets.widget.tsx","../src/components/horizontalMarkets/horizontalMarkets.script.ts","../src/components/horizontalMarkets/index.ts","../src/deprecated/newListingList/newListingList.ui.tsx","../src/deprecated/newListingList/newListingList.script.ts","../src/deprecated/newListingList/widget.tsx","../src/deprecated/favoritesList/favoritesList.ui.tsx","../src/deprecated/favoritesList/favoritesList.script.ts","../src/deprecated/favoritesList/widget.tsx","../src/deprecated/recentList/recentList.ui.tsx","../src/deprecated/recentList/recentList.script.ts","../src/deprecated/recentList/widget.tsx","../src/pages/home/page.tsx"],"names":["jsx","UISymbolBadge","Flex","Text","jsxs","useTranslation","cn","useMemo","Box","useState","useCallback","Decimal","BlockList","BlockItem","CardItem","ListItem","useMarkets","MarketsType","Tabs","TabPanel","TokenIcon","Tooltip","useLocalStorage","Button","Badge","init_column","MarketsPageTab","MarketsTabName","CommunitySubTabName","FundingTabName","useEffect","useRef","Input","CloseCircleFillIcon","PlusIcon","open","tab","Fragment","DataTable","MarketsTypeMap","usePagination","React","useScreen","LazySearchInput","i18n","useSymbolsInfo","init_columns","useFundingRates","useQuery","useRwaSymbolsInfoStore","DropdownMenuRoot","DropdownMenuTrigger","DropdownMenuPortal","DropdownMenuContent","CloseIcon","cls","Divider","Checkbox","SIDE_MARKETS_SEL_TAB_KEY","modal","Trans","useBadgeBySymbol","useTickerStream","useFundingRate","useGetRwaSymbolInfo","useFundingDetails"],"mappings":"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","file":"index.mjs","sourcesContent":["import {\n  FC,\n  createContext,\n  PropsWithChildren,\n  useState,\n  useContext,\n  useCallback,\n  useMemo,\n} from \"react\";\nimport type { API, RouterAdapter } from \"@orderly.network/types\";\nimport { LeftNavProps } from \"@orderly.network/ui-scaffold\";\nimport type { MarketTabConfig } from \"../../type\";\n\ntype MarketsContextState = {\n  symbol?: string;\n  searchValue?: string;\n  onSearchValueChange?: (searchValue: string) => void;\n  clearSearchValue?: () => void;\n  tabs?: MarketTabConfig[];\n} & MarketsProviderProps;\n\nexport const MarketsContext = createContext<MarketsContextState>({});\n\nexport type MarketsProviderProps = {\n  symbol?: string;\n  onSymbolChange?: (symbol: API.Symbol) => void;\n  // only for mobile\n  navProps?: {\n    logo?: {\n      src: string;\n      alt: string;\n    };\n    routerAdapter?: RouterAdapter;\n    leftNav?: LeftNavProps;\n  };\n  comparisonProps?: {\n    /**\n     * Set Name of Exchanges in the comparison list.\n     * @default 'Orderly'\n     */\n    exchangesName?: string;\n    /**\n     * Set Icon URL of Exchanges in the comparison list.\n     * @default \"\"\n     */\n    exchangesIconSrc?: string;\n  };\n  tabs?: MarketTabConfig[];\n};\n\nexport const MarketsProvider: FC<PropsWithChildren<MarketsProviderProps>> = (\n  props,\n) => {\n  const { symbol, comparisonProps, children, onSymbolChange, tabs } = props;\n  const [searchValue, setSearchValue] = useState(\"\");\n\n  const clearSearchValue = useCallback(() => {\n    setSearchValue(\"\");\n  }, []);\n\n  const memoizedValue = useMemo<MarketsContextState>(() => {\n    return {\n      searchValue,\n      onSearchValueChange: setSearchValue,\n      clearSearchValue,\n      symbol: symbol,\n      onSymbolChange: onSymbolChange,\n      comparisonProps: comparisonProps,\n      tabs: tabs,\n    };\n  }, [\n    searchValue,\n    symbol,\n    onSymbolChange,\n    setSearchValue,\n    comparisonProps,\n    tabs,\n  ]);\n\n  return (\n    <MarketsContext.Provider value={memoizedValue}>\n      {children}\n    </MarketsContext.Provider>\n  );\n};\n\nexport const useMarketsContext = () => {\n  return useContext<MarketsContextState>(MarketsContext);\n};\n","import {\n  isCurrentlyTrading,\n  useGetRwaSymbolOpenStatus,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Text, Tooltip, Box } from \"@orderly.network/ui\";\n\nexport type RwaDotTooltipProps = {\n  record: any;\n};\n\nexport const RwaDotTooltip = ({ record }: RwaDotTooltipProps) => {\n  const { t } = useTranslation();\n  const { open: computedOpen } = useGetRwaSymbolOpenStatus(record.symbol);\n  const open =\n    computedOpen ??\n    isCurrentlyTrading(\n      record.rwaNextClose,\n      record.rwaStatus,\n      undefined,\n      record.rwaNextOpen,\n    );\n\n  if (!record.isRwa) {\n    return null;\n  }\n\n  return (\n    <Tooltip\n      className=\"oui-pointer-events-none\"\n      disableHoverableContent\n      content={\n        <Text color={open ? \"success\" : \"danger\"}>\n          {open\n            ? t(\"trading.rwa.marketHours\")\n            : t(\"trading.rwa.outsideMarketHours\")}\n        </Text>\n      }\n    >\n      <Box\n        as=\"span\"\n        py={2}\n        px={1}\n        className=\"oui-inline-flex oui-shrink-0 oui-items-center\"\n      >\n        <Box\n          as=\"span\"\n          width={4}\n          height={4}\n          r=\"full\"\n          className={open ? \"oui-bg-success\" : \"oui-bg-danger\"}\n        />\n      </Box>\n    </Tooltip>\n  );\n};\n","import { type FC } from \"react\";\nimport { useBadgeBySymbol } from \"@orderly.network/hooks\";\nimport { Flex, SymbolBadge as UISymbolBadge } from \"@orderly.network/ui\";\n\nexport const BrokerIdBadge: FC<{ symbol: string; className?: string }> = (\n  props,\n) => {\n  const { brokerId, brokerName, brokerNameRaw } = useBadgeBySymbol(\n    props.symbol,\n  );\n  const badge = brokerName ?? brokerId ?? undefined;\n\n  if (!badge) {\n    return null;\n  }\n\n  return (\n    <Flex as=\"span\" display=\"inlineFlex\" className={props.className}>\n      <UISymbolBadge badge={badge} fullName={brokerNameRaw} />\n    </Flex>\n  );\n};\n\nexport const SymbolBadge = BrokerIdBadge;\n","import { memo } from \"react\";\nimport { useSymbolsInfo } from \"@orderly.network/hooks\";\nimport { Text, FormattedTextProps, TokenIcon, Flex } from \"@orderly.network/ui\";\nimport { RwaDotTooltip } from \"./rwaDotTooltip\";\nimport { SymbolBadge } from \"./symbolBadge\";\n\ntype SymbolDisplayProps = FormattedTextProps & {\n  showBadge?: boolean;\n  /** Market row data used for RWA status fields. */\n  record?: any;\n};\n\nexport const SymbolDisplay = memo((props: SymbolDisplayProps) => {\n  const { children, size = \"xs\", showBadge = true, record, ...rest } = props;\n  const symbol = children as string;\n\n  const symbolsInfo = useSymbolsInfo();\n  const info = symbolsInfo[symbol];\n  const displayName = info(\"display_symbol_name\")?.trim?.();\n\n  const suffix =\n    record?.isRwa || showBadge ? (\n      <Flex as=\"span\" display=\"inlineFlex\" gapX={0} itemAlign=\"center\">\n        {record?.isRwa && <RwaDotTooltip record={record} />}\n        {showBadge && <SymbolBadge symbol={symbol} />}\n      </Flex>\n    ) : null;\n\n  if (displayName) {\n    return (\n      <Flex gapX={1} className={props.className}>\n        {props.showIcon && <TokenIcon size={size as any} symbol={symbol} />}\n        <Text\n          size=\"xs\"\n          weight=\"semibold\"\n          className=\"oui-whitespace-nowrap oui-break-normal\"\n        >\n          {displayName}\n        </Text>\n        {suffix}\n      </Flex>\n    );\n  }\n\n  return (\n    <Text.formatted\n      size=\"xs\"\n      rule=\"symbol\"\n      weight=\"semibold\"\n      suffix={suffix}\n      {...rest}\n    >\n      {symbol}\n    </Text.formatted>\n  );\n});\n","import React, { FC, PropsWithChildren, SVGProps } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\n\nexport const EditIcon: 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    <mask\n      id=\"a\"\n      style={{ maskType: \"alpha\" }}\n      maskUnits=\"userSpaceOnUse\"\n      x=\"0\"\n      y=\"0\"\n      width=\"16\"\n      height=\"16\"\n    >\n      <path fill=\"rgb(var(--oui-color-tertiary))\" d=\"M0 0h16v16H0z\" />\n    </mask>\n    <g mask=\"url(#a)\">\n      <path d=\"M3.333 12.667h.95L10.8 6.15l-.95-.95-6.517 6.517zM2.667 14a.65.65 0 0 1-.475-.192.65.65 0 0 1-.192-.475v-1.616a1.32 1.32 0 0 1 .383-.934l8.417-8.4q.2-.183.442-.283.24-.1.508-.1.267 0 .517.1.249.1.433.3l.917.933q.2.184.291.434a1.44 1.44 0 0 1 0 1.008 1.25 1.25 0 0 1-.291.442l-8.4 8.4a1.32 1.32 0 0 1-.933.383zm7.65-8.317L9.85 5.2l.95.95z\" />\n    </g>\n  </svg>\n);\n\nexport const TrashIcon: 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=\"M7.205 1.334c-.345 0-.674.136-.918.38L6.001 2H2.667a.667.667 0 1 0 0 1.334h10.667a.667.667 0 1 0 0-1.334h-3.333l-.287-.286a1.3 1.3 0 0 0-.918-.38zM2.911 4.667l1.018 8.842c.088.66.656 1.158 1.322 1.158h5.498c.666 0 1.235-.497 1.323-1.163l1.019-8.837z\" />\n  </svg>\n);\n\nexport const AllMarketsIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"12\"\n    height=\"12\"\n    viewBox=\"0 0 12 12\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <mask\n      id=\"a\"\n      style={{ maskType: \"alpha\" }}\n      maskUnits=\"userSpaceOnUse\"\n      x=\"0\"\n      y=\"0\"\n      width=\"12\"\n      height=\"12\"\n    >\n      <path fill=\"rgb(var(--oui-color-tertiary))\" d=\"M0 0h12v12H0z\" />\n    </mask>\n    <g mask=\"url(#a)\">\n      <path d=\"M8.5 10a.48.48 0 0 1-.356-.144A.48.48 0 0 1 8 9.5V7q0-.213.144-.356A.48.48 0 0 1 8.5 6.5h1q.212 0 .356.144A.48.48 0 0 1 10 7v2.5q0 .212-.144.356A.48.48 0 0 1 9.5 10zm-3 0a.48.48 0 0 1-.356-.144A.48.48 0 0 1 5 9.5v-7q0-.212.144-.356A.48.48 0 0 1 5.5 2h1q.213 0 .356.144A.48.48 0 0 1 7 2.5v7q0 .212-.144.356A.48.48 0 0 1 6.5 10zm-3 0a.48.48 0 0 1-.356-.144A.48.48 0 0 1 2 9.5V5q0-.213.144-.356A.48.48 0 0 1 2.5 4.5h1q.212 0 .356.144A.48.48 0 0 1 4 5v4.5q0 .212-.144.356A.48.48 0 0 1 3.5 10z\" />\n    </g>\n  </svg>\n);\n\nexport const NewListingsIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"12\"\n    height=\"12\"\n    viewBox=\"0 0 12 12\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M5.993.958a.416.416 0 0 0-.41.422v.416a.416.416 0 1 0 .832 0V1.38a.416.416 0 0 0-.422-.422M2.749 2.29a.416.416 0 0 0-.29.714l.291.292a.416.416 0 1 0 .589-.588l-.292-.292a.42.42 0 0 0-.298-.126m6.489 0a.42.42 0 0 0-.286.126l-.292.292a.416.416 0 1 0 .588.588l.292-.292a.416.416 0 0 0-.302-.714m-3.239.753a2.895 2.895 0 0 0-2.913 2.914A2.86 2.86 0 0 0 4.751 8.58v1.123c0 .458.374.833.832.833h.832a.835.835 0 0 0 .833-.833V8.58a2.86 2.86 0 0 0 1.665-2.622 2.895 2.895 0 0 0-2.914-2.914M1.421 5.541a.416.416 0 1 0 0 .833h.417a.416.416 0 1 0 0-.833zm8.74 0a.416.416 0 1 0 0 .833h.416a.417.417 0 1 0 0-.833zM3.037 8.492a.42.42 0 0 0-.287.126l-.291.292a.416.416 0 1 0 .588.588l.292-.292a.416.416 0 0 0-.302-.714m5.913 0a.416.416 0 0 0-.29.714l.292.292a.416.416 0 1 0 .588-.588l-.292-.292a.42.42 0 0 0-.298-.126\" />\n  </svg>\n);\n\nexport const FavoritesIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"20\"\n    height=\"21\"\n    viewBox=\"0 0 20 21\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n    // The color of the favorite icon does not change with the theme.\n    className={cn(\"oui-text-[rgba(255,154,46,1)]\", props.className)}\n  >\n    <mask\n      id=\"a\"\n      style={{ maskType: \"alpha\" }}\n      maskUnits=\"userSpaceOnUse\"\n      x=\"0\"\n      y=\"0\"\n      width=\"20\"\n      height=\"21\"\n    >\n      <path fill=\"#D9D9D9\" d=\"M0 .5h20v20H0z\" />\n    </mask>\n    <g mask=\"url(#a)\">\n      <path d=\"m10 14.074-3.2 1.913a.6.6 0 0 1-.332.068.6.6 0 0 1-.277-.101.5.5 0 0 1-.186-.256.5.5 0 0 1-.005-.336l.84-3.556-2.82-2.394a.5.5 0 0 1-.174-.281.6.6 0 0 1 .013-.315.5.5 0 0 1 .173-.252.55.55 0 0 1 .305-.112l3.693-.33 1.467-3.393a.57.57 0 0 1 .211-.255A.54.54 0 0 1 10 4.39q.16 0 .292.083.131.082.211.255l1.467 3.414 3.693.309q.178.014.305.123.126.11.173.262t.002.304a.56.56 0 0 1-.183.27l-2.8 2.395.84 3.556a.5.5 0 0 1-.005.336.5.5 0 0 1-.186.256.6.6 0 0 1-.277.101.6.6 0 0 1-.332-.068z\" />\n    </g>\n  </svg>\n);\n\nexport const UnFavoritesIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"20\"\n    height=\"21\"\n    viewBox=\"0 0 20 21\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n    // The color of the favorite icon does not change with the theme.\n    className={cn(\n      \"oui-text-base-contrast-36 hover:oui-text-[rgba(255,154,46,1)]\",\n      props.className,\n    )}\n  >\n    <mask\n      id=\"a\"\n      style={{ maskType: \"alpha\" }}\n      maskUnits=\"userSpaceOnUse\"\n      x=\"0\"\n      y=\"0\"\n      width=\"20\"\n      height=\"21\"\n    >\n      <path fill=\"#D9D9D9\" d=\"M0 .5h20v20H0z\" />\n    </mask>\n    <g mask=\"url(#a)\">\n      <path d=\"M7.333 14.396 10 12.813l2.688 1.583-.709-3 2.313-1.98-3.063-.27L10 6.292 8.77 9.146l-3.062.27 2.334 1.98zM10 14.074l-3.2 1.913a.6.6 0 0 1-.332.068.6.6 0 0 1-.277-.101.5.5 0 0 1-.186-.256.5.5 0 0 1-.005-.336l.84-3.556-2.82-2.394a.5.5 0 0 1-.174-.281.6.6 0 0 1 .013-.315.5.5 0 0 1 .173-.252.55.55 0 0 1 .305-.112l3.693-.33 1.467-3.393a.57.57 0 0 1 .211-.255A.54.54 0 0 1 10 4.39q.16 0 .292.083.131.082.211.255l1.467 3.414 3.693.309q.178.014.305.123.126.11.173.262t.002.304a.56.56 0 0 1-.183.27l-2.8 2.395.84 3.556a.5.5 0 0 1-.005.336.5.5 0 0 1-.186.256.6.6 0 0 1-.277.101.6.6 0 0 1-.332-.068z\" />\n    </g>\n  </svg>\n);\n\nexport const CirclePlusIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"18\"\n    height=\"18\"\n    viewBox=\"0 0 18 18\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <mask\n      id=\"a\"\n      style={{ maskType: \"alpha\" }}\n      maskUnits=\"userSpaceOnUse\"\n      x=\"0\"\n      y=\"0\"\n      width=\"18\"\n      height=\"18\"\n    >\n      <path fill=\"rgb(var(--oui-color-tertiary))\" d=\"M0 0h18v18H0z\" />\n    </mask>\n    <g mask=\"url(#a)\">\n      <path d=\"M8.325 12.6h1.35V9.675H12.6v-1.35H9.675V5.4h-1.35v2.925H5.4v1.35h2.925zm.68 3.6a7 7 0 0 1-2.799-.562A7.3 7.3 0 0 1 3.91 14.09a7.3 7.3 0 0 1-1.546-2.296A7 7 0 0 1 1.8 8.99q0-1.49.563-2.794a7.26 7.26 0 0 1 3.843-3.834A7 7 0 0 1 9.009 1.8q1.49 0 2.794.562 1.303.563 2.288 1.547a7.3 7.3 0 0 1 1.547 2.292q.561 1.308.562 2.794a7 7 0 0 1-.562 2.799 7.3 7.3 0 0 1-1.547 2.297 7.3 7.3 0 0 1-2.292 1.547 7 7 0 0 1-2.794.562M9 14.85q2.437 0 4.144-1.706Q14.85 11.437 14.85 9t-1.706-4.144Q11.437 3.15 9 3.15T4.856 4.856 3.15 9t1.706 4.144Q6.563 14.85 9 14.85\" />\n    </g>\n  </svg>\n);\n\nexport const SearchIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"14\"\n    height=\"14\"\n    viewBox=\"0 0 14 14\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M5.841 1.14a4.667 4.667 0 0 0 0 9.333 4.74 4.74 0 0 0 2.875-.975l2.54 2.56a.6.6 0 0 0 .838 0 .6.6 0 0 0 0-.838L9.537 8.677a4.72 4.72 0 0 0 .971-2.871 4.667 4.667 0 0 0-4.667-4.667m0 1.166a3.5 3.5 0 1 1 0 7 3.5 3.5 0 0 1 0-7\" />\n  </svg>\n);\n\nexport const MoveToTopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"20\"\n    height=\"21\"\n    viewBox=\"0 0 20 21\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M10 5.5a.76.76 0 0 0-.583.25l-4.334 4c0 .083-.083.25-.083.333 0 .25.167.417.417.417h2.916v6.667c0 .416.334.833.834.833h1.666c.5 0 .834-.417.834-.833V10.5h2.916c.25 0 .417-.167.417-.417 0-.083-.083-.25-.083-.333l-4.25-4.084c-.25-.083-.417-.166-.667-.166M2.177 3.06A.8.8 0 0 1 2.5 3h15a.834.834 0 1 1 0 1.667h-15a.833.833 0 0 1-.323-1.607\" />\n  </svg>\n);\n\nexport const OrderlyIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"12\"\n    height=\"13\"\n    viewBox=\"0 0 12 13\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path\n      fillRule=\"evenodd\"\n      clipRule=\"evenodd\"\n      d=\"M6.015.34h-.029a5.98 5.98 0 0 0-3.93 1.477c-.074.065-.027.184.072.184h7.745c.099 0 .146-.119.072-.184A5.98 5.98 0 0 0 6.015.341M3.48 7.866a.23.23 0 0 1 .187.1A2.85 2.85 0 0 0 6 9.178a2.85 2.85 0 0 0 2.334-1.213.23.23 0 0 1 .186-.1h3.104c.09 0 .155.086.13.172A6 6 0 0 1 6 12.327a6 6 0 0 1-5.755-4.29.134.134 0 0 1 .13-.172zM8.26 4.6a.29.29 0 0 0 .229.116h3.11c.09 0 .156-.086.13-.173a6 6 0 0 0-1.106-2.03.22.22 0 0 0-.165-.077H1.543a.22.22 0 0 0-.165.077 6 6 0 0 0-1.105 2.03.134.134 0 0 0 .13.173h3.11A.29.29 0 0 0 3.74 4.6 2.85 2.85 0 0 1 6 3.488c.92 0 1.738.436 2.26 1.112m.414 2.717c-.02.055.02.115.079.115h3.033a.135.135 0 0 0 .133-.112 6 6 0 0 0-.015-2.058.135.135 0 0 0-.133-.11H8.72c-.06 0-.1.061-.078.117a2.83 2.83 0 0 1 .032 2.048m-5.427.115c.06 0 .1-.06.079-.115a2.84 2.84 0 0 1 .032-2.048.085.085 0 0 0-.078-.118H.23a.135.135 0 0 0-.134.11A6 6 0 0 0 .08 7.32c.01.065.067.112.133.112z\"\n    />\n  </svg>\n);\n\nexport const FavoritesIcon2: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"12\"\n    height=\"13\"\n    viewBox=\"0 0 12 13\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n    // The color of the favorite icon does not change with the theme.\n    className={cn(\"oui-text-[rgba(255,154,46,1)]\", props.className)}\n  >\n    <path d=\"M6.012 1.72c-.286 0-.577.178-.75.532L4.2 4.438l-2.42.344c-.78.108-1.03.872-.47 1.42l1.75 1.703-.407 2.39c-.133.773.508 1.24 1.203.874.268-.142 1.648-.857 2.155-1.124l2.155 1.124c.695.367 1.339-.1 1.202-.874l-.421-2.39 1.749-1.702c.565-.547.326-1.31-.453-1.421l-2.436-.344L6.76 2.252c-.172-.354-.464-.531-.75-.531\" />\n  </svg>\n);\n\nexport const UnFavoritesIcon2: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"12\"\n    height=\"13\"\n    viewBox=\"0 0 12 13\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n    // The color of the favorite icon does not change with the theme.\n    className={cn(\n      \"oui-text-base-contrast-36 hover:oui-text-[rgba(255,154,46,1)]\",\n      props.className,\n    )}\n  >\n    <path d=\"M6.012 1.72c-.286 0-.577.178-.75.532L4.2 4.438l-2.42.344c-.78.108-1.03.872-.47 1.42l1.75 1.703-.407 2.39c-.133.773.508 1.24 1.203.874.268-.142 1.648-.857 2.155-1.124l2.155 1.124c.695.367 1.339-.1 1.202-.874l-.421-2.39 1.749-1.702c.565-.547.326-1.31-.453-1.421l-2.436-.344L6.76 2.252c-.172-.354-.464-.531-.75-.531m0 1.297 1.03 2.108c.073.15.211.242.375.266l2.343.343-1.702 1.64a.48.48 0 0 0-.14.437l.405 2.312L6.246 9.03a.5.5 0 0 0-.468 0L3.7 10.123l.39-2.296a.52.52 0 0 0-.14-.453l-1.687-1.64 2.327-.328a.52.52 0 0 0 .39-.28z\" />\n  </svg>\n);\n\nexport const TopIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"16\"\n    height=\"17\"\n    viewBox=\"0 0 16 17\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M2.01 2.915a.667.667 0 1 0 0 1.334h12a.667.667 0 0 0 0-1.334zM7.343 13.59a.667.667 0 0 0 1.333 0V7.88l2 1.98.937-.938L8.49 5.777a.686.686 0 0 0-.959 0L4.405 8.923l.938.937 2-1.979z\" />\n  </svg>\n);\n\nexport const DeleteIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"16\"\n    height=\"17\"\n    viewBox=\"0 0 16 17\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M4.67 2.203A2.667 2.667 0 0 0 2.005 4.87v6.667a2.667 2.667 0 0 0 2.667 2.666h6.666a2.667 2.667 0 0 0 2.667-2.666V4.87a2.667 2.667 0 0 0-2.667-2.667zm1.334 3.334c.17 0 .349.057.48.187l1.52 1.52 1.52-1.52a.68.68 0 0 1 .48-.187c.17 0 .349.057.48.187.26.26.26.698 0 .959l-1.521 1.52 1.52 1.52c.26.262.26.699 0 .96a.687.687 0 0 1-.958 0L8.004 9.162l-1.52 1.52a.687.687 0 0 1-.96 0 .687.687 0 0 1 0-.958l1.521-1.52-1.52-1.521a.687.687 0 0 1 0-.96.68.68 0 0 1 .479-.186\" />\n  </svg>\n);\n\nexport const AddIcon: 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    <mask\n      id=\"a\"\n      style={{ maskType: \"alpha\" }}\n      maskUnits=\"userSpaceOnUse\"\n      x=\"0\"\n      y=\"0\"\n      width=\"16\"\n      height=\"16\"\n    >\n      <path d=\"M0 0h16v16H0z\" />\n    </mask>\n    <g mask=\"url(#a)\">\n      <path d=\"M7.333 8.667h-4V7.333h4v-4h1.333v4h4v1.334h-4v4H7.333z\" />\n    </g>\n  </svg>\n);\n\nexport const ActiveAddIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\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=\"M5.99536 1.46487C5.71936 1.46487 5.49536 1.68887 5.49536 1.96487V5.46487H1.99536C1.71936 5.46487 1.49536 5.68887 1.49536 5.96487C1.49536 6.24087 1.71936 6.46487 1.99536 6.46487H5.49536V9.96487C5.49536 10.2409 5.71936 10.4649 5.99536 10.4649C6.27136 10.4649 6.49536 10.2409 6.49536 9.96487V6.46487H9.99536C10.2714 6.46487 10.4954 6.24087 10.4954 5.96487C10.4954 5.68887 10.2714 5.46487 9.99536 5.46487H6.49536V1.96487C6.49536 1.68887 6.27136 1.46487 5.99536 1.46487Z\"\n      fill=\"url(#paint0_linear_1951_55156)\"\n    />\n    <defs>\n      <linearGradient\n        id=\"paint0_linear_1951_55156\"\n        x1=\"10.4954\"\n        y1=\"5.96487\"\n        x2=\"1.49536\"\n        y2=\"5.96487\"\n        gradientUnits=\"userSpaceOnUse\"\n      >\n        <stop stopColor=\"rgb(var(--oui-gradient-brand-end))\" />\n        <stop offset=\"1\" stopColor=\"rgb(var(--oui-gradient-brand-start))\" />\n      </linearGradient>\n    </defs>\n  </svg>\n);\n\n// export const 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\n// export const 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 const FilterIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"18\"\n    height=\"18\"\n    viewBox=\"0 0 18 18\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M11.2422 2.19751C10.2913 2.19751 9.40469 2.82152 9.12801 3.69902L2.99219 3.69751C2.57796 3.69751 2.24219 4.03351 2.24219 4.44751C2.24219 4.86151 2.57796 5.19751 2.99219 5.19751L9.12801 5.19678C9.46409 6.11553 10.2913 6.69751 11.2422 6.69751C12.193 6.69751 13.0288 6.11403 13.3707 5.19078L14.9922 5.19751C15.4064 5.19751 15.7422 4.86151 15.7422 4.44751C15.7422 4.03351 15.4064 3.69751 14.9922 3.69751H13.3643C13.0032 2.78326 12.193 2.19751 11.2422 2.19751ZM11.2422 3.69751C11.6564 3.69751 11.9922 4.03351 11.9922 4.44751C11.9922 4.86151 11.6564 5.19751 11.2422 5.19751C10.828 5.19751 10.4922 4.86151 10.4922 4.44751C10.4922 4.03351 10.828 3.69751 11.2422 3.69751ZM6.74219 6.69751C5.75369 6.69751 4.92629 7.31252 4.62419 8.19902C4.51874 8.20577 2.99219 8.19751 2.99219 8.19751C2.57796 8.19751 2.24219 8.53351 2.24219 8.94751C2.24219 9.36151 2.57796 9.69751 2.99219 9.69751C2.99219 9.69751 4.53149 9.68176 4.62741 9.69151C4.92951 10.578 5.75369 11.1975 6.74219 11.1975C7.69304 11.1975 8.50784 10.6148 8.86424 9.69975L14.9922 9.69751C15.4064 9.69751 15.7422 9.36151 15.7422 8.94751C15.7422 8.53351 15.4064 8.19751 14.9922 8.19751L8.86034 8.19078C8.53161 7.29603 7.69304 6.69751 6.74219 6.69751ZM6.74219 8.19751C7.15641 8.19751 7.49219 8.53351 7.49219 8.94751C7.49219 9.36151 7.15641 9.69751 6.74219 9.69751C6.32796 9.69751 5.99219 9.36151 5.99219 8.94751C5.99219 8.53351 6.32796 8.19751 6.74219 8.19751ZM11.2422 11.1975C10.2913 11.1975 9.42157 11.8238 9.12749 12.69L2.99219 12.6975C2.57796 12.6975 2.24219 13.0335 2.24219 13.4475C2.24219 13.8615 2.57796 14.1975 2.99219 14.1975L9.11639 14.1982C9.42756 15.087 10.2913 15.6975 11.2422 15.6975C12.193 15.6975 13.0129 15.1027 13.3741 14.1982L14.9922 14.1975C15.4064 14.1975 15.7422 13.8615 15.7422 13.4475C15.7422 13.0335 15.4064 12.6975 14.9922 12.6975L13.3672 12.693C13.0435 11.8058 12.193 11.1975 11.2422 11.1975ZM11.2422 12.6975C11.6564 12.6975 11.9922 13.0335 11.9922 13.4475C11.9922 13.8615 11.6564 14.1975 11.2422 14.1975C10.828 14.1975 10.4922 13.8615 10.4922 13.4475C10.4922 13.0335 10.828 12.6975 11.2422 12.6975Z\" />\n  </svg>\n);\n\nexport const TriangleDownIcon: FC<SVGProps<SVGSVGElement>> = (props) => (\n  <svg\n    width=\"12\"\n    height=\"12\"\n    viewBox=\"0 0 12 12\"\n    fill=\"currentColor\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n    {...props}\n  >\n    <path d=\"M3.003 3.998a.494.494 0 0 0-.39.797l3 4c.2.266.597.266.797 0l3-4a.5.5 0 0 0-.407-.797z\" />\n  </svg>\n);\n\nexport const ArrowLeftIcon: 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=\"M9.186 3.348a.67.67 0 0 0-.436.27l-2.657 4a.69.69 0 0 0 0 .75l2.657 4a.68.68 0 0 0 .934.188.685.685 0 0 0 .187-.937L7.463 7.993 9.87 4.37a.685.685 0 0 0-.187-.938.65.65 0 0 0-.498-.083\" />\n  </svg>\n);\n\nexport const ArrowRightIcon: 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.777 3.348a.65.65 0 0 0-.498.083.685.685 0 0 0-.187.938L8.5 7.993l-2.408 3.625a.685.685 0 0 0 .187.938.68.68 0 0 0 .934-.187l2.657-4a.69.69 0 0 0 0-.75l-2.657-4a.67.67 0 0 0-.436-.271\" />\n  </svg>\n);\n\nconst BaseSortIcon = (props: PropsWithChildren) => {\n  return (\n    <svg\n      xmlns=\"http://www.w3.org/2000/svg\"\n      width=\"10\"\n      height=\"10\"\n      viewBox=\"0 0 10 10\"\n      fill=\"none\"\n    >\n      {props.children}\n    </svg>\n  );\n};\n\nexport const SortingIcon = () => {\n  return (\n    <BaseSortIcon>\n      <path\n        d=\"M5 1.042a.47.47 0 0 0-.338.135L2.166 3.844c-.206.22-.005.531.338.531h4.992c.342 0 .543-.311.337-.531L5.338 1.177A.47.47 0 0 0 5 1.042m0 7.916a.47.47 0 0 1-.338-.135L2.166 6.156c-.206-.22-.005-.531.338-.531h4.992c.342 0 .543.311.337.531L5.338 8.823A.47.47 0 0 1 5 8.958\"\n        fill=\"rgb(var(--oui-color-base-foreground) / 0.2)\"\n      />\n    </BaseSortIcon>\n  );\n};\n\nexport const AscendingIcon = () => {\n  return (\n    <BaseSortIcon>\n      <path\n        d=\"M5 1.042a.47.47 0 0 0-.338.135L2.166 3.844c-.206.22-.005.531.338.531h4.992c.342 0 .543-.311.337-.531L5.338 1.177A.47.47 0 0 0 5 1.042\"\n        fill=\"rgb(var(--oui-color-base-foreground)/0.8)\"\n      />\n      <path\n        d=\"M5 8.958a.47.47 0 0 1-.338-.135L2.166 6.156c-.206-.22-.005-.531.338-.531h4.992c.342 0 .543.311.337.531L5.338 8.823A.47.47 0 0 1 5 8.958\"\n        fill=\"rgb(var(--oui-color-base-foreground)/0.2)\"\n      />\n    </BaseSortIcon>\n  );\n};\n\nexport const DescendingIcon = () => {\n  return (\n    <BaseSortIcon>\n      <path\n        d=\"M5 1.042a.47.47 0 0 0-.338.135L2.166 3.844c-.206.22-.005.531.338.531h4.992c.342 0 .543-.311.337-.531L5.338 1.177A.47.47 0 0 0 5 1.042\"\n        fill=\"rgb(var(--oui-color-base-foreground)/0.2)\"\n      />\n      <path\n        d=\"M5 8.958a.47.47 0 0 1-.338-.135L2.166 6.156c-.206-.22-.005-.531.338-.531h4.992c.342 0 .543.311.337.531L5.338 8.823A.47.47 0 0 1 5 8.958\"\n        fill=\"rgb(var(--oui-color-base-foreground)/0.8)\"\n      />\n    </BaseSortIcon>\n  );\n};\n","import { FC, ReactNode, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, Flex, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useMarketsContext } from \"../../../components/marketsProvider\";\nimport { SymbolDisplay } from \"../../../components/symbolDisplay\";\nimport { OrderlyIcon } from \"../../../icons\";\nimport { MarketsHeaderReturns } from \"./marketsHeader.script\";\n\n/** -----------MarketsHeader start ------------ */\ntype MarketsHeaderProps = MarketsHeaderReturns & {\n  className?: string;\n};\nexport const MarketsHeader: FC<MarketsHeaderProps> = (props) => {\n  const {\n    news,\n    gainers,\n    losers,\n    total24Amount,\n    totalOpenInterest,\n    tvl,\n    favorite,\n  } = props;\n  const { onSymbolChange } = useMarketsContext();\n  const { t } = useTranslation();\n\n  const onSymbol = (item: any) => {\n    onSymbolChange?.(item);\n    favorite.addToHistory(item);\n  };\n\n  return (\n    <div\n      id=\"oui-markets-header\"\n      className={cn(\"oui-overflow-hidden\", props.className)}\n    >\n      <div className=\"oui-grid oui-grid-cols-3 oui-gap-4\">\n        <BlockList\n          total24Amount={total24Amount}\n          totalOpenInterest={totalOpenInterest}\n          tvl={tvl}\n        />\n        <CardItem\n          data={news}\n          title={\n            <Text.gradient color=\"brand\">\n              {t(\"markets.newListings\")}\n            </Text.gradient>\n          }\n          onSymbol={onSymbol}\n        />\n        <CardItem\n          data={gainers}\n          title={\n            <Text className=\"oui-text-success-light\">\n              {t(\"markets.topGainers\")}\n            </Text>\n          }\n          onSymbol={onSymbol}\n        />\n        <CardItem\n          data={losers}\n          title={\n            <Text className=\"oui-text-danger-light\">\n              {t(\"markets.topLosers\")}\n            </Text>\n          }\n          onSymbol={onSymbol}\n        />\n      </div>\n    </div>\n  );\n};\n/** -----------MarketsHeader end ------------ */\n\ntype BlockListProps = {\n  className?: string;\n  total24Amount?: number;\n  totalOpenInterest?: number;\n  tvl?: number;\n};\n\n/** -----------MarketsHeader start ------------ */\nconst BlockList: React.FC<BlockListProps> = (props) => {\n  const { total24Amount, totalOpenInterest, tvl } = props;\n  const { t } = useTranslation();\n\n  const list = useMemo(() => {\n    return [\n      {\n        label: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.column.24hVolume\")}\n          </Flex>\n        ),\n        value: total24Amount,\n      },\n      {\n        label: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.openInterest\")}\n          </Flex>\n        ),\n        value: totalOpenInterest,\n      },\n      {\n        label: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {`${t(\"common.assets\")} (TVL)`}\n          </Flex>\n        ),\n        value: tvl,\n      },\n    ];\n  }, [t, total24Amount, totalOpenInterest, tvl]);\n\n  return (\n    <div\n      className={cn(\n        \"oui-col-span-3 oui-grid oui-grid-cols-3 oui-gap-4\",\n        props.className,\n      )}\n    >\n      {list?.map((item, index) => (\n        <BlockItem key={`item-${index}`} {...item} />\n      ))}\n    </div>\n  );\n};\n/** -----------MarketsHeader start ------------ */\n\ntype BlockItemProps = {\n  label: ReactNode;\n  value?: number;\n  rule?: string;\n  dp?: number;\n};\n\nconst BlockItem: React.FC<BlockItemProps> = (props) => {\n  return (\n    <Box\n      r=\"lg\"\n      className={cn(\n        \"oui-flex oui-w-full oui-flex-col oui-justify-between\",\n        \"oui-min-h-[clamp(6.5rem,8vw,8.25rem)] oui-p-[clamp(1rem,1.75vw,1.75rem)]\",\n        \"oui-bg-primary-darken oui-text-primary-contrast\",\n      )}\n    >\n      <Text\n        as=\"div\"\n        weight=\"semibold\"\n        className=\"oui-text-[length:clamp(0.75rem,0.9vw,0.875rem)] oui-leading-5 oui-text-primary-contrast/80\"\n      >\n        {props.label}\n      </Text>\n\n      <Text.numeral\n        currency=\"$\"\n        dp={props.dp || 0}\n        rm={Decimal.ROUND_DOWN}\n        rule={props.rule as any}\n        className={cn(\n          \"oui-text-[length:clamp(1.5rem,2.25vw,2.75rem)] oui-font-semibold\",\n          \"oui-tabular-nums oui-tracking-[-0.025em] oui-leading-none\",\n        )}\n      >\n        {props.value!}\n      </Text.numeral>\n    </Box>\n  );\n};\n\ntype CardItemProps = {\n  data?: TListItem[];\n  title: ReactNode;\n  className?: string;\n  onSymbol: (item: any) => void;\n};\n\nconst CardItem: React.FC<CardItemProps> = (props) => {\n  return (\n    <Box intensity={900} r=\"lg\" py={4} pb={2} className={props.className}>\n      <Box px={4}>\n        <Text.gradient color=\"brand\" size=\"sm\" weight=\"semibold\">\n          {props.title}\n        </Text.gradient>\n      </Box>\n\n      <Flex direction=\"column\" itemAlign=\"start\" mt={2}>\n        {props.data?.map((item, index) => (\n          <ListItem key={item.symbol} item={item} onSymbol={props.onSymbol} />\n        ))}\n      </Flex>\n    </Box>\n  );\n};\n\ntype TListItem = {\n  symbol: string;\n  price: string;\n  change: number;\n  precision: number;\n  [x: string]: any;\n};\n\ntype ListItemProps = {\n  item: TListItem;\n  className?: string;\n  onSymbol: (item: any) => void;\n};\n\nconst ListItem: React.FC<ListItemProps> = (props) => {\n  const { item } = props;\n\n  return (\n    <Box\n      width=\"100%\"\n      py={2}\n      px={4}\n      className={cn(\n        \"oui-grid oui-grid-cols-[minmax(0,1fr)_96px_72px] oui-items-center oui-gap-x-3\",\n        \"oui-cursor-pointer hover:oui-bg-base-8\",\n        props.className,\n      )}\n      onClick={() => {\n        props.onSymbol(item);\n      }}\n    >\n      <SymbolDisplay formatString=\"base\" showIcon className=\"oui-min-w-0\">\n        {item.symbol}\n      </SymbolDisplay>\n\n      <Flex justify=\"end\">\n        <Text.numeral\n          currency=\"$\"\n          size=\"xs\"\n          weight=\"semibold\"\n          dp={item.quote_dp}\n          className=\"oui-tabular-nums oui-text-end\"\n        >\n          {item[\"24h_close\"]}\n        </Text.numeral>\n      </Flex>\n\n      <Flex justify=\"end\">\n        <Text.numeral\n          rule=\"percentages\"\n          coloring\n          size=\"xs\"\n          weight=\"semibold\"\n          showIdentifier\n          className=\"oui-tabular-nums oui-text-end\"\n        >\n          {item.change}\n        </Text.numeral>\n      </Flex>\n    </Box>\n  );\n};\n","import { useCallback, useState } from \"react\";\nimport { TableSort } from \"@orderly.network/ui\";\nimport { formatSymbol } from \"@orderly.network/utils\";\nimport { SortType } from \"./type\";\n\n/**\n * Compare two values intelligently\n */\nconst compareValues = (aValue: any, bValue: any): number => {\n  // Handle null/undefined values (always sort to bottom)\n  if (aValue == null && bValue == null) return 0;\n  if (aValue == null) return 1;\n  if (bValue == null) return -1;\n\n  // Convert to string first for type checking\n  const aStr = String(aValue).trim();\n  const bStr = String(bValue).trim();\n\n  // More robust number detection - check if values can be converted to valid numbers\n  const aNum = Number(aStr);\n  const bNum = Number(bStr);\n  const aIsNumber =\n    !isNaN(aNum) && isFinite(aNum) && /^-?\\d*\\.?\\d+([eE][+-]?\\d+)?$/.test(aStr);\n  const bIsNumber =\n    !isNaN(bNum) && isFinite(bNum) && /^-?\\d*\\.?\\d+([eE][+-]?\\d+)?$/.test(bStr);\n\n  if (aIsNumber && bIsNumber) {\n    return aNum - bNum;\n  }\n\n  // Check if both are valid dates (ISO format or timestamp)\n  const aIsDate = /^\\d{4}-\\d{2}-\\d{2}/.test(aStr) || /^\\d{13}$/.test(aStr);\n  const bIsDate = /^\\d{4}-\\d{2}-\\d{2}/.test(bStr) || /^\\d{13}$/.test(bStr);\n\n  if (aIsDate && bIsDate) {\n    const aDate = new Date(aValue);\n    const bDate = new Date(bValue);\n    if (!isNaN(aDate.getTime()) && !isNaN(bDate.getTime())) {\n      return aDate.getTime() - bDate.getTime();\n    }\n  }\n\n  // String comparison - use localeCompare for proper string sorting\n  return aStr.localeCompare(bStr, undefined, {\n    sensitivity: \"base\",\n    numeric: false, // Disable numeric sorting for pure string comparison\n    caseFirst: \"upper\",\n  });\n};\n\n/** get page data */\nexport function getPagedData(list: any[], pageSize: number, pageIndex: number) {\n  const pageData: any[][] = [];\n  let rows: any[] = [];\n  for (let i = 0; i < list.length; i++) {\n    rows.push(list[i]);\n    if ((i + 1) % pageSize === 0 || i === list.length - 1) {\n      pageData.push(rows);\n      rows = [];\n    }\n  }\n  return pageData[pageIndex - 1] || [];\n}\n\nexport function sortList(list: any[], sort?: SortType) {\n  const { sortKey, sortOrder } = sort || {};\n  const sortedList = [...(list || [])];\n\n  if (sortKey && sortOrder) {\n    // sort list\n    sortedList.sort((a: any, b: any) => {\n      const aValue = a[sortKey];\n      const bValue = b[sortKey];\n      const aMissing =\n        aValue == null ||\n        (typeof aValue === \"number\" && !Number.isFinite(aValue));\n      const bMissing =\n        bValue == null ||\n        (typeof bValue === \"number\" && !Number.isFinite(bValue));\n\n      if (aMissing && bMissing) return 0;\n      if (aMissing) return 1;\n      if (bMissing) return -1;\n\n      const comparison = compareValues(aValue, bValue);\n      // Handle sort order: desc means reverse the comparison result\n      return sortOrder === \"desc\" ? -comparison : comparison;\n    });\n  }\n  return sortedList;\n}\n\nexport function useSort(\n  initialSort?: SortType,\n  onSortChange?: (sort?: SortType) => void,\n) {\n  const [sort, setSort] = useState<SortType | undefined>(initialSort);\n\n  const onSort = useCallback((options?: TableSort) => {\n    const nextSort = options\n      ? {\n          sortKey: options.sortKey,\n          sortOrder: options.sort,\n        }\n      : undefined;\n\n    setSort(nextSort);\n    onSortChange?.(nextSort);\n    // initialSort, onSortChange is not needed to be in the dependency array, otherwise it will cause infinite loop\n  }, []);\n\n  const getSortedList = useCallback(\n    (list: any[]) => sortList(list, sort),\n    [sort],\n  );\n\n  return { sort, onSort, getSortedList };\n}\n\n/**\n * Escape special characters for use in regular expressions\n */\nfunction escapeRegExp(string: string): string {\n  return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\nexport function searchBySymbol<T extends Record<PropertyKey, any>>(\n  list: T[],\n  searchValue = \"\",\n  formatString?: string,\n) {\n  if (!searchValue) {\n    return list;\n  }\n\n  // Escape special characters to prevent RegExp errors\n  const escapedSearchValue = escapeRegExp(searchValue);\n  const reg = new RegExp(escapedSearchValue, \"i\");\n\n  const searchValueLower = searchValue.toLowerCase();\n\n  // Split results into three groups: exact matches, starts with search and other matches\n  const exactMatches: T[] = [];\n  const startsWithMatches: T[] = [];\n  const otherMatches: T[] = [];\n\n  list?.forEach((item) => {\n    const formattedSymbol = formatSymbol(item.symbol, formatString);\n    const symbolLower = formattedSymbol.toLowerCase();\n\n    // Check if display_symbol_name exists and prepare it for search\n    const displayName = item.display_symbol_name;\n    const displayNameLower = displayName\n      ? String(displayName).toLowerCase()\n      : null;\n\n    // Check if search matches symbol or display_symbol_name\n    const matchesSymbol = reg.test(formattedSymbol);\n    const matchesDisplayName = displayNameLower\n      ? reg.test(displayNameLower)\n      : false;\n\n    if (matchesSymbol || matchesDisplayName) {\n      // Use display_symbol_name for comparison if available, otherwise use symbol\n      const searchText = displayNameLower || symbolLower;\n\n      if (searchText === searchValueLower) {\n        exactMatches.push(item);\n      } else if (searchText.startsWith(searchValueLower)) {\n        startsWithMatches.push(item);\n      } else {\n        otherMatches.push(item);\n      }\n    }\n  });\n\n  const compareSymbols = (a: T, b: T) => {\n    // Use display_symbol_name if available, otherwise use formatted symbol\n    const textA = a.display_symbol_name || formatSymbol(a.symbol, formatString);\n    const textB = b.display_symbol_name || formatSymbol(b.symbol, formatString);\n    if (textA < textB) return -1;\n    if (textA > textB) return 1;\n    return 0;\n  };\n\n  // Sort each group alphabetically\n  startsWithMatches.sort(compareSymbols);\n  otherMatches.sort(compareSymbols);\n\n  // Combine results with prioritized matches first\n  return [...exactMatches, ...startsWithMatches, ...otherMatches];\n}\n","import { useMemo } from \"react\";\nimport { useMarkets, useQuery, MarketsType } from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { sortList } from \"../../../utils\";\n\nexport type MarketsHeaderReturns = ReturnType<typeof useMarketsHeaderScript>;\n\nexport const useMarketsHeaderScript = () => {\n  const data = useDataSource();\n\n  return {\n    ...data,\n  };\n};\n\nexport function useDataSource() {\n  const [markets, favorite] = useMarkets(MarketsType.ALL);\n  const { data: balance } = useQuery(\"/v1/public/balance/stats\");\n\n  const news = useMemo(\n    () =>\n      sortList(markets, { sortKey: \"created_time\", sortOrder: \"desc\" }).slice(\n        0,\n        5,\n      ),\n    [markets],\n  );\n\n  const gainers = useMemo(\n    () =>\n      sortList(markets, { sortKey: \"change\", sortOrder: \"desc\" }).slice(0, 5),\n    [markets],\n  );\n\n  const losers = useMemo(\n    () =>\n      sortList(markets, { sortKey: \"change\", sortOrder: \"asc\" }).slice(0, 5),\n    [markets],\n  );\n\n  const total24Amount = useMemo(\n    () =>\n      markets?.reduce((prevValue: Decimal, curValue: any) => {\n        return prevValue.add(curValue[\"24h_amount\"] || 0);\n      }, new Decimal(0)) || new Decimal(0),\n    [markets],\n  );\n\n  const totalOpenInterest = useMemo(\n    () =>\n      markets?.reduce((prevValue: Decimal, curValue: any) => {\n        return prevValue.add(curValue[\"openInterest\"] || 0);\n      }, new Decimal(0)) || new Decimal(0),\n    [markets],\n  );\n\n  const tvl = useMemo(() => {\n    if (!balance) return 0;\n\n    const { total_holding = 0 } = balance as any;\n    return new Decimal(total_holding).toNumber();\n  }, [balance]);\n\n  return {\n    markets,\n    news,\n    gainers,\n    losers,\n    total24Amount: total24Amount.toNumber(),\n    totalOpenInterest: totalOpenInterest.toNumber(),\n    tvl,\n    favorite,\n  };\n}\n","import { FC, ReactNode, useMemo, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, Flex, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useMarketsContext } from \"../../../components/marketsProvider\";\nimport { SymbolDisplay } from \"../../../components/symbolDisplay\";\nimport { OrderlyIcon } from \"../../../icons\";\nimport { MarketsHeaderReturns } from \"./marketsHeader.script\";\n\ntype MobileMarketsHeaderProps = MarketsHeaderReturns & {\n  className?: string;\n};\n\nexport const MobileMarketsHeader: FC<MobileMarketsHeaderProps> = (props) => {\n  const {\n    news,\n    gainers,\n    losers,\n    total24Amount,\n    totalOpenInterest,\n    tvl,\n    favorite,\n  } = props;\n  const [activeTab, setActiveTab] = useState(\"newListings\");\n  const { onSymbolChange } = useMarketsContext();\n  const { t } = useTranslation();\n\n  const onSymbol = (item: any) => {\n    onSymbolChange?.(item);\n    favorite.addToHistory(item);\n  };\n\n  return (\n    <div\n      id=\"oui-markets-header\"\n      className={cn(\"oui-overflow-hidden\", props.className)}\n    >\n      <BlockList\n        total24Amount={total24Amount}\n        totalOpenInterest={totalOpenInterest}\n        tvl={tvl}\n      />\n\n      <Box intensity={900} r=\"xl\" p={3} mt={3}>\n        <Tabs size=\"md\" value={activeTab} onValueChange={setActiveTab}>\n          <TabPanel\n            title={t(\"markets.newListings\")}\n            value=\"newListings\"\n            testid=\"oui-testid-markets-tab\"\n          >\n            <CardItem data={news} onSymbol={onSymbol} />\n          </TabPanel>\n          <TabPanel\n            title={t(\"markets.topGainers\")}\n            value=\"topGainers\"\n            testid=\"oui-testid-funding-tab\"\n          >\n            <CardItem data={gainers} onSymbol={onSymbol} />\n          </TabPanel>\n          <TabPanel\n            title={t(\"markets.topLosers\")}\n            value=\"topLosers\"\n            testid=\"oui-testid-funding-tab\"\n          >\n            <CardItem data={losers} onSymbol={onSymbol} />\n          </TabPanel>\n        </Tabs>\n      </Box>\n    </div>\n  );\n};\n\ntype BlockListProps = {\n  className?: string;\n  total24Amount?: number;\n  totalOpenInterest?: number;\n  tvl?: number;\n};\n\nconst BlockList: React.FC<BlockListProps> = (props) => {\n  const { total24Amount, totalOpenInterest, tvl } = props;\n  const { t } = useTranslation();\n\n  const list = useMemo(() => {\n    return [\n      {\n        label: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.column.24hVolume\")}\n          </Flex>\n        ),\n        value: total24Amount,\n      },\n      {\n        label: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.openInterest\")}\n          </Flex>\n        ),\n        value: totalOpenInterest,\n      },\n      {\n        label: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {`${t(\"common.assets\")} (TVL)`}\n          </Flex>\n        ),\n        value: tvl,\n      },\n    ];\n  }, [t, total24Amount, totalOpenInterest, tvl]);\n\n  return (\n    <div\n      className={cn(\n        \"oui-grid oui-grid-cols-3\",\n        \"oui-gap-[clamp(0.375rem,2vw,1rem)]\",\n        props.className,\n      )}\n    >\n      {list?.map((item, index) => (\n        <BlockItem key={`item-${index}`} {...item} />\n      ))}\n    </div>\n  );\n};\n\ntype BlockItemProps = {\n  label: ReactNode;\n  value?: number;\n  rule?: string;\n  dp?: number;\n  className?: string;\n};\n\nconst BlockItem: React.FC<BlockItemProps> = (props) => {\n  return (\n    <Box\n      r=\"xl\"\n      className={cn(\n        \"oui-flex oui-min-w-0 oui-flex-col oui-justify-between\",\n        \"oui-min-h-[clamp(6.5rem,15vw,8.25rem)] oui-p-[clamp(0.75rem,2.5vw,1.5rem)]\",\n        \"oui-bg-primary-darken oui-text-primary-contrast\",\n        props.className,\n      )}\n    >\n      <Text\n        as=\"div\"\n        weight=\"semibold\"\n        className=\"oui-text-[length:clamp(0.625rem,1.5vw,0.875rem)] oui-leading-[1.15] oui-text-primary-contrast/80\"\n      >\n        {props.label}\n      </Text>\n\n      <Text.numeral\n        currency=\"$\"\n        dp={props.dp || 2}\n        rm={Decimal.ROUND_DOWN}\n        rule={(props.rule as any) || \"human\"}\n        className={cn(\n          \"oui-text-[length:clamp(1.25rem,3.5vw,2.25rem)] oui-font-semibold\",\n          \"oui-tabular-nums oui-tracking-[-0.025em] oui-leading-none\",\n        )}\n      >\n        {props.value!}\n      </Text.numeral>\n    </Box>\n  );\n};\n\ntype CardItemProps = {\n  data?: TListItem[];\n  className?: string;\n  onSymbol: (item: any) => void;\n};\n\nconst CardItem: React.FC<CardItemProps> = (props) => {\n  return (\n    <Flex direction=\"column\" itemAlign=\"start\" mt={3}>\n      {props.data?.map((item) => (\n        <ListItem\n          key={item.symbol}\n          item={item}\n          onSymbol={props.onSymbol}\n          className=\"oui-px-0\"\n        />\n      ))}\n    </Flex>\n  );\n};\n\ntype TListItem = {\n  symbol: string;\n  price: string;\n  change: number;\n  precision: number;\n  [x: string]: any;\n};\n\ntype ListItemProps = {\n  item: TListItem;\n  className?: string;\n  onSymbol: (item: any) => void;\n};\n\nconst ListItem: React.FC<ListItemProps> = (props) => {\n  const { item } = props;\n\n  return (\n    <Box\n      width=\"100%\"\n      py={2}\n      px={4}\n      className={cn(\n        \"oui-grid oui-grid-cols-[minmax(0,1fr)_96px_72px] oui-items-center oui-gap-x-3\",\n        \"oui-cursor-pointer hover:oui-bg-base-8\",\n        props.className,\n      )}\n      onClick={() => {\n        props.onSymbol(item);\n      }}\n    >\n      <SymbolDisplay formatString=\"base\" showIcon className=\"oui-min-w-0\">\n        {item.symbol}\n      </SymbolDisplay>\n\n      <Flex justify=\"end\">\n        <Text.numeral\n          currency=\"$\"\n          size=\"xs\"\n          weight=\"semibold\"\n          dp={item.quote_dp}\n          className=\"oui-tabular-nums oui-text-end\"\n        >\n          {item[\"24h_close\"]}\n        </Text.numeral>\n      </Flex>\n\n      <Flex justify=\"end\">\n        <Text.numeral\n          rule=\"percentages\"\n          coloring\n          size=\"xs\"\n          weight=\"semibold\"\n          showIdentifier\n          className=\"oui-tabular-nums oui-text-end\"\n        >\n          {item.change}\n        </Text.numeral>\n      </Flex>\n    </Box>\n  );\n};\n","import { FC } from \"react\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { MobileMarketsHeader } from \"./marketsHeader.mobile.ui\";\nimport { useMarketsHeaderScript } from \"./marketsHeader.script\";\nimport { MarketsHeader } from \"./marketsHeader.ui\";\n\ntype MarketsHeaderWidgetProps = {\n  className?: string;\n};\n\nexport const MarketsHeaderWidget: FC<MarketsHeaderWidgetProps> = (props) => {\n  const state = useMarketsHeaderScript();\n  const { isMobile } = useScreen();\n  return isMobile ? (\n    <MobileMarketsHeader className={props.className} {...state} />\n  ) : (\n    <MarketsHeader className={props.className} {...state} />\n  );\n};\n","import { useMemo } from \"react\";\nimport { useRef } from \"react\";\nimport {\n  MarketsType,\n  useAllBrokers,\n  useConfig,\n  useMarkets,\n} from \"@orderly.network/hooks\";\n\nexport type CommunityTabItem = {\n  id: string;\n  label: string;\n};\n\nexport function createCommunityBrokerFilter(selected: string) {\n  return (data: any[]) =>\n    selected === \"all\"\n      ? data?.filter((m) => Boolean(m?.broker_id))\n      : data?.filter((m) => m?.broker_id === selected);\n}\n\n/** Compatible with market items that may contain broker_id (e.g. MarketsItem) */\ntype MarketLike = Record<string, unknown> & { broker_id?: string };\n\n/**\n * Build community sub-tabs from markets and broker mapping.\n * Sorted by broker name/id, and pin current broker to the top.\n *\n * Data sources: useMarkets(ALL), useAllBrokers, useConfig(\"brokerId\").\n */\nexport function useCommunityTabs(): CommunityTabItem[] {\n  const brokerId = useConfig(\"brokerId\") as string | undefined;\n  const [brokers] = useAllBrokers();\n  const [allMarkets] = useMarkets(MarketsType.ALL);\n\n  const lastSignatureRef = useRef<string>(\"\");\n  const lastValueRef = useRef<CommunityTabItem[]>([]);\n\n  return useMemo(() => {\n    const brokerIdSet = new Set<string>();\n    for (const m of allMarkets ?? []) {\n      const id = (m as MarketLike)?.broker_id;\n      if (typeof id === \"string\" && id.length) {\n        brokerIdSet.add(id);\n      }\n    }\n\n    const entries: Array<{ id: string; name?: string }> = Array.from(\n      brokerIdSet,\n    ).map((id) => ({\n      id,\n      name: brokers?.[id],\n    }));\n\n    const sorted = entries\n      .map(({ id, name }) => ({\n        id,\n        label: name ?? id,\n        sortKey: (name ?? id).toLowerCase(),\n      }))\n      .sort((a, b) => a.sortKey.localeCompare(b.sortKey));\n\n    if (brokerId) {\n      const idx = sorted.findIndex((x) => x.id === brokerId);\n      if (idx > 0) {\n        const [cur] = sorted.splice(idx, 1);\n        sorted.unshift(cur);\n      }\n    }\n\n    // allMarkets can refresh frequently (reference changes). Reuse the previous\n    // array instance when tabs are logically unchanged to avoid downstream re-renders.\n    const signature = sorted.map((x) => `${x.id}:${x.label}`).join(\"|\");\n    if (signature === lastSignatureRef.current) {\n      return lastValueRef.current;\n    }\n    lastSignatureRef.current = signature;\n    lastValueRef.current = sorted;\n    return sorted;\n  }, [allMarkets, brokers, brokerId]);\n}\n","import React from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { useCommunityTabs } from \"../../hooks/useCommunityTabs\";\n\nexport type CommunityBrokerTabsProps = {\n  storageKey: string;\n  className?: string;\n  classNames?: Record<string, string>;\n  variant?: any;\n  size?: any;\n  showScrollIndicator?: boolean;\n  allTitle?: React.ReactNode;\n  renderPanel: (selectedId: string) => React.ReactNode;\n};\n\nexport const CommunityBrokerTabs: React.FC<CommunityBrokerTabsProps> = (\n  props,\n) => {\n  const {\n    storageKey,\n    className,\n    classNames,\n    variant = \"contained\",\n    size = \"sm\",\n    showScrollIndicator,\n    allTitle,\n    renderPanel,\n  } = props;\n\n  const { t } = useTranslation();\n  const [communitySubTab, setCommunitySubTab] = useLocalStorage<string>(\n    storageKey,\n    \"all\",\n  );\n  const communityBrokerTabs = useCommunityTabs();\n\n  // Keep a TabPanel for the persisted selection while broker tabs are still\n  // loading, so remounting ExpandMarkets does not force the value back to \"all\".\n  const selectedBrokerTab =\n    communitySubTab !== \"all\" &&\n    !communityBrokerTabs.some((b) => b.id === communitySubTab)\n      ? { id: communitySubTab, label: communitySubTab }\n      : null;\n\n  return (\n    <Tabs\n      variant={variant}\n      size={size}\n      value={communitySubTab}\n      onValueChange={setCommunitySubTab}\n      classNames={classNames as any}\n      className={className}\n      showScrollIndicator={showScrollIndicator}\n    >\n      <TabPanel title={allTitle ?? t(\"common.all\")} value=\"all\">\n        {renderPanel(\"all\")}\n      </TabPanel>\n      {selectedBrokerTab ? (\n        <TabPanel\n          key={selectedBrokerTab.id}\n          title={selectedBrokerTab.label}\n          value={selectedBrokerTab.id}\n        >\n          {renderPanel(selectedBrokerTab.id)}\n        </TabPanel>\n      ) : null}\n      {communityBrokerTabs.map((b) => (\n        <TabPanel key={b.id} title={b.label} value={b.id}>\n          {renderPanel(b.id)}\n        </TabPanel>\n      ))}\n    </Tabs>\n  );\n};\n","export { CommunityBrokerTabs } from \"./communityBrokerTabs.ui\";\nexport type { CommunityBrokerTabsProps } from \"./communityBrokerTabs.ui\";\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { TokenIcon, Flex, Text, cn, Tooltip, Badge } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\n\nexport type CollapseMarketsProps = {\n  dataSource: any[];\n};\n\nexport const CollapseMarkets: React.FC<CollapseMarketsProps> = (props) => {\n  const { symbol, onSymbolChange } = useMarketsContext();\n  const { t } = useTranslation();\n  if (props.dataSource?.length === 0) {\n    return null;\n  }\n  return (\n    <div className=\"oui-custom-scrollbar oui-h-full oui-overflow-y-auto\">\n      <Flex direction=\"column\" px={2} gapY={1}>\n        {props.dataSource?.map((item) => {\n          const content = (\n            <Flex intensity={800} p={2} className=\"oui-gap-x-7\" r=\"base\">\n              <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n                <Flex gapX={1}>\n                  <TokenIcon symbol={item.symbol} className=\"oui-size-[18px]\" />\n                  <SymbolDisplay formatString=\"base\" size=\"2xs\">\n                    {item.symbol}\n                  </SymbolDisplay>\n                </Flex>\n                <Text size=\"2xs\" intensity={36}>\n                  {t(\"markets.column.last\")}\n                </Text>\n                <Text size=\"2xs\" intensity={36}>\n                  {t(\"markets.column.24hPercentage\")}\n                </Text>\n              </Flex>\n\n              <Flex direction=\"column\" itemAlign=\"end\" gapY={1}>\n                <Badge size=\"xs\" color=\"primary\">\n                  {item.leverage}x\n                </Badge>\n                <Text.numeral\n                  dp={item.quote_dp || 2}\n                  currency=\"$\"\n                  size=\"2xs\"\n                  intensity={80}\n                >\n                  {item[\"24h_close\"]}\n                </Text.numeral>\n                <Text.numeral\n                  rule=\"percentages\"\n                  coloring\n                  rm={Decimal.ROUND_DOWN}\n                  showIdentifier\n                  size=\"2xs\"\n                >\n                  {item.change}\n                </Text.numeral>\n              </Flex>\n            </Flex>\n          );\n\n          return (\n            <Tooltip\n              side=\"right\"\n              sideOffset={6}\n              content={content}\n              delayDuration={0}\n              key={item.symbol}\n            >\n              <Flex\n                direction=\"column\"\n                justify=\"center\"\n                itemAlign=\"center\"\n                gapY={1}\n                width={54}\n                height={54}\n                r=\"lg\"\n                className={cn(\n                  \"oui-cursor-pointer\",\n                  \"hover:oui-bg-base-7\",\n                  symbol === item.symbol && \"oui-bg-base-6 hover:oui-bg-base-6\",\n                )}\n                onClick={() => {\n                  onSymbolChange?.(item);\n                }}\n              >\n                <TokenIcon symbol={item.symbol} className=\"oui-size-[18px]\" />\n                <Text.numeral\n                  rule=\"percentages\"\n                  coloring\n                  rm={Decimal.ROUND_DOWN}\n                  showIdentifier\n                  size=\"2xs\"\n                >\n                  {item.change}\n                </Text.numeral>\n              </Flex>\n            </Tooltip>\n          );\n        })}\n      </Flex>\n    </div>\n  );\n};\n","import { useLocalStorage } from \"@orderly.network/hooks\";\n\nconst STORAGE_KEY = \"orderly_markets_show_low_volume\";\n\nexport type LowVolumeMarketFilterState = {\n  showLowVolume: boolean;\n  setShowLowVolume: (value: boolean) => void;\n};\n\n/**\n * Global show-low-volume preference backed by localStorage.\n * No Provider needed — all callers share the same key and sync via storage events.\n */\nexport const useLowVolumeMarketFilter = (): LowVolumeMarketFilterState => {\n  const [showLowVolume, setShowLowVolume] = useLocalStorage<boolean>(\n    STORAGE_KEY,\n    true,\n  );\n\n  return { showLowVolume, setShowLowVolume };\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Button, Flex, Text } from \"@orderly.network/ui\";\nimport { useLowVolumeMarketFilter } from \"./lowVolumeMarketFilter\";\n\nexport const LowVolumeEmptyView = () => {\n  const { t } = useTranslation();\n  const { setShowLowVolume } = useLowVolumeMarketFilter();\n\n  return (\n    <Flex direction=\"column\" itemAlign=\"center\" gapY={3} className=\"oui-w-full\">\n      <Text\n        as=\"div\"\n        size=\"2xs\"\n        intensity={54}\n        className=\"oui-w-full oui-px-3 oui-text-center\"\n      >\n        {t(\"markets.showLowVolume.empty\")}\n      </Text>\n      <Button\n        variant=\"text\"\n        color=\"primary\"\n        size=\"xs\"\n        onClick={() => setShowLowVolume(true)}\n      >\n        {t(\"markets.showLowVolume.action\")}\n      </Button>\n    </Flex>\n  );\n};\n","import { PropsWithChildren } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  Box,\n  Button,\n  CheckedSquareFillIcon,\n  CheckSquareEmptyIcon,\n  PlusIcon,\n  CloseIcon,\n  Divider,\n  DropdownMenuContent,\n  DropdownMenuPortal,\n  DropdownMenuRoot,\n  DropdownMenuTrigger,\n  Flex,\n  Input,\n  Text,\n  cn,\n  CloseCircleFillIcon,\n  Tooltip,\n} from \"@orderly.network/ui\";\nimport { SymbolBadge } from \"../symbolBadge\";\nimport type { UseFavoritesDropdownMenuScriptReturn } from \"./favoritesDropdownMenu.script\";\n\nexport type FavoritesDropdownMenuProps =\n  PropsWithChildren<UseFavoritesDropdownMenuScriptReturn>;\n\nexport const FavoritesDropdownMenu: React.FC<FavoritesDropdownMenuProps> = (\n  props,\n) => {\n  const {\n    symbol,\n    favoriteTabs,\n    open,\n    onOpenChange,\n    inputVisible,\n    selectedTabs,\n    value,\n    onValueChange,\n    hide,\n    hideInput,\n    showInput,\n    onCheck,\n    addTab,\n    confirm,\n  } = props;\n\n  const { t } = useTranslation();\n\n  const overLen = value?.length > 15;\n\n  const renderInput = () => {\n    if (inputVisible) {\n      return (\n        <Box>\n          <Flex gapX={2}>\n            <Input\n              autoFocus\n              value={value}\n              onValueChange={onValueChange}\n              classNames={{\n                root: cn(\n                  \"oui-ms-px oui-h-7 oui-w-full oui-rounded-sm oui-bg-base-6\",\n                  overLen &&\n                    \"focus-within:oui-outline-danger focus-visible:oui-outline-danger\",\n                ),\n              }}\n              autoComplete=\"off\"\n              suffix={\n                value && (\n                  <Box mr={2}>\n                    <CloseCircleFillIcon\n                      opacity={1}\n                      size={14}\n                      className=\"oui-cursor-pointer oui-text-base-contrast-20\"\n                      onClick={() => {\n                        onValueChange(\"\");\n                      }}\n                    />\n                  </Box>\n                )\n              }\n            />\n\n            <Button\n              className=\"oui-rounded-sm\"\n              size=\"sm\"\n              onClick={addTab}\n              disabled={!value || overLen}\n            >\n              {t(\"common.add\")}\n            </Button>\n          </Flex>\n\n          {overLen && (\n            <Flex itemAlign=\"center\" gapX={1} mt={1}>\n              <div className=\"oui-size-1 oui-rounded-full oui-bg-danger\"></div>\n              <Text color=\"danger\">{t(\"markets.favorites.tabs.maxName\")}</Text>\n            </Flex>\n          )}\n        </Box>\n      );\n    }\n\n    const overTabs = favoriteTabs.length >= 10;\n\n    return (\n      <Tooltip\n        open={overTabs ? undefined : false}\n        content={\n          <Text size=\"2xs\" intensity={80}>\n            {t(\"markets.favorites.tabs.maxList\")}\n          </Text>\n        }\n        className=\"oui-bg-base-6\"\n        delayDuration={0}\n        arrow={{ className: \"oui-fill-base-6\" }}\n      >\n        <div>\n          <Flex\n            className={cn(\n              overTabs ? \"oui-cursor-not-allowed\" : \"oui-cursor-pointer\",\n            )}\n            itemAlign=\"center\"\n            gapX={2}\n            p={2}\n            intensity={overTabs ? 500 : 600}\n            onClick={overTabs ? undefined : showInput}\n            height={28}\n            r=\"base\"\n          >\n            <PlusIcon\n              size={14}\n              className=\"oui-text-base-contrast-36\"\n              opacity={1}\n            />\n            <Text className=\"\" intensity={20}>\n              {t(\"markets.favorites.dropdown.addPlaceholder\")}\n            </Text>\n          </Flex>\n        </div>\n      </Tooltip>\n    );\n  };\n\n  const header = (\n    <Flex justify=\"between\" className=\"oui-mb-[10px] oui-mt-3\">\n      <Flex gapX={1}>\n        {t(\"markets.favorites.dropdown.title\")}\n        <Text.formatted\n          rule=\"symbol\"\n          formatString=\"base\"\n          size=\"base\"\n          showIcon\n          suffix={<SymbolBadge symbol={symbol} />}\n        >\n          {symbol}\n        </Text.formatted>\n      </Flex>\n      <CloseIcon\n        size={16}\n        className=\"oui-cursor-pointer oui-text-base-contrast\"\n        onClick={hide}\n      />\n    </Flex>\n  );\n\n  const content = (\n    // <ScrollArea className=\"custom-scrollbar\">\n    <Box>\n      <Box\n        my={2}\n        className=\"oui-custom-scrollbar oui-max-h-[288px] oui-overflow-y-auto\"\n      >\n        {favoriteTabs?.slice(0, 10)?.map((item) => {\n          const checked = !!selectedTabs.find((tab) => tab.id === item.id);\n          return (\n            <Box key={item.id} className=\"oui-cursor-pointer\">\n              <Flex\n                className=\"oui-gap-x-[6px] hover:oui-bg-base-6\"\n                p={2}\n                r=\"md\"\n                onClick={() => {\n                  onCheck(item, checked);\n                }}\n              >\n                {checked ? (\n                  <CheckedSquareFillIcon\n                    size={18}\n                    className=\"oui-text-base-contrast-80\"\n                  />\n                ) : (\n                  <CheckSquareEmptyIcon\n                    size={18}\n                    className=\"oui-text-base-contrast-80\"\n                  />\n                )}\n\n                <Text intensity={54}>{item.name}</Text>\n              </Flex>\n            </Box>\n          );\n        })}\n      </Box>\n      <Box mt={3} pb={5}>\n        {renderInput()}\n      </Box>\n    </Box>\n    // </ScrollArea>\n  );\n\n  const footer = (\n    <Flex gapX={3} mt={3}>\n      <Button\n        key=\"secondary\"\n        color=\"gray\"\n        onClick={hide}\n        fullWidth\n        className=\"oui-text-sm\"\n        size=\"md\"\n      >\n        {t(\"common.cancel\")}\n      </Button>\n\n      <Button\n        key=\"primary\"\n        onClick={confirm}\n        fullWidth\n        className=\"oui-text-sm\"\n        size=\"md\"\n      >\n        {t(\"common.confirm\")}\n      </Button>\n    </Flex>\n  );\n\n  return (\n    <DropdownMenuRoot open={open} onOpenChange={onOpenChange}>\n      <DropdownMenuTrigger asChild>{props.children}</DropdownMenuTrigger>\n      <DropdownMenuPortal>\n        <DropdownMenuContent\n          onCloseAutoFocus={(e) => e.preventDefault()}\n          onClick={(e) => e.stopPropagation()}\n          align=\"start\"\n          alignOffset={-12}\n          sideOffset={24}\n          className=\"oui-markets-favorite-dropdown-menu-content oui-bg-base-8\"\n        >\n          <Box px={5} pb={5} width={360}>\n            <Text as=\"div\" size=\"sm\" weight=\"semibold\">\n              {header}\n              <Divider />\n              {content}\n              {footer}\n            </Text>\n          </Box>\n        </DropdownMenuContent>\n      </DropdownMenuPortal>\n    </DropdownMenuRoot>\n  );\n};\n","import { useEffect, useState } from \"react\";\nimport { FavoriteTab } from \"@orderly.network/hooks\";\nimport { FavoriteInstance } from \"../../type\";\n\nexport type UseFavoritesDropdownMenuScriptOptions = {\n  row: any;\n  favorite: FavoriteInstance;\n};\n\nexport type UseFavoritesDropdownMenuScriptReturn = ReturnType<\n  typeof useFavoritesDropdownMenuScript\n>;\n\nexport function useFavoritesDropdownMenuScript(\n  options: UseFavoritesDropdownMenuScriptOptions\n) {\n  const { symbol } = options.row || {};\n  const {\n    favorites,\n    favoriteTabs,\n    updateFavoriteTabs,\n    updateSymbolFavoriteState,\n  } = options.favorite;\n  const [open, setOpen] = useState(false);\n  const [inputVisible, setInputVisible] = useState(false);\n  const [value, setValue] = useState(\"\");\n  const [selectedTabs, setSelectedTabs] = useState([] as FavoriteTab[]);\n\n  const hide = () => {\n    setOpen(false);\n  };\n\n  const showInput = () => {\n    setInputVisible(true);\n  };\n\n  const hideInput = () => {\n    setInputVisible(false);\n  };\n\n  const clearState = () => {\n    setValue(\"\");\n    hideInput();\n    setSelectedTabs([]);\n  };\n\n  const addTab = () => {\n    const newTab = {\n      name: value || `WatchList_${favoriteTabs.length}`,\n      id: Date.now(),\n    };\n    updateFavoriteTabs(newTab, { add: true });\n    clearState();\n  };\n\n  const onCheck = (item: FavoriteTab, checked: boolean) => {\n    if (checked) {\n      setSelectedTabs(selectedTabs?.filter((tab) => tab.id !== item.id));\n    } else {\n      setSelectedTabs([...selectedTabs, item]);\n    }\n    hideInput();\n  };\n\n  const confirm = () => {\n    updateSymbolFavoriteState(options.row, selectedTabs, false);\n    setOpen(false);\n  };\n\n  useEffect(() => {\n    if (!open) {\n      return;\n    }\n\n    const find = favorites?.find((item) => item.name === symbol);\n    if (find?.tabs?.length) {\n      setSelectedTabs(find?.tabs);\n    }\n  }, [open, favorites, favoriteTabs, symbol]);\n\n  useEffect(() => {\n    if (!open) {\n      clearState();\n    }\n  }, [open]);\n\n  return {\n    symbol,\n    favoriteTabs,\n    open,\n    onOpenChange: setOpen,\n    inputVisible,\n    selectedTabs,\n    value,\n    onValueChange: setValue,\n    hide,\n    hideInput,\n    showInput,\n    onCheck,\n    addTab,\n    confirm,\n  };\n}\n","import { PropsWithChildren } from \"react\";\nimport {\n  useFavoritesDropdownMenuScript,\n  UseFavoritesDropdownMenuScriptOptions,\n} from \"./favoritesDropdownMenu.script\";\nimport { FavoritesDropdownMenu } from \"./favoritesDropdownMenu.ui\";\n\nexport type FavoritesDropdownMenuWidgetProps =\n  PropsWithChildren<UseFavoritesDropdownMenuScriptOptions>;\n\nexport const FavoritesDropdownMenuWidget: React.FC<\n  FavoritesDropdownMenuWidgetProps\n> = (props) => {\n  const state = useFavoritesDropdownMenuScript(props);\n  return (\n    <FavoritesDropdownMenu {...state}>{props.children}</FavoritesDropdownMenu>\n  );\n};\n","export { FavoritesDropdownMenu } from \"./favoritesDropdownMenu.ui\";\nexport { useFavoritesDropdownMenuScript } from \"./favoritesDropdownMenu.script\";\nexport { FavoritesDropdownMenuWidget } from \"./favoritesDropdownMenu.widget\";\n","import { ReactNode } from \"react\";\nimport { i18n } from \"@orderly.network/i18n\";\nimport { Text, Column, Flex, TokenIcon, Badge, cn } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { FavoritesIcon2, UnFavoritesIcon2 } from \"../../icons\";\nimport { DeleteIcon, TopIcon } from \"../../icons\";\nimport { FavoriteInstance } from \"../../type\";\nimport { FavoritesDropdownMenuWidget } from \"../favoritesDropdownMenu\";\nimport { SymbolBadge } from \"../symbolBadge\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\n\nexport function getSymbolColumn(\n  favorite: FavoriteInstance,\n  isFavoriteList = false,\n  options?: {\n    stackLeverageInSecondRow?: boolean;\n    symbolColumnWidth?: number;\n  },\n) {\n  return {\n    title: i18n.t(\"common.symbol\"),\n    dataIndex: \"symbol\",\n    width: options?.symbolColumnWidth ?? 150,\n    className: \"oui-z-[1]\",\n    onSort: true,\n    render: (value, record) => {\n      let favoritesIcon: ReactNode;\n      if (!isFavoriteList) {\n        favoritesIcon = (\n          <FavoritesDropdownMenuWidget row={record} favorite={favorite}>\n            <Flex\n              width={12}\n              height={12}\n              justify=\"center\"\n              itemAlign=\"center\"\n              className=\"oui-me-1 oui-cursor-pointer\"\n            >\n              {record.isFavorite ? (\n                <FavoritesIcon2 className=\"oui-size-3\" />\n              ) : (\n                <UnFavoritesIcon2 className=\"oui-size-3\" />\n              )}\n            </Flex>\n          </FavoritesDropdownMenuWidget>\n        );\n      }\n\n      const stackLeverageInSecondRow = options?.stackLeverageInSecondRow;\n      const hasLeverage = typeof record.leverage === \"number\";\n      const showSymbolBadgeInLeverageRow =\n        stackLeverageInSecondRow && Boolean(record.broker_id);\n      const showSecondRow = hasLeverage || showSymbolBadgeInLeverageRow;\n\n      return (\n        <Flex gapX={1} itemAlign=\"center\">\n          {favoritesIcon}\n          <Flex\n            direction={stackLeverageInSecondRow ? \"column\" : \"row\"}\n            itemAlign={stackLeverageInSecondRow ? \"start\" : \"center\"}\n            gapY={stackLeverageInSecondRow ? 1 : undefined}\n            gapX={stackLeverageInSecondRow ? undefined : 1}\n          >\n            <Flex gapX={1} itemAlign=\"center\">\n              <TokenIcon symbol={value} className=\"oui-size-[18px]\" />\n              <SymbolDisplay\n                formatString=\"base\"\n                size=\"2xs\"\n                record={record}\n                showBadge={!stackLeverageInSecondRow}\n              >\n                {value}\n              </SymbolDisplay>\n            </Flex>\n            {stackLeverageInSecondRow\n              ? showSecondRow && (\n                  <Flex gapX={1} itemAlign=\"center\">\n                    {showSymbolBadgeInLeverageRow && (\n                      <SymbolBadge symbol={value} />\n                    )}\n                    {hasLeverage && (\n                      <Badge size=\"xs\" color=\"primary\">\n                        {record.leverage}x\n                      </Badge>\n                    )}\n                  </Flex>\n                )\n              : hasLeverage && (\n                  <Badge size=\"xs\" color=\"primary\">\n                    {record.leverage}x\n                  </Badge>\n                )}\n          </Flex>\n        </Flex>\n      );\n    },\n  } as Column<any>;\n}\n\nexport function getLastColumn() {\n  return {\n    title: i18n.t(\"markets.column.last\"),\n    dataIndex: \"24h_close\",\n    align: \"right\",\n    onSort: true,\n    width: 100,\n    render: (value, record) => {\n      return (\n        <Text.numeral dp={record.quote_dp || 2} size=\"2xs\">\n          {value}\n        </Text.numeral>\n      );\n    },\n  } as Column<any>;\n}\n\nexport function getMarkColumn() {\n  return {\n    title: i18n.t(\"markets.column.mark\"),\n    dataIndex: \"mark_price\",\n    align: \"right\",\n    onSort: true,\n    width: 100,\n    render: (value, record) => {\n      return (\n        <Text.numeral dp={record.quote_dp || 2} size=\"2xs\">\n          {value}\n        </Text.numeral>\n      );\n    },\n  } as Column<any>;\n}\n\nexport function getIndexColumn() {\n  return {\n    title: i18n.t(\"markets.column.index\"),\n    dataIndex: \"index_price\",\n    align: \"right\",\n    onSort: true,\n    width: 100,\n    render: (value, record) => {\n      return (\n        <Text.numeral dp={record.quote_dp || 2} size=\"2xs\">\n          {value}\n        </Text.numeral>\n      );\n    },\n  } as Column<any>;\n}\n\nexport function get24hPercentageColumn() {\n  return {\n    title: i18n.t(\"markets.column.24hPercentage\"),\n    dataIndex: \"change\",\n    align: \"right\",\n    onSort: true,\n    width: 80,\n    render: (value) => {\n      return (\n        <Text.numeral\n          rule=\"percentages\"\n          coloring\n          rm={Decimal.ROUND_DOWN}\n          showIdentifier\n          size=\"2xs\"\n        >\n          {value}\n        </Text.numeral>\n      );\n    },\n  } as Column<any>;\n}\n\nexport function get24hVolOIColumn() {\n  return {\n    title: i18n.t(\"markets.column.24hVol\"),\n    dataIndex: \"24h_amount\",\n    align: \"right\",\n    className: \"oui-h-[36px]\",\n    width: 100,\n    multiSort: {\n      fields: [\n        {\n          sortKey: \"24h_amount\",\n          label: i18n.t(\"markets.column.24hVol\"),\n        },\n        {\n          sortKey: \"openInterest\",\n          label: i18n.t(\"markets.column.OI\"),\n        },\n      ],\n    },\n    render: (value, record) => (\n      <Flex direction=\"column\" itemAlign=\"end\" gapY={1}>\n        <Text.numeral rule=\"human\" dp={2} rm={Decimal.ROUND_DOWN}>\n          {value}\n        </Text.numeral>\n        <Text.numeral\n          rule=\"human\"\n          dp={2}\n          rm={Decimal.ROUND_DOWN}\n          size=\"2xs\"\n          intensity={54}\n        >\n          {record.openInterest}\n        </Text.numeral>\n      </Flex>\n    ),\n  } as Column<any>;\n}\n\nexport function getLastAnd24hPercentageColumn(\n  favorite: FavoriteInstance,\n  isFavoriteList = false,\n) {\n  return {\n    title: i18n.t(\"markets.column.last&24hPercentage\"),\n    dataIndex: \"change\",\n    align: \"right\",\n    onSort: true,\n    className: \"oui-h-[36px]\",\n    width: 100,\n    render: (value, record) => {\n      const onDelSymbol: React.MouseEventHandler = (e) => {\n        favorite.updateSymbolFavoriteState(\n          record,\n          favorite.selectedFavoriteTab,\n          true,\n        );\n        e.stopPropagation();\n      };\n\n      const iconCls =\n        \"oui-w-4 oui-h-4 oui-text-base-contrast-54 hover:oui-text-base-contrast\";\n\n      const actions = (\n        <div\n          className={cn(\n            \"oui-absolute oui-end-0 oui-top-[6.5px]\",\n            \"oui-hidden group-hover:oui-block\",\n          )}\n        >\n          <Flex\n            className={cn(\n              \"oui-inline-flex\",\n              \"oui-bg-primary-darken oui-py-[6px]\",\n            )}\n            r=\"base\"\n            width={52}\n            justify=\"center\"\n            itemAlign=\"end\"\n            gapX={2}\n          >\n            <TopIcon\n              className={iconCls}\n              onClick={(e) => {\n                e.stopPropagation();\n                favorite.pinToTop(record);\n              }}\n            />\n            <DeleteIcon className={iconCls} onClick={onDelSymbol} />\n          </Flex>\n        </div>\n      );\n\n      return (\n        <div className=\"oui-relative\">\n          {isFavoriteList && actions}\n\n          <Flex\n            direction=\"column\"\n            justify=\"end\"\n            itemAlign=\"end\"\n            gapY={1}\n            className={cn(isFavoriteList && \"group-hover:oui-invisible\")}\n          >\n            <Text.numeral dp={record.quote_dp || 2} size=\"2xs\">\n              {record[\"24h_close\"]}\n            </Text.numeral>\n            <Text.numeral\n              rule=\"percentages\"\n              coloring\n              rm={Decimal.ROUND_DOWN}\n              showIdentifier\n              size=\"2xs\"\n            >\n              {value}\n            </Text.numeral>\n          </Flex>\n        </div>\n      );\n    },\n  } as Column<any>;\n}\n\nexport function getMarkIndexColumn() {\n  return {\n    title: i18n.t(\"markets.column.mark&Index\"),\n    dataIndex: \"mark_price\",\n    align: \"right\",\n    className: \"oui-h-[36px]\",\n    width: 100,\n    multiSort: {\n      fields: [\n        {\n          sortKey: \"mark_price\",\n          label: i18n.t(\"markets.column.mark\"),\n        },\n        {\n          sortKey: \"index_price\",\n          label: i18n.t(\"markets.column.index\"),\n        },\n      ],\n    },\n    render: (value, record) => (\n      <Flex direction=\"column\" itemAlign=\"end\" gapY={1}>\n        <Text.numeral dp={record.quote_dp || 2} size=\"2xs\">\n          {value}\n        </Text.numeral>\n        <Text.numeral dp={record.quote_dp || 2} size=\"2xs\" intensity={54}>\n          {record.index_price}\n        </Text.numeral>\n      </Flex>\n    ),\n  } as Column<any>;\n}\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Column } from \"@orderly.network/ui\";\nimport type { FavoriteInstance } from \"../../type\";\nimport {\n  get24hVolOIColumn,\n  getLastAnd24hPercentageColumn,\n  getSymbolColumn,\n} from \"../shared/column\";\n\nexport const useSideMarketsColumns = (\n  favorite: FavoriteInstance,\n  isFavoriteList = false,\n) => {\n  // Column factories below still call i18n.t internally, so subscribe here.\n  useTranslation();\n  const symbolCol = getSymbolColumn(favorite, isFavoriteList, {\n    stackLeverageInSecondRow: true,\n  });\n  const volOiCol = get24hVolOIColumn();\n  const lastPctCol = getLastAnd24hPercentageColumn(favorite, isFavoriteList);\n\n  return [\n    {\n      ...symbolCol,\n      width: 115,\n    },\n    volOiCol,\n    lastPctCol,\n  ] as Column[];\n};\n","import { FC } from \"react\";\nimport { cn, DataTable } from \"@orderly.network/ui\";\nimport { CollapseMarkets } from \"../collapseMarkets\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { LowVolumeEmptyView } from \"../shared/lowVolumeEmptyView\";\nimport { useSideMarketsColumns } from \"../sideMarkets/column\";\nimport { type MarketsListScriiptReturn } from \"./marketsList.script\";\nimport { type MarketsListWidgetProps } from \"./marketsList.widget\";\n\nexport type MarketsListProps = MarketsListScriiptReturn &\n  Pick<\n    MarketsListWidgetProps,\n    | \"getColumns\"\n    | \"panelSize\"\n    | \"tableClassNames\"\n    | \"rowClassName\"\n    | \"initialSort\"\n    | \"renderHeader\"\n    | \"emptyView\"\n  >;\n\nexport const MarketsList: FC<MarketsListProps> = (props) => {\n  const {\n    loading,\n    dataSource,\n    isHiddenByLowVolumeFilter,\n    favorite,\n    onSort,\n    initialSort,\n    getColumns,\n    panelSize,\n    isFavoritesList,\n    renderHeader,\n    emptyView,\n  } = props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n\n  const sideColumns = useSideMarketsColumns(favorite, isFavoritesList);\n\n  const columns =\n    typeof getColumns === \"function\"\n      ? getColumns(favorite, isFavoritesList)\n      : sideColumns;\n\n  if (panelSize === \"small\") {\n    return null;\n  }\n\n  if (panelSize === \"middle\") {\n    return <CollapseMarkets dataSource={dataSource} />;\n  }\n\n  return (\n    <>\n      {renderHeader?.(favorite)}\n      <DataTable\n        classNames={{\n          root: props.tableClassNames?.root,\n          body: props.tableClassNames?.body,\n          header: cn(\"oui-h-9\", props.tableClassNames?.header),\n          scroll: props.tableClassNames?.scroll,\n          empty: isHiddenByLowVolumeFilter\n            ? \"oui-items-start oui-pt-16\"\n            : \"oui-items-start oui-mt-6\",\n        }}\n        columns={columns}\n        loading={loading}\n        dataSource={dataSource}\n        onRow={(record) => {\n          return {\n            className: cn(\"oui-h-[53px]\", props.rowClassName),\n            onClick: () => {\n              onSymbolChange?.(record);\n              favorite.addToHistory(record);\n            },\n          };\n        }}\n        generatedRowKey={(record) => record.symbol}\n        rowSelection={{ [symbol!]: true }}\n        onSort={onSort}\n        initialSort={\n          initialSort\n            ? { sortKey: initialSort.sortKey, sort: initialSort.sortOrder }\n            : undefined\n        }\n        manualSorting\n        emptyView={\n          isHiddenByLowVolumeFilter ? <LowVolumeEmptyView /> : emptyView\n        }\n      />\n    </>\n  );\n};\n","import { useMarkets } from \"@orderly.network/hooks\";\nimport { SortOrder, Column } from \"@orderly.network/ui\";\n\n// Re-export config types from hooks for convenience\nexport type {\n  BuiltInMarketTab,\n  CustomMarketTab,\n  MarketBuiltInTabType,\n  MarketTabConfig,\n  MarketCategoryContext,\n  MarketCategoryConfig,\n  MarketCategoryComponentKey,\n} from \"@orderly.network/hooks\";\n\nexport type FavoriteInstance = ReturnType<typeof useMarkets>[1];\n\nexport type SortType = {\n  sortKey: string;\n  sortOrder: SortOrder;\n};\n\nexport type GetColumns = (\n  favorite: FavoriteInstance,\n  isFavoriteList: boolean,\n) => Column[];\n\nexport enum MarketsPageTab {\n  Markets = \"markets\",\n  Funding = \"funding\",\n}\n\nexport enum MarketsTabName {\n  Favorites = \"favorites\",\n  Recent = \"recent\",\n  All = \"all\",\n  Crypto = \"crypto\",\n  Rwa = \"rwa\",\n  PreTge = \"preTge\",\n  NewListing = \"newListing\",\n  Community = \"community\",\n}\n\nexport enum CommunitySubTabName {\n  All = \"all\",\n  MyListings = \"myListings\",\n  OtherListings = \"otherListings\",\n}\n\nexport enum FundingTabName {\n  Overview = \"overview\",\n  Comparison = \"comparison\",\n}\n","const MIN_24H_VOLUME = 1000;\n\nexport const isMarketAboveMinVolume = (volume: unknown): boolean =>\n  typeof volume === \"number\" &&\n  Number.isFinite(volume) &&\n  volume >= MIN_24H_VOLUME;\n\nexport function filterMarketsByLowVolume<\n  T extends { \"24h_amount\"?: number | null },\n>(markets: T[], showLowVolume: boolean) {\n  const visibleMarkets = showLowVolume\n    ? markets\n    : markets.filter((market) => isMarketAboveMinVolume(market[\"24h_amount\"]));\n\n  return {\n    visibleMarkets,\n    allHidden: markets.length > 0 && visibleMarkets.length === 0,\n  };\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { MarketsType, useMarkets } from \"@orderly.network/hooks\";\nimport { MarketsTabName } from \"../../type\";\nimport { searchBySymbol, useSort } from \"../../utils\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useLowVolumeMarketFilter } from \"../shared/lowVolumeMarketFilter\";\nimport { filterMarketsByLowVolume } from \"../shared/marketVolumeFilter\";\nimport { type MarketsListWidgetProps } from \"./marketsList.widget\";\n\nexport type MarketsListScriptOptions = MarketsListWidgetProps;\n\nexport type MarketsListScriiptReturn = ReturnType<typeof useMarketsListScript>;\n\nconst MarketsTypeMap = {\n  [MarketsTabName.All]: MarketsType.ALL,\n  [MarketsTabName.Crypto]: MarketsType.CRYPTO,\n  [MarketsTabName.Community]: MarketsType.COMMUNITY,\n  [MarketsTabName.Rwa]: MarketsType.RWA,\n  [MarketsTabName.PreTge]: MarketsType.PRE_TGE,\n  [MarketsTabName.Favorites]: MarketsType.FAVORITES,\n  [MarketsTabName.Recent]: MarketsType.RECENT,\n  [MarketsTabName.NewListing]: MarketsType.NEW_LISTING,\n};\n\nexport const useMarketsListScript = (options: MarketsListScriptOptions) => {\n  const [loading, setLoading] = useState(true);\n\n  const [data, favorite] = useMarkets(\n    MarketsTypeMap[options.type] || MarketsType.ALL,\n  );\n\n  const { favorites, selectedFavoriteTab } = favorite;\n\n  const { searchValue } = useMarketsContext();\n  const { showLowVolume } = useLowVolumeMarketFilter();\n\n  const { onSort, getSortedList } = useSort(\n    options.initialSort,\n    options.onSort,\n  );\n\n  const { dataSource, isHiddenByLowVolumeFilter } = useMemo(() => {\n    const filterList =\n      typeof options.dataFilter === \"function\"\n        ? options.dataFilter(data, { favorites, selectedFavoriteTab })\n        : data;\n    const searchResults = searchBySymbol(filterList, searchValue, \"base\");\n    const { visibleMarkets, allHidden } = filterMarketsByLowVolume(\n      searchResults,\n      showLowVolume,\n    );\n\n    return {\n      dataSource: getSortedList(visibleMarkets),\n      isHiddenByLowVolumeFilter: allHidden,\n    };\n  }, [\n    data,\n    getSortedList,\n    searchValue,\n    options.dataFilter,\n    favorites,\n    selectedFavoriteTab,\n    showLowVolume,\n  ]);\n\n  useEffect(() => {\n    setLoading(false);\n  }, [data]);\n\n  const isFavoritesList = options.type === MarketsTabName.Favorites;\n\n  return {\n    loading,\n    dataSource,\n    isHiddenByLowVolumeFilter,\n    favorite,\n    onSort,\n    isFavoritesList,\n  };\n};\n","import { ReactNode } from \"react\";\nimport { Favorite, FavoriteTab } from \"@orderly.network/hooks\";\nimport { DataTableClassNames } from \"@orderly.network/ui\";\nimport {\n  FavoriteInstance,\n  GetColumns,\n  SortType,\n  MarketsTabName,\n} from \"../../type\";\nimport { useMarketsListScript } from \"./marketsList.script\";\nimport { MarketsList } from \"./marketsList.ui\";\n\nexport type MarketsListWidgetProps = {\n  type: MarketsTabName;\n  getColumns?: GetColumns;\n  panelSize?: \"small\" | \"middle\" | \"large\";\n  tableClassNames?: DataTableClassNames;\n  rowClassName?: string;\n  initialSort?: SortType;\n  onSort?: (sort?: SortType) => void;\n  renderHeader?: (favorite: FavoriteInstance) => ReactNode;\n  dataFilter?: (\n    data: any[],\n    options: { favorites: Favorite[]; selectedFavoriteTab: FavoriteTab },\n  ) => any[];\n  emptyView?: ReactNode;\n};\n\nexport const MarketsListWidget: React.FC<MarketsListWidgetProps> = (props) => {\n  const state = useMarketsListScript(props);\n  return (\n    <MarketsList\n      {...state}\n      initialSort={props.initialSort}\n      getColumns={props.getColumns}\n      panelSize={props.panelSize}\n      tableClassNames={props.tableClassNames}\n      rowClassName={props.rowClassName}\n      renderHeader={props.renderHeader}\n      emptyView={props.emptyView}\n    />\n  );\n};\n","export { MarketsList } from \"./marketsList.ui\";\nexport { useMarketsListScript } from \"./marketsList.script\";\nexport { MarketsListWidget } from \"./marketsList.widget\";\n","import React, { useEffect, useMemo } from \"react\";\nimport {\n  MarketsType,\n  useLocalStorage,\n  useMarkets,\n  useRwaSymbolsInfoStore,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport type { API } from \"@orderly.network/types\";\nimport { TabPanel, Tabs } from \"@orderly.network/ui\";\n\nexport type RwaSubcategory = \"all\" | \"fx\" | \"hk\" | \"kr\" | \"cn\";\n\ntype RwaSubcategoryConfig = {\n  value: RwaSubcategory;\n  title: string;\n  marketSession?: API.RwaSymbol[\"market_session\"];\n};\n\nconst RWA_SUBCATEGORY_CONFIGS: RwaSubcategoryConfig[] = [\n  // US_STOCK and US_STOCK_EXT intentionally remain available only under All.\n  { value: \"all\", title: \"All\" },\n  { value: \"fx\", title: \"FX\", marketSession: \"FX\" },\n  { value: \"hk\", title: \"HK\", marketSession: \"HK_STOCK\" },\n  { value: \"kr\", title: \"KR\", marketSession: \"KR_STOCK\" },\n  { value: \"cn\", title: \"CN\", marketSession: \"CN_STOCK\" },\n];\n\nconst RWA_SUBCATEGORY_SESSION_MAP = RWA_SUBCATEGORY_CONFIGS.reduce<\n  Partial<Record<RwaSubcategory, API.RwaSymbol[\"market_session\"]>>\n>((acc, item) => {\n  if (item.marketSession) {\n    acc[item.value] = item.marketSession;\n  }\n  return acc;\n}, {});\n\nexport function createRwaSubcategoryFilter(\n  subcategory: RwaSubcategory,\n  rwaSymbolsInfo?: Record<string, API.RwaSymbol>,\n) {\n  return (data: any[]) => {\n    const targetSession = RWA_SUBCATEGORY_SESSION_MAP[subcategory];\n\n    if (!targetSession) {\n      return data;\n    }\n\n    return data.filter((item) => {\n      const marketSession =\n        item?.market_session ?? rwaSymbolsInfo?.[item?.symbol]?.market_session;\n      return marketSession === targetSession;\n    });\n  };\n}\n\nexport type RwaSubcategoryTabsProps = {\n  storageKey: string;\n  className?: string;\n  classNames?: Record<string, string>;\n  variant?: any;\n  size?: any;\n  showScrollIndicator?: boolean;\n  renderPanel: (\n    subcategory: RwaSubcategory,\n    dataFilter: (data: any[]) => any[],\n  ) => React.ReactNode;\n};\n\nexport const RwaSubcategoryTabs: React.FC<RwaSubcategoryTabsProps> = (\n  props,\n) => {\n  const {\n    storageKey,\n    className,\n    classNames,\n    variant = \"contained\",\n    size = \"sm\",\n    showScrollIndicator,\n    renderPanel,\n  } = props;\n  const { t } = useTranslation();\n  const [subcategory, setSubcategory] = useLocalStorage<RwaSubcategory>(\n    storageKey,\n    \"all\",\n  );\n  const rwaSymbolsInfo = useRwaSymbolsInfoStore();\n  // TODO: Pass available market sessions from the parent list to avoid recalculating RWA markets here.\n  const [rwaMarkets] = useMarkets(MarketsType.RWA);\n\n  const availableSessions = useMemo(() => {\n    return new Set(\n      rwaMarkets\n        .map(\n          (item) =>\n            item.market_session ??\n            rwaSymbolsInfo?.[item.symbol]?.market_session,\n        )\n        .filter(Boolean),\n    );\n  }, [rwaMarkets, rwaSymbolsInfo]);\n\n  const visibleTabs = useMemo(() => {\n    return RWA_SUBCATEGORY_CONFIGS.filter((tab) => {\n      if (!tab.marketSession) {\n        return true;\n      }\n      // Keep the persisted selection visible while market sessions are still loading,\n      // otherwise remounting ExpandMarkets can briefly only show \"all\" and wipe storage.\n      if (tab.value === subcategory) {\n        return true;\n      }\n      return availableSessions.has(tab.marketSession);\n    });\n  }, [availableSessions, subcategory]);\n\n  useEffect(() => {\n    // Wait until RWA markets have loaded; an empty session set on remount would\n    // incorrectly treat a valid stored subcategory (e.g. FX) as missing.\n    if (rwaMarkets.length === 0) {\n      return;\n    }\n    const targetSession = RWA_SUBCATEGORY_SESSION_MAP[subcategory];\n    if (targetSession && !availableSessions.has(targetSession)) {\n      setSubcategory(\"all\");\n    }\n  }, [availableSessions, rwaMarkets.length, setSubcategory, subcategory]);\n\n  return (\n    <Tabs\n      variant={variant}\n      size={size}\n      value={subcategory}\n      onValueChange={(value) => setSubcategory(value as RwaSubcategory)}\n      classNames={classNames as any}\n      className={className}\n      showScrollIndicator={showScrollIndicator}\n    >\n      {visibleTabs.map((tab) => (\n        <TabPanel\n          key={tab.value}\n          title={tab.value === \"all\" ? t(\"common.all\") : tab.title}\n          value={tab.value}\n        >\n          {renderPanel(\n            tab.value,\n            createRwaSubcategoryFilter(tab.value, rwaSymbolsInfo),\n          )}\n        </TabPanel>\n      ))}\n    </Tabs>\n  );\n};\n","export {\n  createRwaSubcategoryFilter,\n  RwaSubcategoryTabs,\n} from \"./rwaSubcategoryTabs.ui\";\nexport type {\n  RwaSubcategory,\n  RwaSubcategoryTabsProps,\n} from \"./rwaSubcategoryTabs.ui\";\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, RwaIcon, Text } from \"@orderly.network/ui\";\n\nconst RwaIconTab = (props: { iconSize?: number }) => {\n  const { iconSize = 12 } = props;\n  const { t } = useTranslation();\n  return (\n    <Flex gap={1}>\n      <RwaIcon\n        size={iconSize}\n        className=\"group-data-[state=active]:oui-text-base-contrast group-data-[state=inactive]:oui-text-base-contrast-36\"\n      />\n      <Text>{t(\"markets.tradFi\")}</Text>\n    </Flex>\n  );\n};\n\nconst RwaTab = () => {\n  const { t } = useTranslation();\n  return (\n    <Flex gap={1}>\n      <Text>{t(\"markets.tradFi\")}</Text>\n    </Flex>\n  );\n};\n\nexport { RwaIconTab, RwaTab };\n","import React, { useRef, useCallback } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  Box,\n  CloseCircleFillIcon,\n  Input,\n  InputProps,\n} from \"@orderly.network/ui\";\nimport { SearchIcon } from \"../../icons\";\nimport { useMarketsContext } from \"../marketsProvider\";\n\ntype SearchInputProps = Pick<InputProps, \"classNames\" | \"suffix\">;\n\nexport const SearchInput: React.FC<SearchInputProps> = (props) => {\n  const { classNames, suffix } = props;\n  const isComposingRef = useRef<boolean>(false);\n\n  const { t } = useTranslation();\n\n  const { searchValue, onSearchValueChange, clearSearchValue } =\n    useMarketsContext();\n\n  const handleCompositionStart = useCallback(() => {\n    isComposingRef.current = true;\n  }, []);\n\n  const handleCompositionEnd = useCallback(\n    (event: React.CompositionEvent<HTMLInputElement>) => {\n      isComposingRef.current = false;\n      onSearchValueChange?.(event.currentTarget.value);\n    },\n    [onSearchValueChange],\n  );\n\n  return (\n    <Input\n      value={searchValue}\n      onValueChange={onSearchValueChange}\n      onCompositionStart={handleCompositionStart}\n      onCompositionEnd={handleCompositionEnd}\n      placeholder={t(\"markets.search.placeholder\")}\n      classNames={classNames}\n      size=\"sm\"\n      prefix={\n        <Box pl={3} pr={1}>\n          <SearchIcon className=\"oui-text-base-contrast-36\" />\n        </Box>\n      }\n      suffix={\n        suffix ||\n        (searchValue && (\n          <Box mr={2}>\n            <CloseCircleFillIcon\n              size={14}\n              className=\"oui-cursor-pointer oui-text-base-contrast-36\"\n              onClick={clearSearchValue}\n            />\n          </Box>\n        ))\n      }\n      autoComplete=\"off\"\n    />\n  );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  Button,\n  cn,\n  EmptyStateIcon,\n  Flex,\n  PlusIcon,\n  Text,\n} from \"@orderly.network/ui\";\n\ntype FavoritesEmptyProps = {\n  className?: string;\n  onClick: () => void;\n};\n\nexport const FavoritesEmpty: FC<FavoritesEmptyProps> = (props) => {\n  const { t } = useTranslation();\n  return (\n    <Flex\n      direction=\"column\"\n      itemAlign=\"center\"\n      gapY={4}\n      className={cn(\"oui-text-center\", props.className)}\n    >\n      <EmptyStateIcon />\n      <Button\n        color=\"gray\"\n        size=\"xs\"\n        className=\"oui-bg-base-4\"\n        onClick={props.onClick}\n      >\n        <PlusIcon\n          className=\"oui-me-1 oui-text-base-contrast\"\n          opacity={1}\n          size={12}\n        />\n        <Text intensity={98}>{t(\"markets.favorites.addFavorites\")}</Text>\n      </Button>\n    </Flex>\n  );\n};\n","import { KeyboardEventHandler } from \"react\";\nimport { FavoriteTab } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  Box,\n  cn,\n  Flex,\n  Text,\n  Tooltip,\n  Input,\n  modal,\n} from \"@orderly.network/ui\";\nimport { AddIcon, ActiveAddIcon, EditIcon, TrashIcon } from \"../../icons\";\nimport {\n  UseFavoritesTabScriptOptions,\n  UseFavoritesTabScriptReturn,\n} from \"./favoritesTabs.script\";\n\nexport type FavoritesTabProps = UseFavoritesTabScriptReturn &\n  Pick<UseFavoritesTabScriptOptions, \"size\"> & {\n    className?: string;\n  };\n\nexport const FavoritesTab: React.FC<FavoritesTabProps> = (props) => {\n  const {\n    open,\n    setOpen,\n    container,\n    inputRef,\n    inputWidth,\n    spanRef,\n    editing,\n    value,\n    onValueChange,\n    updateCurTab,\n    onEdit,\n    addTab,\n    delTab,\n    size = \"default\",\n    scrollable,\n  } = props;\n\n  const { t } = useTranslation();\n\n  const { selectedFavoriteTab, favoriteTabs, updateSelectedFavoriteTab } =\n    props.favorite;\n\n  const addIconWidth = size === \"sm\" ? 28 : 36;\n  const tabHeight = size === \"sm\" ? 18 : 24;\n  const overLen = value?.length > 15;\n\n  const gradientColor =\n    \"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  const onDel = (item: any) => {\n    modal.confirm({\n      title: t(\"markets.favorites.tabs.delete.dialog.title\"),\n      content: (\n        <Text size=\"sm\">\n          {t(\"markets.favorites.tabs.delete.dialog.description\", {\n            name: item.name,\n          })}\n        </Text>\n      ),\n      onOk() {\n        delTab(item);\n        return Promise.resolve();\n      },\n    });\n  };\n\n  const onKeyUp: KeyboardEventHandler = (e) => {\n    if (e.key === \"Enter\") {\n      updateCurTab(overLen);\n    }\n  };\n\n  const renderActions = (item: any) => {\n    return (\n      <Flex gapX={2} itemAlign=\"center\" px={2} py={1}>\n        <EditIcon\n          className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast\"\n          onClick={() => {\n            onEdit(item);\n          }}\n        />\n        <TrashIcon\n          className=\"oui-cursor-pointer oui-text-base-contrast-36 hover:oui-text-base-contrast\"\n          onClick={() => {\n            onDel(item);\n          }}\n        />\n      </Flex>\n    );\n  };\n\n  const renderAdd = () => {\n    const overTabs = favoriteTabs.length >= 10;\n\n    const icon = (\n      <Flex\n        className={cn(\n          \"oui-inline-flex\",\n          overTabs ? \"oui-cursor-not-allowed\" : \"oui-cursor-pointer\",\n          overTabs ? \"oui-bg-base-3\" : gradientColor,\n        )}\n        width={addIconWidth}\n        height={tabHeight}\n        r=\"base\"\n        justify=\"center\"\n        itemAlign=\"center\"\n        onClick={overTabs ? undefined : addTab}\n      >\n        {overTabs ? (\n          <AddIcon className=\"oui-z-[1] oui-size-3 oui-text-base-contrast-54\" />\n        ) : (\n          <ActiveAddIcon className=\"oui-size-3\" />\n        )}\n      </Flex>\n    );\n\n    if (overTabs) {\n      return (\n        <Tooltip\n          // @ts-ignore\n          content={\n            <Text size=\"2xs\" intensity={80}>\n              Maximum 10 groups in the favorite list\n            </Text>\n          }\n          className=\"oui-bg-base-6\"\n          delayDuration={0}\n          arrow={{ className: \"oui-fill-base-6\" }}\n        >\n          {icon}\n        </Tooltip>\n      );\n    }\n\n    return icon;\n  };\n\n  const renderInput = (isActive: boolean) => {\n    return (\n      <Tooltip\n        open={overLen}\n        // @ts-ignore\n        content={\n          <Text size=\"2xs\" intensity={80}>\n            List name cannot exceed 15 characters\n          </Text>\n        }\n        className=\"oui-bg-base-6\"\n        delayDuration={0}\n        sideOffset={0}\n      >\n        <Input\n          ref={inputRef}\n          style={\n            overLen\n              ? { width: inputWidth }\n              : {\n                  // @ts-ignore\n                  \"--oui-gradient-angle\": \"270deg\",\n                  backgroundClip: \"text\",\n                  WebkitTextFillColor: \"transparent\",\n                  WebkitBackgroundClip: \"text\",\n                  width: inputWidth,\n                }\n          }\n          classNames={{\n            root: cn(\n              \"oui-my-px oui-rounded oui-p-0 oui-px-2\",\n              \"focus-within:oui-outline-transparent focus-visible:oui-outline-none\",\n              size === \"sm\" ? \"oui-h-[18px]\" : \"oui-h-[24px]\",\n              isActive && cn(overLen ? \"oui-bg-danger/15\" : gradientColor),\n            ),\n            input: cn(\n              \"oui-font-semibold oui-caret-[rgb(var(--oui-color-tertiary))]\",\n              overLen\n                ? \"oui-text-danger\"\n                : \"oui-text-transparent oui-gradient-brand \",\n              size === \"sm\" ? \"oui-text-2xs\" : \"oui-text-sm\",\n            ),\n          }}\n          value={value}\n          onValueChange={onValueChange}\n          onBlur={() => {\n            updateCurTab(overLen);\n          }}\n          onKeyUp={onKeyUp}\n          autoComplete=\"off\"\n        />\n      </Tooltip>\n    );\n  };\n\n  const renderContent = (item: FavoriteTab, isActive: boolean) => {\n    if (editing && isActive) {\n      return renderInput(isActive);\n    }\n\n    const textProps = {\n      weight: \"semibold\",\n      size: size === \"sm\" ? \"2xs\" : \"sm\",\n      className: size === \"sm\" ? \"oui-leading-[18px]\" : \"oui-leading-[24px]\",\n      as: \"div\",\n    } as any;\n\n    const content = isActive ? (\n      <Text.gradient color=\"brand\" angle={270} {...textProps}>\n        {item.name}\n      </Text.gradient>\n    ) : (\n      <Text {...textProps}>{item.name}</Text>\n    );\n\n    return (\n      <Box\n        r=\"base\"\n        px={2}\n        height={tabHeight}\n        className={cn(\n          \"oui-cursor-pointer oui-select-none\",\n          isActive\n            ? \"oui-markets-favorites-active-tab-item\"\n            : \"oui-markets-favorites-tab-item\",\n          isActive\n            ? gradientColor\n            : \"oui-bg-line-6 oui-text-base-contrast-36 hover:oui-text-base-contrast\",\n        )}\n        onClick={() => {\n          updateSelectedFavoriteTab(item);\n          if (isActive) {\n            setOpen(true);\n          }\n        }}\n      >\n        {content}\n      </Box>\n    );\n  };\n\n  return (\n    <Flex width=\"100%\" gapX={3} className={props.className}>\n      <Flex\n        ref={container}\n        id=\"oui-markets-favorites-tabs-container\"\n        className={cn(\n          \"oui-hide-scrollbar oui-relative oui-cursor-pointer\",\n          \"oui-overflow-hidden oui-overflow-x-auto\",\n        )}\n        // my={3}\n        gapX={size === \"sm\" ? 2 : 3}\n        width=\"100%\"\n      >\n        {favoriteTabs?.slice(0, 10)?.map((item: any) => {\n          const isActive = selectedFavoriteTab.id === item.id;\n          return (\n            <Tooltip\n              key={item.id}\n              open={isActive && !editing ? open : false}\n              onOpenChange={(open) => {\n                if (isActive) {\n                  setOpen(open);\n                }\n              }}\n              // @ts-ignore\n              content={renderActions(item)}\n              delayDuration={0}\n              className={cn(\"oui-bg-base-5\")}\n              arrow={{\n                className: \"oui-fill-base-5\",\n              }}\n            >\n              {renderContent(item, isActive)}\n            </Tooltip>\n          );\n        })}\n\n        {!scrollable && renderAdd()}\n\n        <Text size=\"xs\" ref={spanRef} className=\"oui-invisible\">\n          {value}\n        </Text>\n      </Flex>\n      {scrollable && renderAdd()}\n    </Flex>\n  );\n};\n","import { useEffect, useRef, useState } from \"react\";\nimport { FavoriteInstance } from \"../../type\";\n\ntype RTLScrollType = \"default\" | \"negative\" | \"reverse\";\n\nlet cachedRTLScrollType: RTLScrollType | null = null;\n\nfunction getRTLScrollType(): RTLScrollType {\n  if (cachedRTLScrollType) {\n    return cachedRTLScrollType;\n  }\n\n  if (typeof document === \"undefined\" || !document.body) {\n    cachedRTLScrollType = \"negative\";\n    return cachedRTLScrollType;\n  }\n\n  const outer = document.createElement(\"div\");\n  const inner = document.createElement(\"div\");\n\n  outer.dir = \"rtl\";\n  outer.style.width = \"4px\";\n  outer.style.height = \"1px\";\n  outer.style.overflow = \"scroll\";\n  outer.style.visibility = \"hidden\";\n  outer.style.position = \"absolute\";\n  outer.style.top = \"-9999px\";\n\n  inner.style.width = \"8px\";\n  inner.style.height = \"1px\";\n  outer.appendChild(inner);\n  document.body.appendChild(outer);\n\n  if (outer.scrollLeft > 0) {\n    cachedRTLScrollType = \"default\";\n  } else {\n    outer.scrollLeft = 1;\n    cachedRTLScrollType = outer.scrollLeft === 0 ? \"negative\" : \"reverse\";\n  }\n\n  document.body.removeChild(outer);\n  return cachedRTLScrollType;\n}\n\nfunction getScrollLeftForLogicalOffset(element: HTMLElement, offset: number) {\n  const max = Math.max(element.scrollWidth - element.clientWidth, 0);\n  const nextOffset = Math.min(Math.max(offset, 0), max);\n\n  if (getComputedStyle(element).direction !== \"rtl\") {\n    return nextOffset;\n  }\n\n  switch (getRTLScrollType()) {\n    case \"negative\":\n      return -nextOffset;\n    case \"default\":\n      return max - nextOffset;\n    case \"reverse\":\n      return nextOffset;\n  }\n}\n\nexport type UseFavoritesTabScriptOptions = {\n  favorite: FavoriteInstance;\n  size?: \"sm\" | \"default\";\n};\n\nexport type UseFavoritesTabScriptReturn = ReturnType<\n  typeof useFavoritesTabScript\n>;\n\nexport function useFavoritesTabScript(options: UseFavoritesTabScriptOptions) {\n  const { favorite, size = \"default\" } = options;\n  const {\n    favorites,\n    favoriteTabs,\n    selectedFavoriteTab,\n    updateFavoriteTabs,\n    updateSelectedFavoriteTab,\n    updateFavorites,\n  } = favorite;\n\n  const [open, setOpen] = useState(false);\n  const [editing, setEditing] = useState(false);\n  const [value, setValue] = useState(\"\");\n  const [scrollable, setScrollable] = useState(false);\n\n  const scrollView = useRef<HTMLDivElement>(null);\n  const inputRef = useRef<HTMLInputElement>(null);\n  const spanRef = useRef<HTMLSpanElement>(null);\n\n  const [inputWidth, setInputWidth] = useState(50);\n\n  const updateScrollLayout = () => {\n    const addIconWidth = size === \"sm\" ? 28 : 36;\n    setTimeout(() => {\n      const { scrollWidth, clientWidth } = scrollView.current || {};\n\n      if (scrollWidth! > clientWidth!) {\n        setScrollable(true);\n      }\n    }, 0);\n  };\n\n  const scrollToRight = () => {\n    setTimeout(() => {\n      if (scrollView.current) {\n        const logicalEnd =\n          scrollView.current.scrollWidth - scrollView.current.clientWidth;\n        scrollView.current.scrollLeft = getScrollLeftForLogicalOffset(\n          scrollView.current,\n          logicalEnd,\n        );\n      }\n    }, 0);\n  };\n\n  const onEdit = (item: any) => {\n    setEditing(true);\n    setValue(item.name);\n    setTimeout(() => {\n      inputRef.current?.focus();\n      inputRef.current?.setSelectionRange(-1, -1);\n    }, 0);\n  };\n\n  const updateCurTab = (overLen: boolean) => {\n    updateFavoriteTabs(\n      {\n        ...selectedFavoriteTab,\n        name: overLen ? selectedFavoriteTab.name : value,\n      },\n      { update: true },\n    );\n    setEditing(false);\n    setOpen(false);\n    updateScrollLayout();\n  };\n\n  const addTab = () => {\n    const newTab = {\n      name: `WatchList_${favoriteTabs.length}`,\n      id: Date.now(),\n    };\n    updateFavoriteTabs(newTab, { add: true });\n    updateSelectedFavoriteTab(newTab);\n    updateScrollLayout();\n    scrollToRight();\n  };\n\n  const delTab = (selectedTab: any) => {\n    updateFavoriteTabs(selectedTab, { delete: true });\n\n    setTimeout(() => {\n      // remove all symbol favorite in this tab\n      const _favorites = favorites.map((item) => ({\n        ...item,\n        tabs: item.tabs?.filter((tab) => tab.id !== selectedTab.id),\n      }));\n\n      updateFavorites(_favorites);\n\n      // auto selected last tab\n      const tabs = favoriteTabs.filter((item) => item.id !== selectedTab.id);\n      const tab = tabs?.[tabs?.length - 1] || tabs?.[0];\n      updateSelectedFavoriteTab(tab);\n    }, 0);\n  };\n\n  useEffect(() => {\n    if (value) {\n      const rect = spanRef.current?.getBoundingClientRect();\n      const offset = size === \"sm\" ? 0 : 14;\n      setInputWidth(Math.max((rect?.width || 0) + offset, 50));\n    }\n  }, [value]);\n\n  useEffect(() => {\n    updateScrollLayout();\n  }, []);\n\n  return {\n    favorite,\n    open,\n    setOpen,\n    container: scrollView,\n    inputRef,\n    inputWidth,\n    spanRef,\n    editing,\n    value,\n    onValueChange: setValue,\n    onEdit,\n    updateCurTab,\n    addTab,\n    delTab,\n    scrollable,\n  };\n}\n","import {\n  useFavoritesTabScript,\n  UseFavoritesTabScriptOptions,\n} from \"./favoritesTabs.script\";\nimport { FavoritesTab } from \"./favoritesTabs.ui\";\n\nexport type FavoritesTabWidgetProps = UseFavoritesTabScriptOptions & {\n  className?: string;\n};\n\nexport const FavoritesTabWidget: React.FC<FavoritesTabWidgetProps> = (\n  props,\n) => {\n  const { className, ...rest } = props;\n  const state = useFavoritesTabScript(rest);\n  return <FavoritesTab {...state} size={props.size} className={className} />;\n};\n","export { FavoritesTab } from \"./favoritesTabs.ui\";\nexport { useFavoritesTabScript } from \"./favoritesTabs.script\";\nexport { FavoritesTabWidget } from \"./favoritesTabs.widget\";\n","import { useCallback } from \"react\";\nimport { Favorite, FavoriteTab } from \"@orderly.network/hooks\";\nimport { Box } from \"@orderly.network/ui\";\nimport { FavoriteInstance, MarketsTabName } from \"../../../type\";\nimport { FavoritesEmpty } from \"../../favoritesEmpty\";\nimport { FavoritesTabWidget } from \"../../favoritesTabs\";\nimport { useMarketsContext } from \"../../marketsProvider\";\n\nexport function useFavoritesProps() {\n  const { searchValue } = useMarketsContext();\n  const renderHeader = useCallback((favorite: FavoriteInstance) => {\n    return (\n      <Box px={3} className=\"oui-my-[6px]\">\n        <FavoritesTabWidget favorite={favorite} size=\"sm\" />\n      </Box>\n    );\n  }, []);\n\n  const dataFilter = useCallback(\n    (\n      data: any[],\n      options: { favorites: Favorite[]; selectedFavoriteTab: FavoriteTab },\n    ) => {\n      const { favorites, selectedFavoriteTab } = options;\n\n      return favorites\n        ?.filter(\n          (item) =>\n            item.tabs?.findIndex((tab) => tab.id === selectedFavoriteTab.id) !==\n            -1,\n        )\n        ?.map((fav) => {\n          const index = data?.findIndex((item) => item.symbol === fav.name);\n          if (index !== -1) {\n            return data[index];\n          }\n          return null;\n        })\n        ?.filter((item) => item);\n    },\n    [],\n  );\n\n  const getFavoritesProps = useCallback(\n    (type: MarketsTabName) => {\n      if (type === MarketsTabName.Favorites) {\n        return { renderHeader, dataFilter };\n      }\n      return {};\n    },\n    [renderHeader, dataFilter],\n  );\n\n  const renderEmptyView = useCallback(\n    (options: {\n      type: MarketsTabName;\n      onClick: () => void;\n      className?: string;\n    }) => {\n      if (options.type === MarketsTabName.Favorites && !searchValue) {\n        return (\n          <FavoritesEmpty\n            onClick={options.onClick}\n            className={options.className}\n          />\n        );\n      }\n\n      return undefined;\n    },\n    [searchValue],\n  );\n\n  return {\n    renderHeader,\n    dataFilter,\n    getFavoritesProps,\n    renderEmptyView,\n  };\n}\n","import { useId } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Checkbox, cn, InfoCircleIcon, Tips } from \"@orderly.network/ui\";\nimport { useLowVolumeMarketFilter } from \"./lowVolumeMarketFilter\";\n\nexport const ShowLowVolumeFilter = ({ className }: { className?: string }) => {\n  const id = useId();\n  const { t } = useTranslation();\n  const { showLowVolume, setShowLowVolume } = useLowVolumeMarketFilter();\n\n  const tooltipContent = t(\"markets.showLowVolume.tooltip\");\n  return (\n    <div\n      className={cn(\n        \"oui-markets-lowVolumeFilter oui-flex oui-shrink-0 oui-items-center oui-gap-x-1\",\n        className,\n      )}\n    >\n      <label\n        htmlFor={id}\n        className=\"oui-inline-flex oui-size-4 oui-shrink-0 oui-cursor-pointer oui-items-center oui-justify-center\"\n      >\n        <Checkbox\n          id={id}\n          checked={showLowVolume}\n          onCheckedChange={(checked) => setShowLowVolume(checked === true)}\n        />\n      </label>\n      <label\n        htmlFor={id}\n        className=\"oui-cursor-pointer oui-whitespace-nowrap oui-text-xs oui-text-base-contrast-54\"\n      >\n        {t(\"markets.showLowVolume\")}\n      </label>\n      <Tips\n        title={t(\"common.tips\")}\n        content={tooltipContent}\n        className=\"oui-inline-flex\"\n        trigger={\n          <InfoCircleIcon\n            opacity={1}\n            aria-label={tooltipContent}\n            className=\"oui-size-4 oui-cursor-pointer oui-text-base-contrast-54\"\n          />\n        }\n      />\n    </div>\n  );\n};\n","import { createElement, isValidElement, useMemo } from \"react\";\nimport type {\n  BuiltInMarketTab,\n  CustomMarketTab,\n  MarketTabConfig,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { GradientText } from \"@orderly.network/ui\";\nimport { FavoritesIcon } from \"../../icons\";\n\nexport function isBuiltInMarketTab(\n  tab: MarketTabConfig,\n): tab is BuiltInMarketTab {\n  return \"type\" in tab;\n}\n\nexport function isCustomMarketTab(\n  tab: MarketTabConfig,\n): tab is CustomMarketTab {\n  return \"id\" in tab;\n}\n\n/** Stable key for a tab — uses type or custom id */\nexport function tabKey(tab: MarketTabConfig, index: number): string {\n  return isBuiltInMarketTab(tab) ? tab.type : tab.id || `category_${index}`;\n}\n\n/** Convert string URL to <img>, pass ReactNode through */\nexport function resolveIcon(\n  icon: string | React.ReactNode | undefined,\n): React.ReactNode | undefined {\n  if (typeof icon === \"string\") {\n    return createElement(\"img\", {\n      src: icon,\n      alt: \"\",\n      style: { width: 16, height: 16 },\n    });\n  }\n  return icon as React.ReactNode | undefined;\n}\n\nexport function resolveSuffix(\n  suffix: string | React.ReactNode | undefined,\n): React.ReactNode | undefined {\n  if (typeof suffix === \"undefined\" || suffix === null) {\n    return undefined;\n  }\n\n  if (typeof suffix === \"string\") {\n    return (\n      <span className=\"oui-ms-1 oui-inline-flex oui-items-center oui-rounded 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)] oui-px-2\">\n        <GradientText color=\"brand\">{suffix}</GradientText>\n      </span>\n    );\n  }\n\n  return <span className=\"oui-ms-1\">{suffix}</span>;\n}\n\nexport function composeTabTitle(\n  label: React.ReactNode,\n  options?: {\n    icon?: React.ReactNode;\n    suffix?: string | React.ReactNode;\n  },\n): React.ReactNode {\n  const icon = options?.icon;\n  const suffix = resolveSuffix(options?.suffix);\n  const hasLabel =\n    typeof label !== \"undefined\" && label !== null && label !== \"\";\n\n  if (!hasLabel) {\n    if (!icon) {\n      return suffix ?? null;\n    }\n\n    return suffix ? (\n      <span className=\"oui-inline-flex oui-items-center oui-gap-x-1\">\n        {icon}\n        {suffix}\n      </span>\n    ) : (\n      icon\n    );\n  }\n\n  if (icon) {\n    return (\n      <span className=\"oui-inline-flex oui-items-center oui-gap-x-1\">\n        {icon}\n        {label}\n        {suffix}\n      </span>\n    );\n  }\n\n  return (\n    <>\n      {label}\n      {suffix}\n    </>\n  );\n}\n\nexport function resolveTabTriggerIcon(\n  tab: MarketTabConfig,\n  fallbackIcon?: React.ReactElement,\n): React.ReactElement | undefined {\n  const resolvedIcon =\n    typeof tab.icon !== \"undefined\" ? resolveIcon(tab.icon) : fallbackIcon;\n\n  return isValidElement(resolvedIcon) ? resolvedIcon : undefined;\n}\n\nexport const BUILT_IN_TITLE_MAP: Record<string, string> = {\n  community: \"markets.community\",\n  all: \"common.all\",\n  crypto: \"markets.crypto\",\n  preTge: \"markets.preTge\",\n  newListing: \"markets.newListings\",\n  recent: \"markets.recent\",\n};\n\n/**\n * Resolve tab title for TabPanel.\n * @param titleOverrides - pre-resolved i18n strings keyed by built-in type (e.g. { all: \"All\", newListing: \"New Listings\" })\n * @param rwaTitle - component-specific RWA title (RwaTab or RwaIconTab)\n */\nexport function resolveTabTitle(\n  tab: MarketTabConfig,\n  titleOverrides: Record<string, string>,\n  rwaTitle: React.ReactNode,\n): React.ReactNode {\n  if (isBuiltInMarketTab(tab) && tab.type === \"favorites\") {\n    return <FavoritesIcon />;\n  }\n\n  if (isBuiltInMarketTab(tab) && tab.type === \"rwa\") {\n    return rwaTitle;\n  }\n\n  if (isBuiltInMarketTab(tab) && titleOverrides[tab.type]) {\n    return tab.name ?? titleOverrides[tab.type];\n  }\n\n  return composeTabTitle(tab.name, {\n    icon: resolveIcon(tab.icon),\n    suffix: tab.suffix,\n  });\n}\n\n/** Pre-resolve built-in title i18n strings */\nexport function useBuiltInTitles(): Record<string, string> {\n  const { t } = useTranslation();\n  return useMemo(\n    () =>\n      Object.fromEntries(\n        Object.entries(BUILT_IN_TITLE_MAP).map(([key, i18nKey]) => [\n          key,\n          t(i18nKey as any) as string,\n        ]),\n      ),\n    [t],\n  );\n}\n\nexport type DataFilter = (data: any[]) => any[];\n\nexport function getCustomTabDataFilter(\n  tab: CustomMarketTab | undefined,\n): DataFilter | undefined {\n  if (!tab) return undefined;\n  return (data) => data.filter((item) => tab.match(item));\n}\n\n/** Build per-tab dataFilter from `match` config */\nexport function useCustomTabDataFilters(\n  tabs: MarketTabConfig[] | undefined,\n): Record<string, DataFilter> {\n  return useMemo(() => {\n    if (!tabs) return {};\n    const result: Record<string, DataFilter> = {};\n    tabs.forEach((tab, i) => {\n      if (isCustomMarketTab(tab)) {\n        result[tabKey(tab, i)] = (data) =>\n          data.filter((item) => tab.match(item));\n      }\n    });\n    return result;\n  }, [tabs]);\n}\n","import { useCallback, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, Column, Flex, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { CommunityBrokerTabs } from \"../../../components/communityBrokerTabs\";\nimport { MarketsListWidget } from \"../../../components/marketsList\";\nimport { useMarketsContext } from \"../../../components/marketsProvider\";\nimport { RwaSubcategoryTabs } from \"../../../components/rwaSubcategoryTabs\";\nimport { RwaIconTab } from \"../../../components/rwaTab\";\nimport { SearchInput } from \"../../../components/searchInput\";\nimport {\n  get24hVolOIColumn,\n  getLastAnd24hPercentageColumn,\n  getSymbolColumn,\n} from \"../../../components/shared/column\";\nimport { useFavoritesProps } from \"../../../components/shared/hooks/useFavoritesExtraProps\";\nimport { ShowLowVolumeFilter } from \"../../../components/shared/showLowVolumeFilter\";\nimport {\n  composeTabTitle,\n  isBuiltInMarketTab,\n  tabKey,\n  resolveTabTitle,\n  resolveTabTriggerIcon,\n  useCustomTabDataFilters,\n} from \"../../../components/shared/tabUtils\";\nimport { createCommunityBrokerFilter } from \"../../../hooks/useCommunityTabs\";\nimport { AllMarketsIcon, FavoritesIcon, NewListingsIcon } from \"../../../icons\";\nimport { FavoriteInstance, MarketsTabName } from \"../../../type\";\nimport { UseMarketsDataListScript } from \"./marketsDataList.script\";\n\nexport type MobileMarketsDataListProps = UseMarketsDataListScript;\n\nconst TWO_LINE_MARKET_ROW_CLASS = \"!oui-h-[54px]\";\n\ntype BuiltInTabMeta = {\n  title: React.ReactNode;\n  icon?: React.ReactElement;\n  value: string;\n  tabName?: MarketsTabName;\n};\n\nconst SearchWithLowVolumeFilter = ({ className }: { className?: string }) => (\n  <Flex\n    className={cn(\n      \"oui-mx-3 oui-min-w-0 oui-items-center oui-gap-x-2\",\n      className,\n    )}\n  >\n    <SearchInput\n      classNames={{\n        root: \"oui-min-w-0 oui-flex-1\",\n      }}\n    />\n    <ShowLowVolumeFilter />\n  </Flex>\n);\n\nexport const MobileMarketsDataList: React.FC<MobileMarketsDataListProps> = (\n  props,\n) => {\n  const { activeTab, onTabChange, tabSort, onTabSort } = props;\n  const { t } = useTranslation();\n  const { tabs } = useMarketsContext();\n  const tabDataFilters = useCustomTabDataFilters(tabs);\n\n  const getColumns = useCallback(\n    (favorite: FavoriteInstance, isFavoriteList = false) => {\n      return [\n        getSymbolColumn(favorite, isFavoriteList, {\n          stackLeverageInSecondRow: true,\n        }),\n        get24hVolOIColumn(),\n        getLastAnd24hPercentageColumn(favorite, isFavoriteList),\n      ] as Column[];\n    },\n    [t],\n  );\n\n  const { getFavoritesProps } = useFavoritesProps();\n\n  const builtInMeta = useMemo<Record<string, BuiltInTabMeta>>(\n    () => ({\n      favorites: {\n        title: <FavoritesIcon />,\n        value: \"favorites\",\n        tabName: MarketsTabName.Favorites,\n      },\n      community: {\n        title: t(\"markets.community\"),\n        value: \"community\",\n      },\n      all: {\n        title: t(\"markets.allMarkets\"),\n        icon: <AllMarketsIcon />,\n        value: \"all\",\n        tabName: MarketsTabName.All,\n      },\n      crypto: {\n        title: t(\"markets.crypto\"),\n        value: \"crypto\",\n        tabName: MarketsTabName.Crypto,\n      },\n      rwa: {\n        title: <RwaIconTab />,\n        value: \"rwa\",\n        tabName: MarketsTabName.Rwa,\n      },\n      preTge: {\n        title: t(\"markets.preTge\"),\n        value: \"preTge\",\n        tabName: MarketsTabName.PreTge,\n      },\n      newListing: {\n        title: t(\"markets.newListings\"),\n        icon: <NewListingsIcon />,\n        value: \"new\",\n        tabName: MarketsTabName.NewListing,\n      },\n    }),\n    [t],\n  );\n\n  const renderTab = (type: MarketsTabName) => {\n    const list = (\n      <MarketsListWidget\n        type={type}\n        initialSort={tabSort[type]}\n        onSort={onTabSort(type)}\n        getColumns={getColumns}\n        rowClassName={TWO_LINE_MARKET_ROW_CLASS}\n        {...getFavoritesProps(type)}\n      />\n    );\n\n    return (\n      <>\n        <SearchWithLowVolumeFilter\n          className={cn(\n            \"oui-mt-5\",\n            activeTab === MarketsTabName.Favorites ? \"oui-mb-4\" : \"oui-mb-2\",\n          )}\n        />\n        {type === MarketsTabName.Rwa ? (\n          <RwaSubcategoryTabs\n            storageKey=\"orderly_mobile_markets_datalist_rwa_sel_sub_tab\"\n            size=\"md\"\n            classNames={{\n              tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n              tabsContent: \"oui-h-full\",\n              scrollIndicator: \"oui-mx-3\",\n            }}\n            className=\"oui-mobileMarketsDataList-rwa-tabs\"\n            showScrollIndicator\n            renderPanel={(_, dataFilter) => (\n              <MarketsListWidget\n                type={type}\n                dataFilter={dataFilter}\n                initialSort={tabSort[type]}\n                onSort={onTabSort(type)}\n                getColumns={getColumns}\n                rowClassName={TWO_LINE_MARKET_ROW_CLASS}\n              />\n            )}\n          />\n        ) : (\n          list\n        )}\n      </>\n    );\n  };\n\n  const renderCommunityList = (selected: string) => {\n    return (\n      <MarketsListWidget\n        type={MarketsTabName.All}\n        initialSort={tabSort[MarketsTabName.Community]}\n        onSort={onTabSort(MarketsTabName.Community)}\n        getColumns={getColumns}\n        rowClassName={TWO_LINE_MARKET_ROW_CLASS}\n        dataFilter={createCommunityBrokerFilter(selected)}\n      />\n    );\n  };\n\n  return (\n    <Box id=\"oui-markets-list\" intensity={900} py={3} mt={2} r=\"2xl\">\n      <Tabs\n        variant=\"contained\"\n        size=\"lg\"\n        value={activeTab}\n        onValueChange={onTabChange}\n        classNames={{\n          scrollIndicator: \"oui-mx-3\",\n        }}\n        showScrollIndicator\n      >\n        {tabs?.map((tab, index) => {\n          const key = tabKey(tab, index);\n          const isBuiltIn = isBuiltInMarketTab(tab);\n\n          // Built-in tab\n          const meta = isBuiltIn ? builtInMeta[tab.type] : undefined;\n          if (isBuiltIn && meta) {\n            const title =\n              tab.type === \"favorites\"\n                ? composeTabTitle(tab.name, {\n                    icon: resolveTabTriggerIcon(tab, <FavoritesIcon />),\n                    suffix: tab.suffix,\n                  })\n                : tab.type === \"rwa\"\n                  ? resolveTabTitle(tab, {}, <RwaIconTab />)\n                  : composeTabTitle(tab.name ?? meta.title, {\n                      suffix: tab.suffix,\n                    });\n\n            return (\n              <TabPanel\n                key={key}\n                title={title}\n                icon={\n                  tab.type === \"favorites\" || tab.type === \"rwa\"\n                    ? undefined\n                    : resolveTabTriggerIcon(tab, meta.icon)\n                }\n                value={meta.value}\n              >\n                {tab.type === \"community\" ? (\n                  <>\n                    <SearchWithLowVolumeFilter className=\"oui-mb-2 oui-mt-5\" />\n                    <CommunityBrokerTabs\n                      storageKey=\"orderly_mobile_markets_datalist_community_sel_sub_tab\"\n                      size=\"md\"\n                      classNames={{\n                        tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n                        tabsContent: \"oui-h-full\",\n                        scrollIndicator: \"oui-mx-3\",\n                      }}\n                      className=\"oui-mobileMarketsDataList-community-tabs\"\n                      showScrollIndicator\n                      renderPanel={renderCommunityList}\n                    />\n                  </>\n                ) : (\n                  renderTab(meta.tabName!)\n                )}\n              </TabPanel>\n            );\n          }\n\n          // Custom category\n          return (\n            <TabPanel\n              key={key}\n              title={composeTabTitle(tab.name ?? key, {\n                icon: resolveTabTriggerIcon(tab),\n                suffix: tab.suffix,\n              })}\n              value={key}\n            >\n              <SearchWithLowVolumeFilter className=\"oui-mb-2 oui-mt-5\" />\n              <MarketsListWidget\n                type={MarketsTabName.All}\n                dataFilter={(data) => tabDataFilters[key]?.(data) ?? data}\n                initialSort={tabSort[key as MarketsTabName]}\n                onSort={onTabSort(key as MarketsTabName)}\n                getColumns={getColumns}\n                rowClassName={TWO_LINE_MARKET_ROW_CLASS}\n              />\n            </TabPanel>\n          );\n        })}\n      </Tabs>\n    </Box>\n  );\n};\n","import { useCallback } from \"react\";\nimport { useSessionStorage } from \"@orderly.network/hooks\";\nimport { SortType, MarketsTabName } from \"../../../type\";\n\nexport function useTabSort(options: { storageKey: string }) {\n  const [tabSort, setTabSort] = useSessionStorage(options.storageKey, {\n    [MarketsTabName.All]: {\n      sortKey: \"24h_amount\",\n      sortOrder: \"desc\",\n    },\n  } as Record<string, SortType>);\n\n  const onTabSort = useCallback(\n    (type: MarketsTabName | string) => (sort?: SortType) => {\n      setTabSort({ ...tabSort, [type]: sort });\n    },\n    [tabSort],\n  );\n\n  return {\n    tabSort,\n    onTabSort,\n  };\n}\n","import { useEffect, useState } from \"react\";\nimport { useMarketsContext } from \"../../../components/marketsProvider\";\nimport { useTabSort } from \"../../../components/shared/hooks/useTabSort\";\nimport { MarketsTabName } from \"../../../type\";\n\nexport type UseMarketsDataListScript = ReturnType<\n  typeof useMarketsDataListScript\n>;\n\nconst MOBILE_MARKETS_TAB_SORT_STORAGE_KEY = \"orderly_mobile_markets_tab_sort\";\n\nexport function useMarketsDataListScript() {\n  const [activeTab, setActiveTab] = useState<MarketsTabName>(\n    MarketsTabName.All,\n  );\n  const { clearSearchValue, searchValue } = useMarketsContext();\n\n  const { tabSort, onTabSort } = useTabSort({\n    storageKey: MOBILE_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n\n  useEffect(() => {\n    clearSearchValue?.();\n  }, [activeTab]);\n\n  return {\n    activeTab,\n    onTabChange: (value: string) => setActiveTab(value as MarketsTabName),\n    tabSort,\n    onTabSort,\n    searchValue,\n  };\n}\n","import { MouseEventHandler, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, Box, Tooltip, Column, Badge } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n  FavoritesIcon,\n  MoveToTopIcon,\n  OrderlyIcon,\n  UnFavoritesIcon,\n} from \"../../icons\";\nimport { FavoriteInstance } from \"../../type\";\nimport { FavoritesDropdownMenuWidget } from \"../favoritesDropdownMenu\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\n\nexport const useMarketsListFullColumns = (\n  favorite: FavoriteInstance,\n  isFavoriteList = false,\n) => {\n  const { t } = useTranslation();\n\n  const columns = useMemo(() => {\n    return [\n      {\n        title: <UnFavoritesIcon className=\"oui-mt-1\" />,\n        dataIndex: \"isFavorite\",\n        align: \"center\",\n        width: 30,\n        render: (value, record) => {\n          const onDelSymbol: MouseEventHandler = (e) => {\n            favorite.updateSymbolFavoriteState(\n              record,\n              favorite.selectedFavoriteTab,\n              true,\n            );\n            e.stopPropagation();\n          };\n\n          const button = (\n            <Flex\n              width=\"100%\"\n              height=\"100%\"\n              mr={3}\n              justify=\"center\"\n              itemAlign=\"center\"\n              onClick={isFavoriteList ? onDelSymbol : undefined}\n              data-testid=\"oui-testid-markets-table-row-favorite-icon\"\n            >\n              {value ? <FavoritesIcon /> : <UnFavoritesIcon />}\n            </Flex>\n          );\n\n          if (isFavoriteList) {\n            return button;\n          }\n\n          return (\n            <FavoritesDropdownMenuWidget row={record} favorite={favorite}>\n              {button}\n            </FavoritesDropdownMenuWidget>\n          );\n        },\n      },\n      {\n        title: t(\"markets.column.market\"),\n        dataIndex: \"symbol\",\n        width: 120,\n        onSort: true,\n        render: (value, record) => {\n          return (\n            <Flex gapX={1} itemAlign=\"center\">\n              <SymbolDisplay formatString=\"base\" showIcon record={record}>\n                {value}\n              </SymbolDisplay>\n              {typeof record.leverage === \"number\" && (\n                <Badge size=\"xs\" color=\"primary\">\n                  {record.leverage}x\n                </Badge>\n              )}\n            </Flex>\n          );\n        },\n      },\n      {\n        title: t(\"markets.column.last\"),\n        dataIndex: \"24h_close\",\n        width: 100,\n        align: \"right\",\n        onSort: true,\n        render: (value, record) => {\n          return (\n            <Text.numeral dp={record.quote_dp || 2} currency=\"$\">\n              {value}\n            </Text.numeral>\n          );\n        },\n      },\n      {\n        title: t(\"markets.column.24hChange\"),\n        dataIndex: \"change\",\n        width: 100,\n        align: \"right\",\n        onSort: true,\n        render: (value) => {\n          return (\n            <Text.numeral\n              rule=\"percentages\"\n              coloring\n              rm={Decimal.ROUND_DOWN}\n              showIdentifier\n            >\n              {value}\n            </Text.numeral>\n          );\n        },\n      },\n      {\n        title: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.column.24hVolume\")}\n          </Flex>\n        ),\n        dataIndex: \"24h_amount\",\n        width: 100,\n        align: \"right\",\n        onSort: true,\n        render: (value) => {\n          return (\n            <Text.numeral currency=\"$\" dp={0} rm={Decimal.ROUND_DOWN}>\n              {value}\n            </Text.numeral>\n          );\n        },\n      },\n      {\n        title: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.openInterest\")}\n          </Flex>\n        ),\n        dataIndex: \"openInterest\",\n        width: 100,\n        align: \"right\",\n        onSort: true,\n        render: (value) => {\n          return (\n            <Text.numeral currency=\"$\" dp={0} rm={Decimal.ROUND_DOWN}>\n              {value}\n            </Text.numeral>\n          );\n        },\n      },\n      {\n        title: t(\"markets.dataList.column.8hFunding\"),\n        dataIndex: \"8h_funding\",\n        width: 100,\n        align: \"right\",\n        onSort: true,\n        render: (value) => {\n          if (value === null) {\n            return \"--\";\n          }\n          return (\n            <Text.numeral\n              rule=\"percentages\"\n              coloring\n              dp={4}\n              rm={Decimal.ROUND_DOWN}\n              showIdentifier\n            >\n              {value}\n            </Text.numeral>\n          );\n        },\n      },\n      {\n        dataIndex: \"action\",\n        type: \"action\",\n        width: 40,\n        render: (value, record) => {\n          if (isFavoriteList) {\n            return (\n              <Flex justify=\"end\" mr={4}>\n                <Tooltip\n                  content={t(\"markets.dataList.column.moveTop\")}\n                  align=\"center\"\n                  delayDuration={0}\n                >\n                  <Box\n                    className=\"oui-hidden oui-cursor-pointer group-hover:oui-block\"\n                    onClick={(e) => {\n                      e.stopPropagation();\n                      favorite.pinToTop(record);\n                    }}\n                    data-testid=\"oui-markets-favorites-pinned-icon\"\n                  >\n                    <MoveToTopIcon className=\"oui-text-base-contrast-20 hover:oui-text-base-contrast\" />\n                  </Box>\n                </Tooltip>\n              </Flex>\n            );\n          }\n          return null;\n        },\n      },\n    ] as Column[];\n  }, [favorite, isFavoriteList, t]);\n\n  return columns;\n};\n","import { FC, ReactNode } from \"react\";\nimport { Trans } from \"@orderly.network/i18n\";\nimport { cn, Flex, DataTable } from \"@orderly.network/ui\";\nimport { UnFavoritesIcon } from \"../../icons\";\nimport { FavoritesTabWidget } from \"../favoritesTabs\";\nimport { useMarketsListFullColumns } from \"../marketsListFull/column\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { LowVolumeEmptyView } from \"../shared/lowVolumeEmptyView\";\nimport { UseFavoritesListFullReturn } from \"./favoritesListFull.script\";\n\nexport type FavoritesListFullProps = UseFavoritesListFullReturn & {\n  emptyView?: ReactNode;\n};\n\nexport const FavoritesListFull: FC<FavoritesListFullProps> = (props) => {\n  const {\n    dataSource,\n    isHiddenByLowVolumeFilter,\n    favorite,\n    onSort,\n    loading,\n    pagination,\n  } = props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n\n  const columns = useMarketsListFullColumns(favorite, true);\n\n  const emptyView = props.emptyView || (\n    <Flex className=\"oui-text-xs oui-text-base-contrast-36\">\n      {/* @ts-ignore */}\n      <Trans\n        i18nKey=\"markets.dataList.favorites.empty\"\n        components={[\n          <UnFavoritesIcon key=\"0\" className=\"oui-text-base-contrast-36\" />,\n        ]}\n      />\n    </Flex>\n  );\n\n  return (\n    <div>\n      <FavoritesTabWidget favorite={favorite} className=\"oui-my-3\" />\n\n      <DataTable\n        bordered\n        // minHeight={187.5}\n        columns={columns}\n        dataSource={dataSource}\n        emptyView={\n          isHiddenByLowVolumeFilter ? <LowVolumeEmptyView /> : emptyView\n        }\n        classNames={{\n          empty: isHiddenByLowVolumeFilter\n            ? \"oui-items-start oui-pt-16\"\n            : \"oui-items-start oui-mt-6\",\n        }}\n        loading={loading}\n        onRow={(record, index) => {\n          return {\n            className: cn(\"oui-h-[55px] oui-cursor-pointer\"),\n            onClick: () => {\n              onSymbolChange?.(record);\n              favorite.addToHistory(record);\n            },\n          };\n        }}\n        generatedRowKey={(record) => record.symbol}\n        rowSelection={{ [symbol!]: true }}\n        onSort={onSort}\n        pagination={pagination}\n        manualSorting\n      />\n    </div>\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { MarketsType, useMarkets } from \"@orderly.network/hooks\";\nimport { usePagination } from \"@orderly.network/ui\";\nimport { searchBySymbol, useSort } from \"../../utils\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useLowVolumeMarketFilter } from \"../shared/lowVolumeMarketFilter\";\nimport { filterMarketsByLowVolume } from \"../shared/marketVolumeFilter\";\n\nexport type UseFavoritesListFullReturn = ReturnType<\n  typeof useFavoritesListFullScript\n>;\n\nexport const useFavoritesListFullScript = () => {\n  const { pageSize, setPage, pagination } = usePagination({\n    pageSize: 10,\n  });\n  const [data, favorite] = useMarkets(MarketsType.FAVORITES);\n  const [loading, setLoading] = useState(true);\n\n  const { favorites, selectedFavoriteTab } = favorite;\n\n  const { searchValue } = useMarketsContext();\n  const { showLowVolume } = useLowVolumeMarketFilter();\n\n  const { onSort, getSortedList } = useSort();\n\n  const filterData = useMemo(() => {\n    const filterList = favorites\n      ?.filter(\n        (item) =>\n          item.tabs?.findIndex((tab) => tab.id === selectedFavoriteTab.id) !==\n          -1,\n      )\n      ?.map((fav) => {\n        const index = data?.findIndex((item) => item.symbol === fav.name);\n        if (index !== -1) {\n          return data[index];\n        }\n        return null;\n      })\n      ?.filter((item) => !!item);\n\n    return searchBySymbol(filterList, searchValue, \"base-type\");\n  }, [data, selectedFavoriteTab, favorites, searchValue]);\n\n  const { dataSource, isHiddenByLowVolumeFilter } = useMemo(() => {\n    const { visibleMarkets, allHidden } = filterMarketsByLowVolume(\n      filterData,\n      showLowVolume,\n    );\n\n    return {\n      dataSource: getSortedList(visibleMarkets),\n      isHiddenByLowVolumeFilter: allHidden,\n    };\n  }, [filterData, getSortedList, showLowVolume]);\n\n  useEffect(() => {\n    setLoading(false);\n  }, [favorites]);\n\n  useEffect(() => {\n    setPage(1);\n  }, [searchValue, showLowVolume]);\n\n  return {\n    loading,\n    dataSource,\n    isHiddenByLowVolumeFilter,\n    favorite,\n    onSort,\n    pagination,\n  };\n};\n","import { ReactNode } from \"react\";\nimport { useFavoritesListFullScript } from \"./favoritesListFull.script\";\nimport { FavoritesListFull } from \"./favoritesListFull.ui\";\n\nexport type FavoritesListFullWidgetProps = {\n  emptyView?: ReactNode;\n};\n\nexport const FavoritesListFullWidget: React.FC<FavoritesListFullWidgetProps> = (\n  props,\n) => {\n  const state = useFavoritesListFullScript();\n  return <FavoritesListFull {...state} emptyView={props.emptyView} />;\n};\n","export { FavoritesListFull } from \"./favoritesListFull.ui\";\nexport { useFavoritesListFullScript } from \"./favoritesListFull.script\";\nexport { FavoritesListFullWidget } from \"./favoritesListFull.widget\";\n","import { FC } from \"react\";\nimport { cn, DataTable } from \"@orderly.network/ui\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { LowVolumeEmptyView } from \"../shared/lowVolumeEmptyView\";\nimport { useMarketsListFullColumns } from \"./column\";\nimport {\n  type MarketsListFullType,\n  type UseMarketsListFullReturn,\n} from \"./marketsListFull.script\";\n\nexport type MarketsListFullProps = UseMarketsListFullReturn & {\n  type?: MarketsListFullType;\n};\n\nexport const MarketsListFull: FC<MarketsListFullProps> = (props) => {\n  const {\n    loading,\n    dataSource,\n    isHiddenByLowVolumeFilter,\n    favorite,\n    onSort,\n    initialSort,\n    type,\n    pagination,\n  } = props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n\n  const columns = useMarketsListFullColumns(favorite, false);\n\n  return (\n    <DataTable\n      bordered\n      columns={columns}\n      loading={loading}\n      dataSource={dataSource}\n      onRow={(record, index) => {\n        return {\n          className: cn(\"oui-h-[55px] oui-cursor-pointer\"),\n          onClick: () => {\n            onSymbolChange?.(record);\n            favorite.addToHistory(record);\n          },\n          \"data-testid\": `oui-testid-markets-${\n            type === \"new\"\n              ? \"newListing\"\n              : type === \"rwa\"\n                ? \"rwa\"\n                : type === \"preTge\"\n                  ? \"preTge\"\n                  : \"all\"\n          }-tr-${record.symbol}`,\n        };\n      }}\n      generatedRowKey={(record) => record.symbol}\n      rowSelection={{ [symbol!]: true }}\n      onSort={onSort}\n      initialSort={initialSort}\n      pagination={pagination}\n      classNames={{\n        header: \"oui-h-12\",\n        empty: isHiddenByLowVolumeFilter\n          ? \"oui-items-start oui-pt-16\"\n          : undefined,\n      }}\n      manualSorting\n      emptyView={isHiddenByLowVolumeFilter ? <LowVolumeEmptyView /> : undefined}\n    />\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { MarketsType, useMarkets } from \"@orderly.network/hooks\";\nimport { TableSort, usePagination } from \"@orderly.network/ui\";\nimport { searchBySymbol, useSort } from \"../../utils\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useLowVolumeMarketFilter } from \"../shared/lowVolumeMarketFilter\";\nimport { filterMarketsByLowVolume } from \"../shared/marketVolumeFilter\";\nimport { MarketsListFullWidgetProps } from \"./marketsListFull.widget\";\n\nexport type UseMarketsListFullScriptOptions = MarketsListFullWidgetProps;\n\nexport type UseMarketsListFullReturn = ReturnType<\n  typeof useMarketsListFullScript\n>;\n\nconst MarketsTypeMap = {\n  all: MarketsType.ALL,\n  crypto: MarketsType.CRYPTO,\n  new: MarketsType.NEW_LISTING,\n  rwa: MarketsType.RWA,\n  preTge: MarketsType.PRE_TGE,\n};\n\nexport type MarketsListFullType = keyof typeof MarketsTypeMap;\n\nexport const useMarketsListFullScript = (\n  options: UseMarketsListFullScriptOptions,\n) => {\n  const { type = \"all\", dataFilter } = options;\n  const [loading, setLoading] = useState(true);\n  const { setPage, pagination } = usePagination({\n    pageSize: 100,\n  });\n\n  const [data, favorite] = useMarkets(MarketsTypeMap[type]);\n\n  const { searchValue } = useMarketsContext();\n  const { showLowVolume } = useLowVolumeMarketFilter();\n\n  const { onSort, getSortedList, sort } = useSort(options.initialSort);\n\n  const { dataSource, isHiddenByLowVolumeFilter } = useMemo(() => {\n    const filtered = typeof dataFilter === \"function\" ? dataFilter(data) : data;\n    const searchList = searchBySymbol(filtered, searchValue, \"base-type\");\n    const { visibleMarkets, allHidden } = filterMarketsByLowVolume(\n      searchList,\n      showLowVolume,\n    );\n\n    return {\n      dataSource: getSortedList(visibleMarkets),\n      isHiddenByLowVolumeFilter: allHidden,\n    };\n  }, [data, dataFilter, getSortedList, searchValue, showLowVolume]);\n\n  useEffect(() => {\n    setLoading(false);\n  }, [data]);\n\n  useEffect(() => {\n    setPage(1);\n  }, [searchValue, showLowVolume]);\n\n  useEffect(() => {\n    // Only all markets store sort\n    if (type === \"all\") {\n      favorite.updateTabsSortState(\"all\", sort?.sortKey!, sort?.sortOrder!);\n    }\n  }, [sort, type]);\n\n  const initialSort = useMemo(() => {\n    const sortStore = type === \"all\" ? favorite.tabSort?.all : undefined;\n\n    return {\n      sortKey: sortStore?.sortKey || options?.initialSort?.sortKey,\n      sort: sortStore?.sortOrder || options?.initialSort?.sortOrder,\n    } as TableSort;\n  }, [favorite.tabSort, options.initialSort, type]);\n\n  return {\n    loading,\n    dataSource,\n    isHiddenByLowVolumeFilter,\n    favorite,\n    onSort,\n    pagination,\n    initialSort,\n  };\n};\n","import { SortType } from \"../../type\";\nimport {\n  MarketsListFullType,\n  useMarketsListFullScript,\n} from \"./marketsListFull.script\";\nimport { MarketsListFull } from \"./marketsListFull.ui\";\n\nexport type MarketsListFullWidgetProps = {\n  type?: MarketsListFullType;\n  initialSort?: SortType;\n  dataFilter?: (data: any[]) => any[];\n};\n\nexport const MarketsListFullWidget: React.FC<MarketsListFullWidgetProps> = (\n  props,\n) => {\n  const state = useMarketsListFullScript(props);\n\n  return <MarketsListFull {...state} type={props.type} />;\n};\n","export { MarketsListFull } from \"./marketsListFull.ui\";\nexport { useMarketsListFullScript } from \"./marketsListFull.script\";\nexport { MarketsListFullWidget } from \"./marketsListFull.widget\";\n","import React, { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Flex, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { CommunityBrokerTabs } from \"../../../components/communityBrokerTabs\";\nimport { FavoritesEmpty } from \"../../../components/favoritesEmpty\";\nimport type { MarketsListFullType } from \"../../../components/marketsListFull/marketsListFull.script\";\nimport { useMarketsContext } from \"../../../components/marketsProvider\";\nimport { RwaSubcategoryTabs } from \"../../../components/rwaSubcategoryTabs\";\nimport { RwaIconTab } from \"../../../components/rwaTab\";\nimport { ShowLowVolumeFilter } from \"../../../components/shared/showLowVolumeFilter\";\nimport {\n  composeTabTitle,\n  isBuiltInMarketTab,\n  tabKey,\n  resolveTabTitle,\n  resolveTabTriggerIcon,\n  useCustomTabDataFilters,\n} from \"../../../components/shared/tabUtils\";\nimport { createCommunityBrokerFilter } from \"../../../hooks/useCommunityTabs\";\nimport { AllMarketsIcon, FavoritesIcon, NewListingsIcon } from \"../../../icons\";\nimport { MarketsTabName, SortType } from \"../../../type\";\nimport { UseMarketsDataListScript } from \"./marketsDataList.script\";\n\nconst LazySearchInput = React.lazy(() =>\n  import(\"../../../components/searchInput\").then((mod) => {\n    return { default: mod.SearchInput };\n  }),\n);\n\nconst LazyFavoritesListFullWidget = React.lazy(() =>\n  import(\"../../../components/favoritesListFull\").then((mod) => {\n    return { default: mod.FavoritesListFullWidget };\n  }),\n);\n\nconst LazyMarketsListFullWidget = React.lazy(() =>\n  import(\"../../../components/marketsListFull\").then((mod) => {\n    return { default: mod.MarketsListFullWidget };\n  }),\n);\n\ntype BuiltInTabMeta = {\n  title: React.ReactNode;\n  icon?: React.ReactElement;\n  value: string;\n  testid?: string;\n  /** list widget type — undefined means special handling (favorites) */\n  listType?: MarketsListFullType;\n  initialSort: SortType;\n};\n\nconst DEFAULT_SORT: SortType = { sortKey: \"24h_amount\", sortOrder: \"desc\" };\n\nexport type MarketsDataListProps = UseMarketsDataListScript;\n\nexport const MarketsDataList: React.FC<MarketsDataListProps> = (props) => {\n  const { searchValue, activeTab, onTabChange } = props;\n  const { t } = useTranslation();\n  const { tabs } = useMarketsContext();\n  const tabDataFilters = useCustomTabDataFilters(tabs);\n\n  const builtInMeta = useMemo<Record<string, BuiltInTabMeta>>(\n    () => ({\n      favorites: {\n        title: <FavoritesIcon />,\n        value: \"favorites\",\n        testid: \"oui-testid-markets-favorites-tab\",\n        initialSort: DEFAULT_SORT,\n      },\n      community: {\n        title: t(\"markets.community\"),\n        value: \"community\",\n        testid: \"oui-testid-markets-community-tab\",\n        initialSort: DEFAULT_SORT,\n      },\n      all: {\n        title: t(\"markets.allMarkets\"),\n        icon: <AllMarketsIcon />,\n        value: \"all\",\n        testid: \"oui-testid-markets-all-tab\",\n        listType: \"all\",\n        initialSort: DEFAULT_SORT,\n      },\n      crypto: {\n        title: t(\"markets.crypto\"),\n        value: \"crypto\",\n        testid: \"oui-testid-markets-crypto-tab\",\n        listType: \"crypto\",\n        initialSort: DEFAULT_SORT,\n      },\n      rwa: {\n        title: <RwaIconTab />,\n        value: \"rwa\",\n        testid: \"oui-testid-markets-rwa-tab\",\n        listType: \"rwa\",\n        initialSort: DEFAULT_SORT,\n      },\n      preTge: {\n        title: t(\"markets.preTge\"),\n        value: \"preTge\",\n        testid: \"oui-testid-markets-preTge-tab\",\n        listType: \"preTge\",\n        initialSort: DEFAULT_SORT,\n      },\n      newListing: {\n        title: t(\"markets.newListings\"),\n        icon: <NewListingsIcon />,\n        value: \"new\",\n        testid: \"oui-testid-markets-newListing-tab\",\n        listType: \"new\",\n        initialSort: { sortKey: \"created_time\", sortOrder: \"desc\" },\n      },\n    }),\n    [t],\n  );\n\n  return (\n    <Box\n      id=\"oui-markets-list\"\n      intensity={900}\n      p={6}\n      r=\"2xl\"\n      className=\"oui-mt-6\"\n    >\n      <Tabs\n        variant=\"contained\"\n        size=\"xl\"\n        value={activeTab}\n        onValueChange={onTabChange}\n        trailing={\n          <Flex className=\"oui-my-1 oui-min-w-0 oui-items-center oui-gap-x-3\">\n            <React.Suspense fallback={null}>\n              <LazySearchInput\n                classNames={{\n                  root: \"oui-min-w-0 oui-w-[240px]\",\n                }}\n              />\n            </React.Suspense>\n            <ShowLowVolumeFilter />\n          </Flex>\n        }\n        classNames={{\n          tabsList: \"oui-tabs-markets-list\",\n          tabsContent: \"oui-tabs-markets-content\",\n          scrollIndicator: \"oui-me-3\",\n        }}\n        className=\"oui-markets-list-tabs\"\n        showScrollIndicator\n      >\n        {tabs?.map((tab, index) => {\n          const key = tabKey(tab, index);\n          const isBuiltIn = isBuiltInMarketTab(tab);\n\n          // Built-in tab\n          const meta = isBuiltIn ? builtInMeta[tab.type] : undefined;\n          if (isBuiltIn && meta) {\n            const title =\n              tab.type === \"favorites\"\n                ? composeTabTitle(tab.name, {\n                    icon: resolveTabTriggerIcon(tab, <FavoritesIcon />),\n                    suffix: tab.suffix,\n                  })\n                : tab.type === \"rwa\"\n                  ? resolveTabTitle(tab, {}, <RwaIconTab />)\n                  : composeTabTitle(tab.name ?? meta.title, {\n                      suffix: tab.suffix,\n                    });\n\n            return (\n              <TabPanel\n                key={key}\n                classNames={{\n                  trigger: `oui-tabs-${meta.value}-trigger`,\n                  content: `oui-tabs-${meta.value}-content`,\n                }}\n                title={title}\n                icon={\n                  tab.type === \"favorites\" || tab.type === \"rwa\"\n                    ? undefined\n                    : resolveTabTriggerIcon(tab, meta.icon)\n                }\n                value={meta.value}\n                testid={meta.testid}\n              >\n                <React.Suspense fallback={null}>\n                  {tab.type === \"favorites\" ? (\n                    <LazyFavoritesListFullWidget\n                      emptyView={\n                        !searchValue && (\n                          <FavoritesEmpty\n                            onClick={() => onTabChange(MarketsTabName.All)}\n                          />\n                        )\n                      }\n                    />\n                  ) : tab.type === \"community\" ? (\n                    <CommunityBrokerTabs\n                      storageKey=\"orderly_markets_datalist_community_sel_sub_tab\"\n                      size=\"md\"\n                      classNames={{\n                        tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n                        tabsContent: \"oui-h-full\",\n                      }}\n                      className=\"oui-marketsDataList-community-tabs\"\n                      showScrollIndicator\n                      renderPanel={(selected) => (\n                        <React.Suspense fallback={null}>\n                          <LazyMarketsListFullWidget\n                            type=\"all\"\n                            initialSort={meta.initialSort}\n                            dataFilter={createCommunityBrokerFilter(selected)}\n                          />\n                        </React.Suspense>\n                      )}\n                    />\n                  ) : tab.type === \"rwa\" ? (\n                    <RwaSubcategoryTabs\n                      storageKey=\"orderly_markets_datalist_rwa_sel_sub_tab\"\n                      size=\"md\"\n                      classNames={{\n                        tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n                        tabsContent: \"oui-h-full\",\n                      }}\n                      className=\"oui-marketsDataList-rwa-tabs\"\n                      showScrollIndicator\n                      renderPanel={(_, dataFilter) => (\n                        <React.Suspense fallback={null}>\n                          <LazyMarketsListFullWidget\n                            type=\"rwa\"\n                            initialSort={meta.initialSort}\n                            dataFilter={dataFilter}\n                          />\n                        </React.Suspense>\n                      )}\n                    />\n                  ) : (\n                    <LazyMarketsListFullWidget\n                      type={meta.listType!}\n                      initialSort={meta.initialSort}\n                    />\n                  )}\n                </React.Suspense>\n              </TabPanel>\n            );\n          }\n\n          // Custom category\n          return (\n            <TabPanel\n              key={key}\n              classNames={{\n                trigger: `oui-tabs-${key}-trigger`,\n                content: `oui-tabs-${key}-content`,\n              }}\n              title={composeTabTitle(tab.name ?? key, {\n                icon: resolveTabTriggerIcon(tab),\n                suffix: tab.suffix,\n              })}\n              value={key}\n            >\n              <React.Suspense fallback={null}>\n                <LazyMarketsListFullWidget\n                  type=\"all\"\n                  initialSort={DEFAULT_SORT}\n                  dataFilter={tabDataFilters[key]}\n                />\n              </React.Suspense>\n            </TabPanel>\n          );\n        })}\n      </Tabs>\n    </Box>\n  );\n};\n","import React from \"react\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { MobileMarketsDataList } from \"./marketsDataList.mobile.ui\";\nimport { useMarketsDataListScript } from \"./marketsDataList.script\";\nimport { MarketsDataList } from \"./marketsDataList.ui\";\n\nexport const MarketsDataListWidget: React.FC = () => {\n  const { isMobile } = useScreen();\n  const state = useMarketsDataListScript();\n  return isMobile ? (\n    <MobileMarketsDataList {...state} />\n  ) : (\n    <MarketsDataList {...state} />\n  );\n};\n","export { MarketsDataListWidget } from \"./marketsDataList.widget\";\nexport { useMarketsDataListScript } from \"./marketsDataList.script\";\nexport { MarketsDataList } from \"./marketsDataList.ui\";\n","import React from \"react\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { createCommunityBrokerFilter } from \"../../hooks/useCommunityTabs\";\nimport { MarketsTabName } from \"../../type\";\nimport { CommunityBrokerTabs } from \"../communityBrokerTabs\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { RwaSubcategoryTabs } from \"../rwaSubcategoryTabs\";\nimport { RwaTab } from \"../rwaTab\";\nimport { useFavoritesProps } from \"../shared/hooks/useFavoritesExtraProps\";\nimport { ShowLowVolumeFilter } from \"../shared/showLowVolumeFilter\";\nimport {\n  isBuiltInMarketTab,\n  tabKey,\n  resolveTabTitle,\n  useBuiltInTitles,\n  useCustomTabDataFilters,\n} from \"../shared/tabUtils\";\nimport type { ExpandMarketsScriptReturn } from \"./expandMarkets.script\";\n\nconst LazySearchInput = React.lazy(() =>\n  import(\"../searchInput\").then((mod) => {\n    return { default: mod.SearchInput };\n  }),\n);\n\nconst LazyMarketsListWidget = React.lazy(() =>\n  import(\"../marketsList\").then((mod) => {\n    return { default: mod.MarketsListWidget };\n  }),\n);\n\nexport type ExpandMarketsProps = ExpandMarketsScriptReturn;\n\n/** Root classes for MarketsList DataTable so the scroll area can flex inside tab panels. */\nconst expandListTableClassNames = {\n  root: cn(\n    \"oui-expandMarkets-list\",\n    /** min-w-0: flex/grid descendants may shrink so table-fixed + w-full respect parent width. */\n    \"oui-flex oui-min-h-0 oui-w-full oui-min-w-0 oui-max-w-full oui-flex-1 oui-flex-col\",\n  ),\n  scroll: cn(\"oui-min-h-0 oui-w-full oui-min-w-0 oui-max-w-full oui-flex-1\"),\n} as const;\n\n/**\n * Wraps lazy list content so Suspense participates in height (flex item), not only intrinsic height.\n * TabsContent stays a simple flex-1 min-h-0 slot; flex column lives here to avoid Radix/layout conflicts.\n */\nconst ExpandMarketsListPanel: React.FC<{ children: React.ReactNode }> = ({\n  children,\n}) => (\n  <div className=\"oui-flex oui-size-full oui-min-h-0 oui-min-w-0 oui-flex-col\">\n    <div className=\"oui-flex oui-min-h-0 oui-w-full oui-min-w-0 oui-flex-1 oui-flex-col oui-overflow-hidden\">\n      {children}\n    </div>\n  </div>\n);\n\nexport const ExpandMarkets: React.FC<ExpandMarketsProps> = (props) => {\n  const { activeTab, onTabChange, tabSort, onTabSort } = props;\n\n  const { getFavoritesProps, renderEmptyView } = useFavoritesProps();\n  const builtInTitles = useBuiltInTitles();\n  const { tabs } = useMarketsContext();\n  const tabDataFilters = useCustomTabDataFilters(tabs);\n\n  const renderBuiltInContent = (type: string) => {\n    const tabType = type as MarketsTabName;\n\n    if (tabType === MarketsTabName.Rwa) {\n      return (\n        <RwaSubcategoryTabs\n          storageKey=\"orderly_expand_markets_rwa_sel_sub_tab\"\n          classNames={{\n            tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n            tabsListContainer: \"oui-shrink-0\",\n            tabsContent:\n              \"oui-min-h-0 oui-min-w-0 oui-w-full oui-flex-1 oui-overflow-hidden\",\n          }}\n          className={cn(\n            \"oui-expandMarkets-rwa-tabs\",\n            \"oui-flex oui-size-full oui-min-h-0 oui-min-w-0 oui-flex-col\",\n          )}\n          showScrollIndicator\n          renderPanel={(_, dataFilter) => (\n            <ExpandMarketsListPanel>\n              <React.Suspense fallback={null}>\n                <LazyMarketsListWidget\n                  type={tabType}\n                  dataFilter={dataFilter}\n                  initialSort={tabSort[type]}\n                  onSort={onTabSort(tabType)}\n                  tableClassNames={{\n                    root: expandListTableClassNames.root,\n                    scroll: cn(\n                      expandListTableClassNames.scroll,\n                      \"oui-px-1\",\n                      \"oui-pb-2\",\n                    ),\n                  }}\n                />\n              </React.Suspense>\n            </ExpandMarketsListPanel>\n          )}\n        />\n      );\n    }\n\n    return (\n      <ExpandMarketsListPanel>\n        <React.Suspense fallback={null}>\n          <LazyMarketsListWidget\n            type={tabType}\n            initialSort={tabSort[type]}\n            onSort={onTabSort(tabType)}\n            tableClassNames={{\n              root: expandListTableClassNames.root,\n              scroll: cn(\n                expandListTableClassNames.scroll,\n                \"oui-px-1\",\n                tabType === MarketsTabName.Favorites ? \"oui-pb-9\" : \"oui-pb-2\",\n              ),\n            }}\n            {...getFavoritesProps(tabType)}\n            emptyView={renderEmptyView({\n              type: tabType,\n              onClick: () => {\n                onTabChange(MarketsTabName.All);\n              },\n            })}\n          />\n        </React.Suspense>\n      </ExpandMarketsListPanel>\n    );\n  };\n\n  const renderCommunityContent = () => {\n    return (\n      <CommunityBrokerTabs\n        storageKey=\"orderly_expand_markets_community_sel_sub_tab\"\n        classNames={{\n          tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n          tabsListContainer: \"oui-shrink-0\",\n          tabsContent:\n            \"oui-min-h-0 oui-min-w-0 oui-w-full oui-flex-1 oui-overflow-hidden\",\n        }}\n        className={cn(\n          \"oui-expandMarkets-community-tabs\",\n          \"oui-flex oui-size-full oui-min-h-0 oui-min-w-0 oui-flex-col\",\n        )}\n        showScrollIndicator\n        renderPanel={(selected) => (\n          <ExpandMarketsListPanel>\n            <React.Suspense fallback={null}>\n              <LazyMarketsListWidget\n                type={MarketsTabName.All}\n                initialSort={tabSort[MarketsTabName.Community]}\n                onSort={onTabSort(MarketsTabName.Community)}\n                tableClassNames={{\n                  root: expandListTableClassNames.root,\n                  scroll: cn(\n                    expandListTableClassNames.scroll,\n                    \"oui-px-1\",\n                    \"oui-pb-2\",\n                  ),\n                }}\n                dataFilter={createCommunityBrokerFilter(selected)}\n              />\n            </React.Suspense>\n          </ExpandMarketsListPanel>\n        )}\n      />\n    );\n  };\n\n  const renderCustomContent = (key: string) => {\n    return (\n      <ExpandMarketsListPanel>\n        <React.Suspense fallback={null}>\n          <LazyMarketsListWidget\n            type={MarketsTabName.All}\n            dataFilter={(data) => tabDataFilters[key]?.(data) ?? data}\n            initialSort={tabSort[key]}\n            onSort={onTabSort(key as MarketsTabName)}\n            tableClassNames={{\n              root: expandListTableClassNames.root,\n              scroll: cn(\n                expandListTableClassNames.scroll,\n                \"oui-px-1\",\n                \"oui-pb-2\",\n              ),\n            }}\n          />\n        </React.Suspense>\n      </ExpandMarketsListPanel>\n    );\n  };\n\n  return (\n    <Box\n      className={cn(\n        \"oui-markets-expandMarkets\",\n        /** Search row + tabs/list: second row minmax(0,1fr) passes a bounded height into Tabs. */\n        \"oui-grid oui-size-full oui-min-h-0 oui-min-w-0 oui-grid-rows-[auto_minmax(0,1fr)] oui-overflow-hidden oui-font-semibold\",\n      )}\n      height=\"100%\"\n    >\n      <Box\n        className=\"oui-expandMarkets-header oui-flex oui-min-w-0 oui-items-center oui-gap-x-3 oui-pt-px\"\n        px={3}\n        pb={2}\n      >\n        <React.Suspense fallback={null}>\n          <LazySearchInput\n            classNames={{\n              root: \"oui-expandMarkets-search-input oui-min-w-0 oui-flex-1\",\n            }}\n          />\n        </React.Suspense>\n        <ShowLowVolumeFilter />\n      </Box>\n      <Tabs\n        variant=\"contained\"\n        size=\"md\"\n        value={activeTab}\n        onValueChange={onTabChange}\n        classNames={{\n          /** Keep tab row from shrinking when Tabs root is a column flex container. */\n          tabsListContainer: \"oui-shrink-0\",\n          tabsList: cn(\"oui-my-[6px]\"),\n          /** Occupy remaining height under triggers; inner ExpandMarketsListPanel supplies flex column. */\n          tabsContent:\n            \"oui-min-h-0 oui-min-w-0 oui-w-full oui-flex-1 oui-overflow-hidden\",\n          scrollIndicator: \"oui-mx-3\",\n        }}\n        className={cn(\n          \"oui-expandMarkets-tabs\",\n          \"oui-flex oui-size-full oui-min-h-0 oui-min-w-0 oui-flex-col\",\n        )}\n        showScrollIndicator\n      >\n        {tabs?.map((tab, index) => {\n          const key = tabKey(tab, index);\n          const isBuiltIn = isBuiltInMarketTab(tab);\n          const isCommunity =\n            isBuiltIn && tab.type === MarketsTabName.Community;\n\n          return (\n            <TabPanel\n              key={key}\n              classNames={{\n                trigger: `oui-tabs-${key}-trigger`,\n                content: `oui-tabs-${key}-content`,\n              }}\n              title={resolveTabTitle(tab, builtInTitles, <RwaTab />)}\n              value={key}\n            >\n              {isCommunity\n                ? renderCommunityContent()\n                : isBuiltIn\n                  ? renderBuiltInContent(tab.type)\n                  : renderCustomContent(key)}\n            </TabPanel>\n          );\n        })}\n      </Tabs>\n    </Box>\n  );\n};\n","export const SIDE_MARKETS_TAB_SORT_STORAGE_KEY =\n  \"orderly_side_markets_tab_sort\";\n\nexport const SIDE_MARKETS_SEL_TAB_KEY = \"orderly_side_markets_sel_tab_key\";\n","import { useCallback, useEffect, useState } from \"react\";\nimport { SIDE_MARKETS_TAB_SORT_STORAGE_KEY } from \"../../constant\";\nimport { MarketsTabName } from \"../../type\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useTabSort } from \"../shared/hooks/useTabSort\";\n\nexport type ExpandMarketsScriptOptions = {\n  activeTab?: MarketsTabName;\n  onTabChange?: (tab: MarketsTabName) => void;\n};\n\nexport type ExpandMarketsScriptReturn = ReturnType<\n  typeof useExpandMarketsScript\n>;\n\nexport function useExpandMarketsScript(options: ExpandMarketsScriptOptions) {\n  const [activeTab, setActiveTab] = useState<MarketsTabName>(\n    options.activeTab!,\n  );\n\n  const { tabSort, onTabSort } = useTabSort({\n    storageKey: SIDE_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n\n  const { clearSearchValue } = useMarketsContext();\n\n  const onTabChange = useCallback(\n    (value: string) => {\n      if (typeof options?.onTabChange === \"function\") {\n        options.onTabChange(value as MarketsTabName);\n      } else {\n        setActiveTab(value as MarketsTabName);\n      }\n    },\n    [options?.onTabChange],\n  );\n  useEffect(() => {\n    setActiveTab(options?.activeTab || MarketsTabName.Favorites);\n  }, [options?.activeTab]);\n\n  useEffect(() => {\n    clearSearchValue?.();\n  }, [activeTab]);\n\n  return {\n    activeTab,\n    onTabChange,\n    tabSort,\n    onTabSort,\n  };\n}\n","import type {\n  BuiltInMarketTab,\n  MarketBuiltInTabType,\n  MarketCategoryComponentKey,\n  MarketTabConfig,\n} from \"../type\";\n\n/**\n * Pre-built builtIn constants for config function's context.builtIn.\n * Each entry is a built-in tab reference.\n */\nexport const builtInTabs: Record<MarketBuiltInTabType, BuiltInMarketTab> = {\n  favorites: { type: \"favorites\" },\n  community: {\n    type: \"community\",\n    isVisible: (symbolList) => {\n      return symbolList.some((m) => Boolean(m?.broker_id));\n    },\n  },\n  all: { type: \"all\" },\n  crypto: { type: \"crypto\" },\n  rwa: { type: \"rwa\" },\n  preTge: {\n    type: \"preTge\",\n    isVisible: (symbolList, { symbolsInfo }) => {\n      return symbolList.some((m) =>\n        Boolean(m?.is_pretge ?? symbolsInfo?.[m.symbol]?.(\"is_pretge\")),\n      );\n    },\n  },\n  newListing: { type: \"newListing\" },\n  recent: { type: \"recent\" },\n};\n\n/**\n * Default tab sequences for each component (as MarketTabConfig[]).\n */\nexport const componentDefaultTabs: Record<\n  MarketCategoryComponentKey,\n  MarketTabConfig[]\n> = {\n  marketsSheet: [\n    { type: \"favorites\" },\n    { type: \"all\" },\n    { ...builtInTabs.crypto },\n    { type: \"rwa\" },\n    { ...builtInTabs.community },\n    { ...builtInTabs.preTge },\n  ],\n  expandMarkets: [\n    { type: \"favorites\" },\n    { type: \"all\" },\n    { ...builtInTabs.crypto },\n    { type: \"rwa\" },\n    { ...builtInTabs.community },\n    { type: \"newListing\" },\n    { type: \"recent\" },\n    { ...builtInTabs.preTge },\n  ],\n  dropDownMarkets: [\n    { type: \"favorites\" },\n    { type: \"all\" },\n    { ...builtInTabs.crypto },\n    { type: \"rwa\" },\n    { ...builtInTabs.community },\n    { type: \"newListing\" },\n    { type: \"recent\" },\n    { ...builtInTabs.preTge },\n  ],\n  subMenuMarkets: [\n    { type: \"favorites\" },\n    { type: \"all\" },\n    { ...builtInTabs.crypto },\n    { type: \"rwa\" },\n    { ...builtInTabs.community },\n    { type: \"newListing\" },\n    { type: \"recent\" },\n    { ...builtInTabs.preTge },\n  ],\n  marketsDataList: [\n    { type: \"favorites\" },\n    { type: \"all\" },\n    { ...builtInTabs.crypto },\n    { type: \"rwa\" },\n    { ...builtInTabs.community },\n    { type: \"newListing\" },\n    { ...builtInTabs.preTge },\n  ],\n  horizontalMarkets: [\n    { type: \"all\" },\n    { type: \"newListing\" },\n    { type: \"recent\" },\n    { type: \"favorites\" },\n  ],\n};\n","import { useMemo } from \"react\";\nimport {\n  useMarketCategoriesConfig,\n  type MarketCategoryComponentKey,\n  type MarketTabConfig,\n  useMarketList,\n  useRwaSymbolsInfo,\n  useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  builtInTabs,\n  componentDefaultTabs,\n} from \"../../../registry/builtInTabRegistry\";\n\n/**\n * Returns the final MarketTabConfig[] for a given component.\n *\n * - If a marketTabs config function is provided, calls it with (original, context)\n * - Otherwise returns the component's default built-in tabs\n */\nexport function useMarketCategories(\n  componentKey: MarketCategoryComponentKey,\n): MarketTabConfig[] {\n  const marketTabs = useMarketCategoriesConfig();\n  const { i18n } = useTranslation();\n  const symbolList = useMarketList();\n  const rwaSymbolsInfo = useRwaSymbolsInfo();\n  const symbolsInfo = useSymbolsInfo();\n\n  return useMemo(() => {\n    const original = componentDefaultTabs[componentKey];\n    const resolved = marketTabs\n      ? marketTabs(original, { componentKey, builtIn: builtInTabs })\n      : original;\n\n    return resolved.filter(\n      (tab) =>\n        tab.isVisible?.(symbolList, { rwaSymbolsInfo, symbolsInfo }) ?? true,\n    );\n  }, [\n    marketTabs,\n    componentKey,\n    i18n.language,\n    symbolList,\n    rwaSymbolsInfo,\n    symbolsInfo,\n  ]);\n}\n","import { MarketsProvider, MarketsProviderProps } from \"../marketsProvider\";\nimport { useMarketCategories } from \"../shared/hooks/useMarketCategories\";\nimport {\n  useExpandMarketsScript,\n  ExpandMarketsScriptOptions,\n} from \"./expandMarkets.script\";\nimport { ExpandMarkets } from \"./expandMarkets.ui\";\n\nexport type ExpandMarketsWidgetProps = MarketsProviderProps &\n  ExpandMarketsScriptOptions;\n\nexport const ExpandMarketsWidget: React.FC<ExpandMarketsWidgetProps> = (\n  props,\n) => {\n  const state = useExpandMarketsScript({\n    activeTab: props.activeTab,\n    onTabChange: props.onTabChange,\n  });\n  const tabs = useMarketCategories(\"expandMarkets\");\n\n  return (\n    <MarketsProvider\n      symbol={props.symbol}\n      onSymbolChange={props.onSymbolChange}\n      tabs={tabs}\n    >\n      <ExpandMarkets {...state} />\n    </MarketsProvider>\n  );\n};\n","export { ExpandMarkets } from \"./expandMarkets.ui\";\nexport { useExpandMarketsScript } from \"./expandMarkets.script\";\nexport { ExpandMarketsWidget } from \"./expandMarkets.widget\";\n","import { useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  Column,\n  Flex,\n  Picker,\n  Select,\n  Text,\n  TokenIcon,\n  useScreen,\n  Badge,\n} from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\nimport { ProcessedFundingData } from \"./fundingOverview.script\";\n\nconst createFundingRenderer =\n  (dp: number = 5) =>\n  (value: number) => {\n    if (value === 0) {\n      return <Text> - </Text>;\n    }\n\n    return (\n      <Text.numeral\n        rule=\"percentages\"\n        dp={dp}\n        coloring\n        rm={Decimal.ROUND_DOWN}\n        showIdentifier\n      >\n        {value}\n      </Text.numeral>\n    );\n  };\n\nexport const useFundingOverviewColumns = (\n  selectedPeriod: string,\n  setSelectedPeriod: (value: string) => void,\n) => {\n  const { t } = useTranslation();\n  const { isMobile } = useScreen();\n\n  return useMemo<Column<ProcessedFundingData>[]>(() => {\n    return [\n      {\n        title: t(\"markets.column.market\"),\n        dataIndex: \"symbol\",\n        onSort: true,\n        width: 180,\n        className: isMobile ? \"oui-ps-0\" : undefined,\n        render: (value, record) => {\n          if (isMobile) {\n            return (\n              <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n                <Flex gapX={1} itemAlign=\"center\">\n                  <TokenIcon symbol={value} className=\"oui-size-[18px]\" />\n                  <SymbolDisplay formatString=\"base\" size=\"2xs\">\n                    {value}\n                  </SymbolDisplay>\n                </Flex>\n                {typeof record.leverage === \"number\" && (\n                  <Badge size=\"xs\" color=\"primary\">\n                    {record.leverage}x\n                  </Badge>\n                )}\n              </Flex>\n            );\n          }\n\n          return (\n            <Flex gapX={1} itemAlign=\"center\">\n              <TokenIcon symbol={value} className=\"oui-size-5\" />\n              <SymbolDisplay formatString=\"base\" size=\"xs\">\n                {value}\n              </SymbolDisplay>\n              {typeof record.leverage === \"number\" && (\n                <Badge size=\"xs\" color=\"primary\">\n                  {record.leverage}x\n                </Badge>\n              )}\n            </Flex>\n          );\n        },\n      },\n      {\n        title: t(\"markets.funding.column.estFunding\"),\n        dataIndex: \"estFunding\",\n        width: 120,\n        onSort: true,\n        render: (value, record) => (\n          <div>\n            <Text.numeral\n              rule=\"percentages\"\n              dp={5}\n              coloring\n              rm={Decimal.ROUND_DOWN}\n              showIdentifier\n            >\n              {value}\n            </Text.numeral>\n            <span className=\"oui-text-base-contrast-54\">\n              {`/ ${record.fundingInterval}h`}\n            </span>\n          </div>\n        ),\n      },\n      {\n        title: t(\"markets.funding.column.lastFunding\"),\n        dataIndex: \"lastFunding\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: t(\"markets.funding.column.1dAvg\"),\n        dataIndex: \"funding1d\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: t(\"markets.funding.column.3dAvg\"),\n        dataIndex: \"funding3d\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: t(\"markets.funding.column.7dAvg\"),\n        dataIndex: \"funding7d\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: t(\"markets.funding.column.14dAvg\"),\n        dataIndex: \"funding14d\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: t(\"markets.funding.column.30dAvg\"),\n        dataIndex: \"funding30d\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: t(\"markets.funding.column.90dAvg\"),\n        dataIndex: \"funding90d\",\n        width: 90,\n        onSort: true,\n        render: createFundingRenderer(),\n      },\n      {\n        title: (\n          <div className=\"oui-flex oui-gap-1\">\n            <FundingPeriodSelect\n              value={selectedPeriod}\n              onValueChange={setSelectedPeriod}\n            />\n            <span>{t(\"markets.funding.column.positiveRate\")}</span>\n          </div>\n        ),\n        dataIndex: selectedPeriod,\n        width: 130,\n        align: \"right\",\n        onSort: true,\n        render: createFundingRenderer(2),\n      },\n    ];\n  }, [t, isMobile, selectedPeriod, setSelectedPeriod]);\n};\n\ntype FundingPeriodSelectProps = {\n  value: string;\n  onValueChange: (value: string) => void;\n};\n\nconst FundingPeriodSelect = (props: FundingPeriodSelectProps) => {\n  const { t } = useTranslation();\n  const { isMobile } = useScreen();\n\n  const options = useMemo(() => {\n    return [\n      {\n        label: t(\"common.select.1d\"),\n        value: \"1dPositive\",\n      },\n      {\n        label: t(\"common.select.3d\"),\n        value: \"3dPositive\",\n      },\n      {\n        label: t(\"common.select.7d\"),\n        value: \"7dPositive\",\n      },\n      {\n        label: t(\"common.select.14d\"),\n        value: \"14dPositive\",\n      },\n      {\n        label: t(\"common.select.30d\"),\n        value: \"30dPositive\",\n      },\n      {\n        label: t(\"common.select.90d\"),\n        value: \"90dPositive\",\n      },\n    ];\n  }, [t]);\n\n  if (isMobile) {\n    return (\n      <Picker\n        size=\"sm\"\n        value={props.value}\n        onValueChange={props.onValueChange}\n        options={options}\n      />\n    );\n  }\n\n  return (\n    <Select.options\n      size=\"xs\"\n      value={props.value}\n      onValueChange={props.onValueChange}\n      options={options}\n    />\n  );\n};\n","import { FC, useState } from \"react\";\nimport { DataTable, cn } from \"@orderly.network/ui\";\nimport { useFundingOverviewColumns } from \"./columns\";\nimport { FundingOverviewReturn } from \"./fundingOverview.script\";\n\nexport type FundingOverviewProps = FundingOverviewReturn;\n\nexport const FundingOverview: FC<FundingOverviewProps> = (props) => {\n  const { dataSource, isLoading, pagination, onSort } = props;\n  const [selectedPeriod, setSelectedPeriod] = useState(\"1dPositive\");\n\n  const columns = useFundingOverviewColumns(selectedPeriod, setSelectedPeriod);\n\n  return (\n    <DataTable\n      columns={columns}\n      dataSource={dataSource}\n      loading={isLoading}\n      bordered\n      onRow={() => {\n        return {\n          className: cn(\"oui-h-[48px] oui-cursor-pointer\"),\n        };\n      }}\n      classNames={{\n        header: \"oui-h-12\",\n      }}\n      pagination={pagination}\n      onSort={onSort}\n      manualSorting\n      generatedRowKey={(record) => record.symbol}\n    />\n  );\n};\n","import { useMemo } from \"react\";\nimport {\n  MarketsType,\n  useFundingRateHistory,\n  useFundingRates,\n  useMarkets,\n} from \"@orderly.network/hooks\";\nimport { usePagination } from \"@orderly.network/ui\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { useSort, searchBySymbol } from \"../../utils\";\n\nexport type ProcessedFundingData = {\n  symbol: string;\n  leverage?: number;\n  estFunding: number;\n  lastFunding: number;\n  fundingInterval: number;\n  funding1d: number | string;\n  funding3d: number | string;\n  funding7d: number | string;\n  funding14d: number | string;\n  funding30d: number | string;\n  funding90d: number | string;\n  \"1dPositive\": number | string;\n  \"3dPositive\": number | string;\n  \"7dPositive\": number | string;\n  \"14dPositive\": number | string;\n  \"30dPositive\": number | string;\n  \"90dPositive\": number | string;\n};\n\nexport type FundingOverviewReturn = ReturnType<typeof useFundingOverviewScript>;\n\nexport const useFundingOverviewScript = () => {\n  const { pagination } = usePagination({ pageSize: 100 });\n  const [marketData] = useMarkets(MarketsType.ALL);\n\n  const {\n    data: fundingHistory,\n    isLoading: isHistoryLoading,\n    getPositiveRates,\n  } = useFundingRateHistory();\n  const fundingRates = useFundingRates();\n\n  const { onSort, getSortedList } = useSort();\n  const { searchValue } = useMarketsContext();\n\n  const processedData = useMemo((): ProcessedFundingData[] => {\n    if (!marketData?.length) {\n      return [];\n    }\n\n    const periods = [\"1d\", \"3d\", \"7d\", \"14d\", \"30d\", \"90d\"] as const;\n    const posRates = periods.reduce(\n      (acc, period) => {\n        acc[period] = getPositiveRates(fundingHistory, period);\n        return acc;\n      },\n      {} as Record<string, Record<string, number>>,\n    );\n\n    // because fundingHistory list is unstable sort, so use marketData instead\n    // TODO: feedback to backend to fix this if possible\n    return marketData.map((item) => {\n      const symbol = item.symbol;\n      const history = fundingHistory?.find((h) => h.symbol === symbol);\n\n      const fundingRate = fundingRates[symbol];\n\n      const fundingInterval = getFundingInterval(\n        fundingRate(\"next_funding_time\"),\n        fundingRate(\"last_funding_rate_timestamp\"),\n      );\n\n      return {\n        symbol,\n        leverage: item.leverage,\n        estFunding: fundingRate(\"est_funding_rate\"),\n        lastFunding: fundingRate(\"last_funding_rate\"),\n        fundingInterval,\n        funding1d: history?.funding?.[\"1d\"]?.rate ?? 0,\n        funding3d: history?.funding?.[\"3d\"]?.rate ?? 0,\n        funding7d: history?.funding?.[\"7d\"]?.rate ?? 0,\n        funding14d: history?.funding?.[\"14d\"]?.rate ?? 0,\n        funding30d: history?.funding?.[\"30d\"]?.rate ?? 0,\n        funding90d: history?.funding?.[\"90d\"]?.rate ?? 0,\n        \"1dPositive\": posRates[\"1d\"][symbol] ?? \"-\",\n        \"3dPositive\": posRates[\"3d\"][symbol] ?? \"-\",\n        \"7dPositive\": posRates[\"7d\"][symbol] ?? \"-\",\n        \"14dPositive\": posRates[\"14d\"][symbol] ?? \"-\",\n        \"30dPositive\": posRates[\"30d\"][symbol] ?? \"-\",\n        \"90dPositive\": posRates[\"90d\"][symbol] ?? \"-\",\n      };\n    });\n  }, [marketData, fundingHistory, fundingRates, getPositiveRates]);\n\n  const filteredData = useMemo(() => {\n    return searchBySymbol(processedData, searchValue, \"base-type\");\n  }, [processedData, searchValue, pagination]);\n\n  const dataSource = useMemo(\n    () => getSortedList(filteredData),\n    [filteredData, getSortedList],\n  );\n\n  return { dataSource, isLoading: isHistoryLoading, pagination, onSort };\n};\n\nfunction getFundingInterval(\n  next_funding_time: number,\n  last_funding_rate_timestamp: number,\n) {\n  // default interval is 8 hours\n  if (!next_funding_time || !last_funding_rate_timestamp) return 8;\n  const diff = next_funding_time - last_funding_rate_timestamp;\n\n  return Math.round(diff / 3600000);\n}\n","import { FC, useState } from \"react\";\nimport { DataTable, cn } from \"@orderly.network/ui\";\nimport { useFundingOverviewColumns } from \"./columns\";\nimport { FundingOverviewReturn } from \"./fundingOverview.script\";\n\nexport type MobileFundingOverviewProps = FundingOverviewReturn;\n\nexport const MobileFundingOverview: FC<MobileFundingOverviewProps> = (\n  props,\n) => {\n  const { dataSource, isLoading, onSort } = props;\n  const [selectedPeriod, setSelectedPeriod] = useState(\"1dPositive\");\n\n  const columns = useFundingOverviewColumns(selectedPeriod, setSelectedPeriod);\n\n  return (\n    <DataTable\n      columns={columns}\n      dataSource={dataSource}\n      loading={isLoading}\n      onRow={() => {\n        return {\n          className: cn(\"oui-h-[34px] oui-cursor-pointer\"),\n        };\n      }}\n      classNames={{\n        header: \"oui-h-9\",\n        body: \"oui-text-2xs\",\n      }}\n      onSort={onSort}\n      manualSorting\n      generatedRowKey={(record) => record.symbol}\n    />\n  );\n};\n","import { FC } from \"react\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { MobileFundingOverview } from \"./fundingOverview.mobile.ui\";\nimport { useFundingOverviewScript } from \"./fundingOverview.script\";\nimport { FundingOverview } from \"./fundingOverview.ui\";\n\nexport const FundingOverviewWidget: FC = () => {\n  const props = useFundingOverviewScript();\n  const { isMobile } = useScreen();\n  return isMobile ? (\n    <MobileFundingOverview {...props} />\n  ) : (\n    <FundingOverview {...props} />\n  );\n};\n","export { FundingOverview } from \"./fundingOverview.ui\";\nexport { useFundingOverviewScript } from \"./fundingOverview.script\";\nexport { FundingOverviewWidget } from \"./fundingOverview.widget\";\n","import { useMemo } from \"react\";\nimport { useMarketsContext } from \"../marketsProvider\";\n\nexport const useEXchanges = () => {\n  const { comparisonProps } = useMarketsContext();\n  const brokerName = comparisonProps?.exchangesName || \"Orderly\";\n  const brokerIconSrc =\n    comparisonProps?.exchangesIconSrc ||\n    \"https://oss.orderly.network/static/exchange_logo/orderly.png\";\n  const exchanges = useMemo<string[]>(() => {\n    return [\n      brokerName,\n      \"Binance\",\n      `${brokerName} - Binance`,\n      \"OKX\",\n      `${brokerName} - OKX`,\n      \"Bybit\",\n      `${brokerName} - Bybit`,\n      \"dYdX\",\n      `${brokerName} - dYdX`,\n      \"Bitget\",\n      `${brokerName} - Bitget`,\n      \"KuCoin\",\n      `${brokerName} - KuCoin`,\n    ];\n  }, [comparisonProps?.exchangesName]);\n  return {\n    exchanges,\n    brokerName,\n    brokerIconSrc: brokerIconSrc,\n  };\n};\n","import { useCallback, useMemo } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { cn, Flex, TokenIcon, useScreen, Badge } from \"@orderly.network/ui\";\nimport type { Column } from \"@orderly.network/ui\";\nimport { Text } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { OrderlyIcon } from \"../../icons\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\nimport { useEXchanges } from \"./useEXchanges\";\n\nconst CDN_PREFIX = \"https://oss.orderly.network/static/exchange_logo\";\n\nexport const useFundingColumns = () => {\n  const { t } = useTranslation();\n  const { isMobile } = useScreen();\n  const { exchanges, brokerName, brokerIconSrc } = useEXchanges();\n  const getImgSrc = useCallback(\n    (val: string) => {\n      if (val === brokerName) {\n        return brokerIconSrc;\n      }\n      return `${CDN_PREFIX}/${val.toLowerCase().replace(\" \", \"_\")}.png`;\n    },\n    [brokerName, brokerIconSrc],\n  );\n  return useMemo<Column[]>(() => {\n    return [\n      {\n        title: t(\"markets.column.market\"),\n        dataIndex: \"symbol\",\n        width: 220,\n        onSort: true,\n        className: isMobile ? \"oui-ps-0\" : undefined,\n        render: (value, record) => {\n          if (isMobile) {\n            return (\n              <Flex direction=\"column\" itemAlign=\"start\" gapY={1}>\n                <Flex gapX={1} itemAlign=\"center\">\n                  <TokenIcon symbol={value} className=\"oui-size-[18px]\" />\n                  <SymbolDisplay formatString=\"base\" size=\"2xs\">\n                    {value}\n                  </SymbolDisplay>\n                </Flex>\n                {typeof record.leverage === \"number\" && (\n                  <Badge size=\"xs\" color=\"primary\">\n                    {record.leverage}x\n                  </Badge>\n                )}\n              </Flex>\n            );\n          }\n\n          return (\n            <Flex gapX={1} itemAlign=\"center\">\n              <TokenIcon symbol={value} className=\"oui-size-5\" />\n              <SymbolDisplay formatString=\"base\" size=\"xs\">\n                {value}\n              </SymbolDisplay>\n              {typeof record.leverage === \"number\" && (\n                <Badge size=\"xs\" color=\"primary\">\n                  {record.leverage}x\n                </Badge>\n              )}\n            </Flex>\n          );\n        },\n      },\n      {\n        title: (\n          <Flex gapX={1}>\n            <OrderlyIcon /> {t(\"markets.openInterest\")}\n          </Flex>\n        ),\n        dataIndex: \"openInterest\",\n        width: 120,\n        // align: \"right\",\n        onSort: true,\n        render: (value) => {\n          if (value === \"-\") {\n            return \"-\";\n          }\n          return (\n            <Text.numeral currency=\"$\" dp={0} rm={Decimal.ROUND_DOWN}>\n              {value}\n            </Text.numeral>\n          );\n        },\n      },\n      ...exchanges.map<Column>((item) => {\n        const imgSrc = getImgSrc(item);\n        return {\n          title: (\n            <Flex justify=\"start\" itemAlign=\"center\" gap={1}>\n              {!item.includes(\" - \") && imgSrc && (\n                <img\n                  src={imgSrc}\n                  className={cn(\n                    \"oui-size-6 oui-rounded-full oui-object-cover\",\n                    isMobile ? \"oui-size-[18px]\" : \"oui-size-6\",\n                  )}\n                />\n              )}\n              {item}\n            </Flex>\n          ),\n          dataIndex: item,\n          onSort: true,\n          width: item.includes(\" - \") ? 160 : 130,\n          render(value: number | null) {\n            if (value === null) {\n              return \"-\";\n            }\n            return (\n              <Text.numeral\n                rule=\"percentages\"\n                dp={5}\n                coloring={item.includes(\" - \") || item === brokerName}\n                rm={Decimal.ROUND_DOWN}\n                showIdentifier\n              >\n                {value}\n              </Text.numeral>\n            );\n          },\n        };\n      }),\n    ];\n  }, [t, isMobile, exchanges, brokerName, getImgSrc]);\n};\n","import type { FC } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\nimport { DataTable } from \"@orderly.network/ui\";\nimport { useFundingColumns } from \"./columns\";\nimport { FundingComparisonReturn } from \"./fundingComparison.script\";\n\nexport const FundingComparison: FC<FundingComparisonReturn> = (props) => {\n  const columns = useFundingColumns();\n\n  return (\n    <DataTable\n      columns={columns}\n      dataSource={props.dataSource}\n      loading={props.isLoading}\n      onRow={() => {\n        return {\n          className: cn(\"oui-h-[48px] oui-cursor-pointer\"),\n        };\n      }}\n      classNames={{\n        header: \"oui-h-12\",\n      }}\n      bordered\n      pagination={props.pagination}\n    />\n  );\n};\n","import { useMemo } from \"react\";\nimport {\n  MarketsType,\n  useFundingRates,\n  useMarkets,\n  useMarketsStream,\n  useQuery,\n} from \"@orderly.network/hooks\";\nimport { usePagination } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { useSort, searchBySymbol } from \"../../utils\";\nimport { useEXchanges } from \"./useEXchanges\";\n\nfunction getOpenInterest(open_interest?: number, index_price?: number) {\n  return new Decimal(open_interest || 0).mul(index_price || 0).toNumber();\n}\n\nexport type FundingComparisonReturn = ReturnType<\n  typeof useFundingComparisonScript\n>;\n\nexport const useFundingComparisonScript = () => {\n  const { pagination } = usePagination({ pageSize: 100 });\n  const { onSort, getSortedList } = useSort();\n  const { searchValue } = useMarketsContext();\n  const { exchanges, brokerName } = useEXchanges();\n  const fundingRates = useFundingRates();\n  const [markets] = useMarkets(MarketsType.ALL);\n\n  const { data, isLoading } = useQuery<\n    Array<{ symbol: string; exchanges: Array<{ name: string; last: number }> }>\n  >(\"/v1/public/market_info/funding_comparison\");\n  const { data: futures } = useMarketsStream();\n\n  const processedData = useMemo(() => {\n    if (!Array.isArray(data) || !data.length) {\n      return [];\n    }\n    return data.map((row) => {\n      const target = futures?.find((item) => item.symbol === row.symbol);\n      const marketMeta = markets?.find((item) => item.symbol === row.symbol);\n      const result: Record<PropertyKey, any> = {\n        symbol: row.symbol,\n        leverage: marketMeta?.leverage,\n        openInterest: target\n          ? getOpenInterest(\n              target?.open_interest as number,\n              target?.index_price as number,\n            )\n          : \"-\",\n      };\n      for (const item of exchanges) {\n        const isCompare = item.includes(` - `);\n        if (!isCompare) {\n          if (item === brokerName) {\n            const rate = fundingRates[row.symbol];\n            result[item] = rate(\"last_funding_rate\") ?? null;\n          } else {\n            const exchange = row.exchanges?.find(\n              (e) => e.name.toLowerCase() === item.toLowerCase(),\n            );\n            result[item] = exchange?.last ?? null;\n          }\n        } else {\n          const [, exchangeName] = item.replace(/ /g, \"\").split(\"-\");\n          const rate = fundingRates[row.symbol];\n          const wooFiRate = rate(\"last_funding_rate\") ?? null;\n          const exchange = row.exchanges?.find(\n            (e) => e.name.toLowerCase() === exchangeName.toLowerCase(),\n          );\n          const otherRate = exchange?.last ?? null;\n          if (wooFiRate !== null && otherRate !== null) {\n            result[item] = new Decimal(wooFiRate).sub(otherRate).toString();\n          } else {\n            result[item] = null;\n          }\n        }\n      }\n      return result;\n    });\n  }, [data, futures, markets, fundingRates, exchanges, brokerName]);\n\n  const filteredData = useMemo(() => {\n    return searchBySymbol(processedData, searchValue, \"base-type\");\n  }, [processedData, searchValue, pagination]);\n\n  const dataSource = useMemo(\n    () => getSortedList(filteredData),\n    [getSortedList, filteredData],\n  );\n\n  return {\n    dataSource,\n    isLoading,\n    pagination,\n    onSort,\n  };\n};\n","import type { FC } from \"react\";\nimport { cn } from \"@orderly.network/ui\";\nimport { DataTable } from \"@orderly.network/ui\";\nimport { useFundingColumns } from \"./columns\";\nimport { FundingComparisonReturn } from \"./fundingComparison.script\";\n\nexport const MobileFundingComparison: FC<FundingComparisonReturn> = (props) => {\n  const columns = useFundingColumns();\n\n  return (\n    <DataTable\n      columns={columns}\n      dataSource={props.dataSource}\n      loading={props.isLoading}\n      onRow={() => {\n        return {\n          className: cn(\"oui-h-[34px] oui-cursor-pointer\"),\n        };\n      }}\n      onSort={props.onSort}\n      classNames={{\n        header: \"oui-h-9\",\n        body: \"oui-text-2xs\",\n      }}\n      manualSorting\n    />\n  );\n};\n","import type { FC } from \"react\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { MobileFundingComparison } from \"./fundingComparison.mobile.ui\";\nimport { useFundingComparisonScript } from \"./fundingComparison.script\";\nimport { FundingComparison } from \"./fundingComparison.ui\";\n\nexport const FundingComparisonWidget: FC = () => {\n  const state = useFundingComparisonScript();\n  const { isMobile } = useScreen();\n  return isMobile ? (\n    <MobileFundingComparison {...state} />\n  ) : (\n    <FundingComparison {...state} />\n  );\n};\n","export { FundingComparison } from \"./fundingComparison.ui\";\nexport { useFundingComparisonScript } from \"./fundingComparison.script\";\nexport { FundingComparisonWidget } from \"./fundingComparison.widget\";\n","import React, { useMemo } from \"react\";\nimport {\n  useLocalStorage,\n  useRwaSymbolsInfoStore,\n} from \"@orderly.network/hooks\";\nimport { Box, cn } from \"@orderly.network/ui\";\nimport { createCommunityBrokerFilter } from \"../../hooks/useCommunityTabs\";\nimport { MarketsTabName } from \"../../type\";\nimport { ExpandMarketsWidget } from \"../expandMarkets\";\nimport { MarketsListWidget } from \"../marketsList\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport {\n  createRwaSubcategoryFilter,\n  type RwaSubcategory,\n} from \"../rwaSubcategoryTabs\";\nimport { useFavoritesProps } from \"../shared/hooks/useFavoritesExtraProps\";\nimport type { SideMarketsScriptReturn } from \"./sideMarkets.script\";\n\nconst EXPAND_RWA_SUB_TAB_KEY = \"orderly_expand_markets_rwa_sel_sub_tab\";\nconst EXPAND_COMMUNITY_SUB_TAB_KEY =\n  \"orderly_expand_markets_community_sel_sub_tab\";\n\nexport type SideMarketsProps = SideMarketsScriptReturn & {\n  className?: string;\n} & { panelSize?: \"small\" | \"middle\" | \"large\" };\n\nexport const SideMarkets: React.FC<SideMarketsProps> = (props) => {\n  const { activeTab, onTabChange, className, tabSort, panelSize } = props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n  const { getFavoritesProps } = useFavoritesProps();\n\n  // Reuse expand-mode subcategory selection; collapsed UI has no secondary tabs.\n  const [rwaSubcategory] = useLocalStorage<RwaSubcategory>(\n    EXPAND_RWA_SUB_TAB_KEY,\n    \"all\",\n  );\n  const [communitySubTab] = useLocalStorage<string>(\n    EXPAND_COMMUNITY_SUB_TAB_KEY,\n    \"all\",\n  );\n  const rwaSymbolsInfo = useRwaSymbolsInfoStore();\n\n  const rwaDataFilter = useMemo(\n    () => createRwaSubcategoryFilter(rwaSubcategory, rwaSymbolsInfo),\n    [rwaSubcategory, rwaSymbolsInfo],\n  );\n  const communityDataFilter = useMemo(\n    () => createCommunityBrokerFilter(communitySubTab),\n    [communitySubTab],\n  );\n\n  const renderContent = () => {\n    if (panelSize === \"large\") {\n      return (\n        <ExpandMarketsWidget\n          activeTab={activeTab}\n          onTabChange={onTabChange}\n          symbol={symbol}\n          onSymbolChange={onSymbolChange}\n        />\n      );\n    }\n\n    // Apply persisted show-low-vol preference without rendering the toggle UI.\n    if (activeTab === MarketsTabName.Rwa) {\n      return (\n        <MarketsListWidget\n          type={activeTab}\n          dataFilter={rwaDataFilter}\n          initialSort={tabSort[activeTab]}\n          panelSize={\"middle\"}\n        />\n      );\n    }\n    if (activeTab === MarketsTabName.Community) {\n      return (\n        <MarketsListWidget\n          type={MarketsTabName.All}\n          dataFilter={communityDataFilter}\n          initialSort={tabSort[MarketsTabName.Community]}\n          panelSize={\"middle\"}\n        />\n      );\n    }\n\n    return (\n      <MarketsListWidget\n        type={activeTab}\n        initialSort={tabSort[activeTab]}\n        panelSize={\"middle\"}\n        {...getFavoritesProps(activeTab)}\n      />\n    );\n  };\n\n  // Parent trading column uses flex-1/min-h-0; avoid nested calc heights that double-subtract.\n  return (\n    <Box\n      width=\"100%\"\n      height=\"100%\"\n      className={cn(className, \"oui-min-h-0 oui-min-w-0 oui-max-w-full\")}\n    >\n      {renderContent()}\n    </Box>\n  );\n};\n","import { MouseEventHandler, useCallback } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Text, cn, Column } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { DeleteIcon, TopIcon } from \"../../icons\";\nimport { FavoriteInstance } from \"../../type\";\nimport {\n  get24hPercentageColumn,\n  getLastColumn,\n  getSymbolColumn,\n} from \"../shared/column\";\n\nexport const useDropDownMarketsColumns = () => {\n  const { t } = useTranslation();\n\n  return useCallback(\n    (favorite: FavoriteInstance, isFavoriteList = false) => {\n      return [\n        getSymbolColumn(favorite, isFavoriteList, {\n          symbolColumnWidth: 190,\n        }),\n        getLastColumn(),\n        get24hPercentageColumn(),\n        {\n          title: t(\"markets.column.24hVol\"),\n          dataIndex: \"24h_amount\",\n          align: \"right\",\n          onSort: true,\n          className: \"oui-relative\",\n          width: 80,\n          render: (value, record) => {\n            const onDelSymbol: MouseEventHandler = (e) => {\n              favorite.updateSymbolFavoriteState(\n                record,\n                favorite.selectedFavoriteTab,\n                true,\n              );\n              e.stopPropagation();\n            };\n\n            const iconCls =\n              \"oui-w-4 oui-h-4 oui-text-base-contrast-54 hover:oui-text-base-contrast\";\n\n            const actions = (\n              <div className={cn(\"oui-absolute oui-end-1 oui-top-[3px]\")}>\n                <Flex\n                  className={cn(\n                    \"oui-bg-primary-darken oui-py-[6px]\",\n                    \"oui-hidden group-hover:oui-inline-flex\",\n                  )}\n                  r=\"base\"\n                  width={52}\n                  justify=\"center\"\n                  itemAlign=\"end\"\n                  gapX={2}\n                >\n                  <TopIcon\n                    className={iconCls}\n                    onClick={(e) => {\n                      e.stopPropagation();\n                      favorite.pinToTop(record);\n                    }}\n                  />\n                  <DeleteIcon className={iconCls} onClick={onDelSymbol} />\n                </Flex>\n              </div>\n            );\n            return (\n              <>\n                {isFavoriteList && actions}\n                <Text.numeral\n                  rule=\"human\"\n                  dp={2}\n                  rm={Decimal.ROUND_DOWN}\n                  className={cn(isFavoriteList && \"group-hover:oui-invisible\")}\n                >\n                  {value}\n                </Text.numeral>\n              </>\n            );\n          },\n        },\n        {\n          title: t(\"markets.openInterest\"),\n          dataIndex: \"openInterest\",\n          align: \"right\",\n          onSort: true,\n          width: 80,\n          render: (value) => (\n            <Text.numeral\n              rule=\"human\"\n              dp={2}\n              rm={Decimal.ROUND_DOWN}\n              size=\"2xs\"\n            >\n              {value}\n            </Text.numeral>\n          ),\n        },\n      ] as Column[];\n    },\n    [t],\n  );\n};\n","import { PropsWithChildren } from \"react\";\nimport {\n  Box,\n  CloseIcon,\n  cn,\n  Flex,\n  TabPanel,\n  Tabs,\n  DropdownMenuContent,\n  DropdownMenuPortal,\n  DropdownMenuRoot,\n  DropdownMenuTrigger,\n} from \"@orderly.network/ui\";\nimport { createCommunityBrokerFilter } from \"../../hooks/useCommunityTabs\";\nimport { MarketsTabName } from \"../../type\";\nimport { CommunityBrokerTabs } from \"../communityBrokerTabs\";\nimport { MarketsListWidget } from \"../marketsList\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { RwaSubcategoryTabs } from \"../rwaSubcategoryTabs\";\nimport { RwaTab } from \"../rwaTab\";\nimport { SearchInput } from \"../searchInput\";\nimport { useFavoritesProps } from \"../shared/hooks/useFavoritesExtraProps\";\nimport { ShowLowVolumeFilter } from \"../shared/showLowVolumeFilter\";\nimport {\n  isBuiltInMarketTab,\n  tabKey,\n  resolveTabTitle,\n  useBuiltInTitles,\n  useCustomTabDataFilters,\n} from \"../shared/tabUtils\";\nimport { useDropDownMarketsColumns } from \"./column\";\nimport { DropDownMarketsScriptReturn } from \"./dropDownMarkets.script\";\n\nexport type DropDownMarketsProps = DropDownMarketsScriptReturn & {\n  contentClassName?: string;\n};\n\nexport const DropDownMarkets: React.FC<\n  PropsWithChildren<DropDownMarketsProps>\n> = (props) => {\n  return (\n    <DropdownMenuRoot open={props.open} onOpenChange={props.onOpenChange}>\n      <DropdownMenuTrigger asChild>{props.children}</DropdownMenuTrigger>\n      <DropdownMenuPortal>\n        <DropdownMenuContent\n          onCloseAutoFocus={(e) => e.preventDefault()}\n          onClick={(e) => e.stopPropagation()}\n          align=\"start\"\n          alignOffset={-32}\n          sideOffset={20}\n          className={cn(\n            \"oui-markets-dropdown-menu-content oui-bg-base-8 oui-p-0\",\n            props.contentClassName,\n          )}\n        >\n          <DropDownMarketsConetnt {...props} hide={props.hide} />\n        </DropdownMenuContent>\n      </DropdownMenuPortal>\n    </DropdownMenuRoot>\n  );\n};\n\nexport const DropDownMarketsConetnt: React.FC<DropDownMarketsProps> = (\n  props,\n) => {\n  const { activeTab, onTabChange, tabSort, onTabSort } = props;\n\n  const getColumns = useDropDownMarketsColumns();\n  const builtInTitles = useBuiltInTitles();\n\n  const search = (\n    <Flex\n      className=\"oui-dropDownMarkets-search oui-items-center\"\n      mx={3}\n      gapX={3}\n      pt={3}\n      pb={2}\n    >\n      <SearchInput\n        classNames={{\n          root: \"oui-min-w-0 oui-flex-1\",\n        }}\n      />\n      <ShowLowVolumeFilter />\n      <CloseIcon\n        size={12}\n        className=\"oui-dropDownMarkets-close-btn oui-cursor-pointer oui-text-base-contrast-80\"\n        onClick={props.hide}\n        opacity={1}\n      />\n    </Flex>\n  );\n\n  const cls = \"oui-h-[calc(100%_-_36px)]\";\n\n  const { getFavoritesProps, renderEmptyView } = useFavoritesProps();\n  const { tabs } = useMarketsContext();\n  const tabDataFilters = useCustomTabDataFilters(tabs);\n\n  const renderBuiltInContent = (tabType: MarketsTabName) => {\n    if (tabType === MarketsTabName.Rwa) {\n      return (\n        <RwaSubcategoryTabs\n          storageKey=\"orderly_dropdown_markets_rwa_sel_sub_tab\"\n          classNames={{\n            tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n            tabsContent: \"oui-h-full\",\n          }}\n          className={cn(\"oui-dropDownMarkets-rwa-tabs\", cls)}\n          showScrollIndicator\n          renderPanel={(_, dataFilter) => (\n            <div className={cls}>\n              <MarketsListWidget\n                type={MarketsTabName.Rwa}\n                initialSort={tabSort[tabType]}\n                onSort={onTabSort(tabType)}\n                getColumns={getColumns}\n                tableClassNames={{\n                  root: cn(\"oui-dropDownMarkets-list\", \"!oui-bg-base-8\"),\n                  scroll: \"oui-pb-5 oui-px-1\",\n                }}\n                rowClassName=\"!oui-h-[34px]\"\n                dataFilter={dataFilter}\n              />\n            </div>\n          )}\n        />\n      );\n    }\n\n    return (\n      <div className={cls}>\n        <MarketsListWidget\n          type={tabType}\n          initialSort={tabSort[tabType]}\n          onSort={onTabSort(tabType)}\n          getColumns={getColumns}\n          tableClassNames={{\n            root: cn(\"oui-dropDownMarkets-list\", \"!oui-bg-base-8\"),\n            scroll: \"oui-pb-5 oui-px-1\",\n          }}\n          rowClassName=\"!oui-h-[34px]\"\n          {...getFavoritesProps(tabType)}\n          emptyView={renderEmptyView({\n            type: tabType,\n            onClick: () => {\n              onTabChange(MarketsTabName.All);\n            },\n          })}\n        />\n      </div>\n    );\n  };\n\n  const renderCommunityContent = () => {\n    return (\n      <CommunityBrokerTabs\n        storageKey=\"orderly_dropdown_markets_community_sel_sub_tab\"\n        classNames={{\n          tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n          tabsContent: \"oui-h-full\",\n        }}\n        className={cn(\"oui-dropDownMarkets-community-tabs\", cls)}\n        showScrollIndicator\n        renderPanel={(selected) => (\n          <div className={cls}>\n            <MarketsListWidget\n              type={MarketsTabName.All}\n              initialSort={tabSort[MarketsTabName.Community]}\n              onSort={onTabSort(MarketsTabName.Community)}\n              getColumns={getColumns}\n              tableClassNames={{\n                root: cn(\"oui-dropDownMarkets-list\", \"!oui-bg-base-8\"),\n                scroll: \"oui-pb-5 oui-px-1\",\n              }}\n              rowClassName=\"!oui-h-[34px]\"\n              dataFilter={createCommunityBrokerFilter(selected)}\n            />\n          </div>\n        )}\n      />\n    );\n  };\n\n  const renderCustomContent = (key: string) => {\n    return (\n      <div className={cls}>\n        <MarketsListWidget\n          type={MarketsTabName.All}\n          dataFilter={(data) => tabDataFilters[key]?.(data) ?? data}\n          initialSort={tabSort[key]}\n          onSort={onTabSort(key as MarketsTabName)}\n          getColumns={getColumns}\n          tableClassNames={{\n            root: cn(\"oui-dropDownMarkets-list\", \"!oui-bg-base-8\"),\n            scroll: \"oui-pb-5 oui-px-1\",\n          }}\n          rowClassName=\"!oui-h-[34px]\"\n        />\n      </div>\n    );\n  };\n\n  return (\n    <Box\n      className={cn(\n        \"oui-markets-dropDownMarkets\",\n        \"oui-overflow-hidden oui-font-semibold\",\n      )}\n      height=\"100%\"\n      intensity={800}\n    >\n      {search}\n\n      <Tabs\n        variant=\"contained\"\n        size=\"md\"\n        value={activeTab}\n        onValueChange={onTabChange}\n        classNames={{\n          tabsListContainer: \"oui-px-3\",\n          tabsList: \"oui-my-[6px]\",\n          tabsContent: \"oui-h-full\",\n          scrollIndicator: \"oui-mx-0\",\n        }}\n        className={cn(\"oui-dropDownMarkets-tabs\", cls)}\n        showScrollIndicator\n      >\n        {tabs?.map((tab, index) => {\n          const key = tabKey(tab, index);\n          const isBuiltIn = isBuiltInMarketTab(tab);\n          const isCommunity =\n            isBuiltIn && tab.type === MarketsTabName.Community;\n\n          return (\n            <TabPanel\n              key={key}\n              classNames={{\n                trigger: `oui-tabs-${key}-trigger`,\n                content: `oui-tabs-${key}-content`,\n              }}\n              title={resolveTabTitle(tab, builtInTitles, <RwaTab />)}\n              value={key}\n            >\n              {isCommunity\n                ? renderCommunityContent()\n                : isBuiltIn\n                  ? renderBuiltInContent(tab.type as MarketsTabName)\n                  : renderCustomContent(key)}\n            </TabPanel>\n          );\n        })}\n      </Tabs>\n    </Box>\n  );\n};\n","import { useEffect, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { MarketsTabName } from \"../../type\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useTabSort } from \"../shared/hooks/useTabSort\";\n\nexport type DropDownMarketsScriptReturn = ReturnType<\n  typeof useDropDownMarketsScript\n>;\n\nconst DROPDOWN_MARKETS_SEL_TAB_KEY = \"orderly_dropdown_markets_sel_tab_key\";\n\nconst DROPDOWN_MARKETS_TAB_SORT_STORAGE_KEY =\n  \"orderly_dropdown_markets_tab_sort\";\n\nexport function useDropDownMarketsScript() {\n  const [open, setOpen] = useState(false);\n\n  const [activeTab, setActiveTab] = useLocalStorage(\n    DROPDOWN_MARKETS_SEL_TAB_KEY,\n    MarketsTabName.All,\n  );\n\n  const { tabSort, onTabSort } = useTabSort({\n    storageKey: DROPDOWN_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n\n  const { clearSearchValue } = useMarketsContext();\n\n  const hide = () => {\n    setOpen(false);\n  };\n\n  useEffect(() => {\n    clearSearchValue?.();\n  }, [activeTab]);\n\n  return {\n    activeTab: activeTab as MarketsTabName,\n    onTabChange: (value: string) => setActiveTab(value as MarketsTabName),\n    open,\n    onOpenChange: setOpen,\n    hide,\n    tabSort,\n    onTabSort,\n  };\n}\n","import React, { PropsWithChildren } from \"react\";\nimport { MarketsProvider, MarketsProviderProps } from \"../marketsProvider\";\nimport { useMarketCategories } from \"../shared/hooks/useMarketCategories\";\nimport { useDropDownMarketsScript } from \"./dropDownMarkets.script\";\nimport { DropDownMarkets, DropDownMarketsProps } from \"./dropDownMarkets.ui\";\n\nexport type DropDownMarketsWidgetProps = MarketsProviderProps &\n  Pick<DropDownMarketsProps, \"contentClassName\">;\n\nexport const DropDownMarketsWidget: React.FC<\n  PropsWithChildren<DropDownMarketsWidgetProps>\n> = (props) => {\n  const state = useDropDownMarketsScript();\n  const tabs = useMarketCategories(\"dropDownMarkets\");\n\n  return (\n    <MarketsProvider\n      symbol={props.symbol}\n      onSymbolChange={props.onSymbolChange}\n      tabs={tabs}\n    >\n      <DropDownMarkets {...state} contentClassName={props.contentClassName}>\n        {props.children}\n      </DropDownMarkets>\n    </MarketsProvider>\n  );\n};\n","export { DropDownMarkets, DropDownMarketsConetnt } from \"./dropDownMarkets.ui\";\nexport { useDropDownMarketsScript } from \"./dropDownMarkets.script\";\nexport { useDropDownMarketsColumns } from \"./column\";\nexport { DropDownMarketsWidget } from \"./dropDownMarkets.widget\";\n","import React from \"react\";\nimport { cn, Flex, Tooltip, Text } from \"@orderly.network/ui\";\n\ninterface DataItemProps {\n  label: string;\n  value: React.ReactNode;\n  hint?: React.ReactNode;\n}\n\nexport const DataItem: React.FC<DataItemProps> = (props) => {\n  const { label, value, hint } = props;\n  return (\n    <Flex direction=\"column\" itemAlign=\"start\">\n      <Tooltip\n        open={hint ? undefined : false}\n        content={hint}\n        className=\"oui-max-w-[330px] oui-bg-base-6 \"\n        arrow={{ className: \"oui-fill-base-6\" }}\n        delayDuration={300}\n      >\n        <Text\n          size=\"2xs\"\n          intensity={36}\n          className={cn(\n            \"oui-data-label\",\n            \"oui-whitespace-nowrap oui-break-normal\",\n            hint &&\n              \"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12\",\n          )}\n        >\n          {label}\n        </Text>\n      </Tooltip>\n      <Text\n        size=\"2xs\"\n        intensity={98}\n        className={cn(\n          \"oui-data-value\",\n          \"oui-whitespace-nowrap oui-break-normal oui-leading-[20px]\",\n        )}\n      >\n        {value}\n      </Text>\n    </Flex>\n  );\n};\n","import React from \"react\";\nimport { cn, Flex, Text, TokenIcon, Divider } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\n\nexport interface MarketItemProps {\n  symbol: string;\n  tickerData: {\n    \"24h_close\": number;\n    change: number;\n    quote_dp: number;\n  };\n  isActive: boolean;\n  onSymbolClick: (symbol: string) => void;\n}\n\nconst MarketItemComponent: React.FC<MarketItemProps> = (props) => {\n  const { symbol, tickerData, isActive, onSymbolClick } = props;\n\n  const handleClick = React.useCallback(() => {\n    onSymbolClick(symbol);\n  }, [symbol, onSymbolClick]);\n\n  return (\n    <Flex\n      direction=\"row\"\n      className={cn(\n        \"oui-me-3 oui-h-[18px] oui-shrink-0 oui-cursor-pointer oui-items-center oui-rounded\",\n        \"oui-transition-all oui-duration-200\",\n      )}\n      onClick={handleClick}\n    >\n      {/* Symbol */}\n      <Flex gapX={1} itemAlign=\"center\" className=\"oui-me-[6px]\">\n        <TokenIcon symbol={symbol} className=\"oui-size-[18px]\" />\n        <SymbolDisplay\n          formatString=\"base\"\n          size=\"2xs\"\n          className=\"oui-text-base-contrast-80\"\n        >\n          {symbol}\n        </SymbolDisplay>\n      </Flex>\n\n      {/* Price */}\n      <Flex gapX={1} className=\"oui-me-[6px]\">\n        <Text.numeral\n          dp={tickerData.quote_dp || 2}\n          size=\"xs\"\n          className=\"oui-text-base-contrast-80\"\n        >\n          {tickerData[\"24h_close\"]}\n        </Text.numeral>\n      </Flex>\n\n      {/* Change */}\n      <Flex gapX={1} className=\"oui-me-3\">\n        <Text.numeral\n          rule=\"percentages\"\n          coloring\n          rm={Decimal.ROUND_DOWN}\n          showIdentifier\n          size=\"xs\"\n        >\n          {tickerData.change}\n        </Text.numeral>\n      </Flex>\n\n      {/* Divider */}\n      <Divider direction=\"vertical\" className=\"oui-h-[18px] oui-border-line\" />\n    </Flex>\n  );\n};\n\n// Memoize the component to prevent unnecessary re-renders\nexport const MarketItem = React.memo<MarketItemProps>(\n  MarketItemComponent,\n  (prevProps, nextProps) => {\n    return (\n      prevProps.symbol === nextProps.symbol &&\n      prevProps.isActive === nextProps.isActive &&\n      prevProps.tickerData[\"24h_close\"] === nextProps.tickerData[\"24h_close\"] &&\n      prevProps.tickerData.change === nextProps.tickerData.change &&\n      prevProps.tickerData.quote_dp === nextProps.tickerData.quote_dp &&\n      prevProps.onSymbolClick === nextProps.onSymbolClick\n    );\n  },\n);\n\nMarketItem.displayName = \"MarketItem\";\n","import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { useMarkets, MarketsType } from \"@orderly.network/hooks\";\nimport type { MarketTabConfig } from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, Flex, Text, cn, Checkbox, Divider } from \"@orderly.network/ui\";\nimport { FilterIcon } from \"../../icons\";\nimport {\n  isBuiltInMarketTab,\n  isCustomMarketTab,\n  resolveTabTitle,\n} from \"../shared/tabUtils\";\nimport type { MarketType } from \"./horizontalMarkets.script\";\n\nexport type DropdownPos = \"top\" | \"bottom\";\n\nexport type MarketTypeFilterProps = {\n  selectedMarketType: MarketType;\n  onMarketTypeChange: (marketType: MarketType) => void;\n  className?: string;\n  position?: DropdownPos;\n  tabs?: MarketTabConfig[];\n};\n\nexport const MarketTypeFilter: React.FC<MarketTypeFilterProps> = (props) => {\n  const {\n    selectedMarketType,\n    onMarketTypeChange,\n    className,\n    position = \"bottom\" as DropdownPos,\n    tabs,\n  } = props;\n  const { t } = useTranslation();\n\n  const orderedOptions = React.useMemo(() => {\n    if (!tabs) return [];\n    return tabs.filter(\n      (tab) =>\n        isCustomMarketTab(tab) ||\n        (isBuiltInMarketTab(tab) && tab.type !== \"favorites\"),\n    );\n  }, [tabs]);\n  const hasFavoritesTab = React.useMemo(() => {\n    return tabs?.some(\n      (tab) => isBuiltInMarketTab(tab) && tab.type === \"favorites\",\n    );\n  }, [tabs]);\n  const [isOpen, setIsOpen] = useState(false);\n  const dropdownRef = useRef<HTMLDivElement>(null);\n\n  // Access shared favorites store for tabs rendering\n  const [, favorite] = useMarkets(MarketsType.FAVORITES);\n  const hasFavorites = (favorite?.favorites?.length || 0) > 0;\n\n  const titleOverrides = React.useMemo<Record<string, string>>(\n    () => ({\n      all: t(\"markets.allMarkets\"),\n      crypto: t(\"markets.crypto\"),\n      newListing: t(\"markets.newListings\"),\n      recent: t(\"markets.recent\"),\n      rwa: t(\"markets.tradFi\"),\n      preTge: t(\"markets.preTge\"),\n    }),\n    [t],\n  );\n\n  const getOptionLabel = useCallback(\n    (tab: MarketTabConfig) =>\n      resolveTabTitle(tab, titleOverrides, titleOverrides.rwa),\n    [titleOverrides],\n  );\n\n  // Handle click outside to close dropdown\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (\n        dropdownRef.current &&\n        !dropdownRef.current.contains(event.target as Node)\n      ) {\n        setIsOpen(false);\n      }\n    };\n\n    if (isOpen) {\n      document.addEventListener(\"mousedown\", handleClickOutside);\n    }\n\n    return () => {\n      document.removeEventListener(\"mousedown\", handleClickOutside);\n    };\n  }, [isOpen]);\n\n  // Open dropdown\n  const handleFilterClick = useCallback(() => {\n    setIsOpen((prev) => !prev);\n  }, []);\n\n  // Handle option click\n  const handleOptionClick = useCallback(\n    (marketType: MarketType) => {\n      onMarketTypeChange(marketType);\n      setIsOpen(false);\n    },\n    [onMarketTypeChange],\n  );\n\n  return (\n    <Box\n      ref={dropdownRef}\n      className={cn(\"oui-relative oui-inline-block\", className)}\n    >\n      {/* Filter Button */}\n      <Flex\n        className={cn(\"oui-cursor-pointer oui-rounded\")}\n        itemAlign=\"center\"\n        onClick={handleFilterClick}\n      >\n        <FilterIcon\n          className={cn(\n            \"oui-size-[18px] oui-text-base-contrast-36 hover:oui-text-base-contrast-80 oui-transition-colors\",\n          )}\n        />\n      </Flex>\n\n      {/* Dropdown Menu */}\n      {isOpen && (\n        <div className=\"oui-text-base-contrast-54\">\n          <Box\n            className={cn(\n              \"oui-absolute oui-start-0 oui-z-50\",\n              \"oui-bg-base-9 oui-border oui-border-line-6 oui-rounded-[12px]\",\n              \"oui-shadow-lg oui-w-[320px] oui-p-5\",\n              // animation\n              \"oui-animate-in oui-fade-in-0 oui-zoom-in-95\",\n              position === \"top\"\n                ? \"oui-bottom-full oui-mb-1 oui-slide-in-from-bottom-2\"\n                : \"oui-top-full oui-mt-1 oui-slide-in-from-top-2\",\n            )}\n          >\n            <Flex direction=\"column\" gapY={3} itemAlign=\"start\">\n              {/* Configured Market Types */}\n              <Flex\n                direction=\"row\"\n                gapX={3}\n                wrap=\"wrap\"\n                gapY={1}\n                className=\"oui-gap-x-2 md:oui-gap-x-3\"\n              >\n                {orderedOptions.map((tab) => {\n                  const optionValue = isCustomMarketTab(tab)\n                    ? tab.id\n                    : tab.type;\n                  const isActive = selectedMarketType === optionValue;\n                  const htmlId = `toggle_market_type_${optionValue}`;\n                  return (\n                    <Flex\n                      key={optionValue}\n                      className={cn(\"oui-cursor-pointer\")}\n                      itemAlign=\"center\"\n                      onClick={() =>\n                        handleOptionClick(optionValue as MarketType)\n                      }\n                    >\n                      <Checkbox\n                        data-testid={`oui-testid-marketType-${optionValue}-checkBox`}\n                        id={htmlId}\n                        className=\"oui-peer\"\n                        color=\"white\"\n                        checked={isActive}\n                      />\n                      <label\n                        htmlFor={htmlId}\n                        className={cn(\n                          \"oui-text-2xs oui-ms-1\",\n                          \"oui-break-normal oui-whitespace-nowrap oui-cursor-pointer\",\n                        )}\n                      >\n                        {getOptionLabel(tab)}\n                      </label>\n                    </Flex>\n                  );\n                })}\n              </Flex>\n\n              {hasFavoritesTab && hasFavorites && (\n                <>\n                  {/* Divider */}\n                  <Divider\n                    className=\"oui-w-full\"\n                    direction=\"horizontal\"\n                    intensity={16}\n                  />\n\n                  {/* Favorites Title */}\n                  <Text className=\"oui-text-xs oui-text-base-contrast-54 oui-font-medium\">\n                    Favorites\n                  </Text>\n\n                  {/* Favorites Tabs as checkbox list */}\n                  <Flex\n                    direction=\"row\"\n                    gapX={3}\n                    wrap=\"wrap\"\n                    gapY={1}\n                    className=\"oui-gap-x-2 md:oui-gap-x-3\"\n                  >\n                    {favorite.favoriteTabs?.slice(0, 10)?.map((tab) => {\n                      const isActiveTab =\n                        selectedMarketType === \"favorites\" &&\n                        favorite.selectedFavoriteTab?.id === tab.id;\n                      const htmlId = `toggle_market_type_favorites_${tab.id}`;\n                      return (\n                        <Flex\n                          key={tab.id}\n                          className={cn(\"oui-cursor-pointer\")}\n                          itemAlign=\"center\"\n                          onClick={() => {\n                            favorite.updateSelectedFavoriteTab(tab);\n                            onMarketTypeChange(\"favorites\");\n                            setIsOpen(false);\n                          }}\n                        >\n                          <Checkbox\n                            data-testid={`oui-testid-marketType-favorites-${tab.id}-checkBox`}\n                            id={htmlId}\n                            className=\"oui-peer\"\n                            color=\"white\"\n                            checked={isActiveTab}\n                          />\n\n                          <label\n                            htmlFor={htmlId}\n                            className={cn(\n                              \"oui-text-2xs oui-ms-1\",\n                              \"oui-break-normal oui-whitespace-nowrap oui-cursor-pointer\",\n                            )}\n                          >\n                            {tab.name}\n                          </label>\n                        </Flex>\n                      );\n                    })}\n                  </Flex>\n                </>\n              )}\n            </Flex>\n          </Box>\n        </div>\n      )}\n    </Box>\n  );\n};\n","import React from \"react\";\nimport { Box, cn, Flex, Marquee } from \"@orderly.network/ui\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport type { HorizontalMarketsScriptReturn } from \"./horizontalMarkets.script\";\nimport { MarketItem } from \"./marketItem.ui\";\nimport { MarketTypeFilter } from \"./marketTypeFilter.ui\";\nimport type { DropdownPos } from \"./marketTypeFilter.ui\";\n\nexport type HorizontalMarketsProps = HorizontalMarketsScriptReturn & {\n  className?: string;\n  dropdownPos?: DropdownPos;\n};\n\nexport const HorizontalMarkets = React.memo<HorizontalMarketsProps>((props) => {\n  const {\n    symbols,\n    tickerData,\n    currentSymbol,\n    onSymbolClick,\n    selectedMarketType,\n    onMarketTypeChange,\n    className,\n    dropdownPos,\n  } = props;\n  const { tabs } = useMarketsContext();\n\n  // Memoize the render function to prevent unnecessary re-renders\n  const renderMarketItem = React.useCallback(\n    (symbol: string, index: number) => {\n      const data = tickerData[symbol];\n      const isActive = currentSymbol === symbol;\n\n      if (!data) {\n        return null;\n      }\n\n      return (\n        <MarketItem\n          key={symbol}\n          symbol={symbol}\n          tickerData={data}\n          isActive={isActive}\n          onSymbolClick={onSymbolClick}\n        />\n      );\n    },\n    [tickerData, currentSymbol, onSymbolClick],\n  );\n\n  const carouselOptions = React.useMemo(\n    () => ({\n      loop: true,\n      align: \"start\" as const,\n      axis: \"x\" as const,\n    }),\n    [],\n  );\n\n  const autoScrollOptions = React.useMemo(\n    () => ({\n      speed: 1,\n      direction: \"forward\" as const,\n      stopOnMouseEnter: true,\n    }),\n    [],\n  );\n\n  return (\n    <Box\n      className={cn(\n        \"oui-horizontal-markets\",\n        \"oui-bg-base-9 oui-rounded-[12px]\",\n        \"oui-w-full oui-px-3 oui-py-2\",\n        className,\n      )}\n    >\n      <Flex\n        direction=\"row\"\n        gapX={3}\n        itemAlign=\"center\"\n        className=\"oui-size-full\"\n      >\n        {/* Filter Button */}\n        <MarketTypeFilter\n          selectedMarketType={selectedMarketType}\n          onMarketTypeChange={onMarketTypeChange}\n          position={dropdownPos}\n          tabs={tabs}\n        />\n\n        {/* Markets List */}\n        <Marquee\n          data={symbols}\n          renderItem={renderMarketItem}\n          carouselOptions={carouselOptions}\n          autoScrollOptions={autoScrollOptions}\n          className=\"oui-h-full\"\n        />\n      </Flex>\n    </Box>\n  );\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n  HorizontalMarkets.displayName = \"HorizontalMarkets\";\n}\n","import type { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport { FundingComparisonWidget } from \"../../../components/fundingComparison\";\nimport { FundingOverviewWidget } from \"../../../components/fundingOverview\";\nimport { SearchInput } from \"../../../components/searchInput\";\nimport { FundingScriptReturn } from \"./funding.script\";\n\nexport const MobileFunding: FC<FundingScriptReturn> = (props) => {\n  const { t } = useTranslation();\n\n  const search = (\n    <SearchInput\n      classNames={{\n        root: cn(\"oui-mb-2 oui-mt-5\"),\n      }}\n    />\n  );\n\n  return (\n    <Box\n      intensity={900}\n      p={3}\n      mt={2}\n      mb={5}\n      r=\"xl\"\n      height=\"100%\"\n      className=\"oui-markets-funding-list\"\n    >\n      <Tabs\n        variant=\"contained\"\n        size=\"lg\"\n        value={props.activeTab}\n        onValueChange={props.onTabChange as (value: string) => void}\n      >\n        <TabPanel\n          classNames={{\n            trigger: \"oui-tabs-funding-overview-trigger\",\n            content: \"oui-tabs-funding-overview-content\",\n          }}\n          title={t(\"common.overview\")}\n          value=\"overview\"\n          testid=\"oui-testid-funding-overview-tab\"\n        >\n          <>\n            {search}\n            <FundingOverviewWidget />\n          </>\n        </TabPanel>\n        <TabPanel\n          classNames={{\n            trigger: \"oui-tabs-funding-comparison-trigger\",\n            content: \"oui-tabs-funding-comparison-content\",\n          }}\n          title={t(\"markets.funding.comparison\")}\n          value=\"comparison\"\n          testid=\"oui-testid-funding-comparison-tab\"\n        >\n          <>\n            {search}\n            <FundingComparisonWidget />\n          </>\n        </TabPanel>\n      </Tabs>\n    </Box>\n  );\n};\n","import { useState } from \"react\";\nimport { FundingTabName } from \"../../../type\";\n\nexport type FundingScriptReturn = ReturnType<typeof useFundingScript>;\n\nexport function useFundingScript() {\n  const [activeTab, setActiveTab] = useState<FundingTabName>(\n    FundingTabName.Overview,\n  );\n\n  return {\n    activeTab,\n    onTabChange: setActiveTab,\n  };\n}\n","import React from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, TabPanel, Tabs } from \"@orderly.network/ui\";\nimport type { FundingScriptReturn } from \"./funding.script\";\n\nconst LazySearchInput = React.lazy(() =>\n  import(\"../../../components/searchInput\").then((mod) => {\n    return { default: mod.SearchInput };\n  }),\n);\n\nconst LazyFundingOverviewWidget = React.lazy(() =>\n  import(\"../../../components/fundingOverview\").then((mod) => {\n    return { default: mod.FundingOverviewWidget };\n  }),\n);\n\nconst LazyFundingComparisonWidget = React.lazy(() =>\n  import(\"../../../components/fundingComparison\").then((mod) => {\n    return { default: mod.FundingComparisonWidget };\n  }),\n);\n\nexport const Funding: React.FC<FundingScriptReturn> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <Box\n      intensity={900}\n      p={6}\n      mt={4}\n      r=\"2xl\"\n      className=\"oui-markets-funding-list\"\n    >\n      <Tabs\n        variant=\"contained\"\n        size=\"lg\"\n        value={props.activeTab}\n        onValueChange={props.onTabChange as (value: string) => void}\n        trailing={\n          <React.Suspense fallback={null}>\n            <LazySearchInput classNames={{ root: \"oui-my-1 oui-w-[240px]\" }} />\n          </React.Suspense>\n        }\n      >\n        <TabPanel\n          classNames={{\n            trigger: \"oui-tabs-funding-overview-trigger\",\n            content: \"oui-tabs-funding-overview-content\",\n          }}\n          title={t(\"common.overview\")}\n          value=\"overview\"\n          testid=\"oui-testid-funding-overview-tab\"\n        >\n          <React.Suspense fallback={null}>\n            <LazyFundingOverviewWidget />\n          </React.Suspense>\n        </TabPanel>\n        <TabPanel\n          classNames={{\n            trigger: \"oui-tabs-funding-comparison-trigger\",\n            content: \"oui-tabs-funding-comparison-content\",\n          }}\n          title={t(\"markets.funding.comparison\")}\n          value=\"comparison\"\n          testid=\"oui-testid-funding-comparison-tab\"\n        >\n          <React.Suspense fallback={null}>\n            <LazyFundingComparisonWidget />\n          </React.Suspense>\n        </TabPanel>\n      </Tabs>\n    </Box>\n  );\n};\n","import React from \"react\";\nimport { useScreen } from \"@orderly.network/ui\";\nimport { MobileFunding } from \"./funding.mobile.ui\";\nimport { useFundingScript } from \"./funding.script\";\nimport { Funding } from \"./funding.ui\";\n\nexport const FundingWidget: React.FC = () => {\n  const state = useFundingScript();\n  const { isMobile } = useScreen();\n  return isMobile ? <MobileFunding {...state} /> : <Funding {...state} />;\n};\n","export { MarketsHeader } from \"./marketsHeader.ui\";\nexport { useMarketsHeaderScript } from \"./marketsHeader.script\";\nexport { MarketsHeaderWidget } from \"./marketsHeader.widget\";\n","export * from \"./pages/home/marketsHeader\";\nexport * from \"./pages/home/marketsDataList\";\n\nexport * from \"./components/marketsListFull\";\nexport * from \"./components/favoritesListFull\";\n\nexport * from \"./components/favoritesDropdownMenu\";\nexport * from \"./components/favoritesTabs\";\nexport * from \"./components/expandMarkets\";\nexport * from \"./components/subMenuMarkets\";\n\nexport * from \"./components/marketsList\";\nexport * from \"./components/fundingOverview\";\nexport * from \"./components/fundingComparison\";\n\nexport * from \"./components/collapseMarkets\";\nexport * from \"./components/sideMarkets\";\nexport * from \"./components/dropDownMarkets\";\nexport * from \"./components/marketsSheet\";\nexport * from \"./components/symbolInfoBar\";\nexport * from \"./components/symbolInfoBarFull\";\nexport * from \"./components/horizontalMarkets\";\n\nexport * from \"./deprecated/newListingList\";\nexport * from \"./deprecated/favoritesList\";\nexport * from \"./deprecated/recentList\";\nexport * from \"./type\";\n\nexport { MarketsHomePage } from \"./pages/home/page\";\nexport { MarketsProvider } from \"./components/marketsProvider\";\nexport { SymbolDisplay } from \"./components/symbolDisplay\";\n\nexport type {\n  BuiltInMarketTab,\n  CustomMarketTab,\n  MarketBuiltInTabType,\n  MarketTabConfig,\n  MarketCategoryConfig,\n  MarketCategoryComponentKey,\n  MarketCategoryContext,\n} from \"./type\";\nexport { builtInTabs } from \"./registry/builtInTabRegistry\";\n","import React from \"react\";\nimport {\n  Box,\n  cn,\n  Tabs,\n  TabPanel,\n  Flex,\n  TokenIcon,\n  Badge,\n  EmptyDataState,\n} from \"@orderly.network/ui\";\nimport { createCommunityBrokerFilter } from \"../../hooks/useCommunityTabs\";\nimport {\n  MarketsTabName,\n  type FavoriteInstance,\n  type SortType,\n} from \"../../type\";\nimport { CommunityBrokerTabs } from \"../communityBrokerTabs\";\nimport { FavoritesTabWidget } from \"../favoritesTabs\";\nimport { MarketsListWidget } from \"../marketsList\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { RwaSubcategoryTabs } from \"../rwaSubcategoryTabs\";\nimport { RwaIconTab } from \"../rwaTab\";\nimport { useFavoritesProps } from \"../shared/hooks/useFavoritesExtraProps\";\nimport { ShowLowVolumeFilter } from \"../shared/showLowVolumeFilter\";\nimport {\n  isBuiltInMarketTab,\n  tabKey,\n  resolveTabTitle,\n  useBuiltInTitles,\n  useCustomTabDataFilters,\n} from \"../shared/tabUtils\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\n\nconst LIST_ROW_COMPACT = \"oui-h-auto\";\nconst TABLE_CLASSNAMES = {\n  scroll: \"oui-px-0\",\n  header: \"oui-hidden oui-h-0 oui-p-0\",\n};\n\nconst LazySearchInput = React.lazy(() =>\n  import(\"../searchInput\").then((mod) => ({ default: mod.SearchInput })),\n);\n\nexport type SubMenuMarketsProps = {\n  activeTab: MarketsTabName;\n  onTabChange: (value: string) => void;\n  className?: string;\n  tabSort: Record<MarketsTabName, SortType | undefined>;\n  onTabSort: (type: MarketsTabName) => (sort?: SortType) => void;\n};\n\nconst cls = \"oui-h-[calc(100%_-_36px)]\";\n\ntype MarketTabPanelProps = {\n  type: MarketsTabName;\n  getColumns: (_favorite: FavoriteInstance, _isFavoritesList: boolean) => any[];\n  initialSort?: SortType;\n  onSort?: (sort?: SortType) => void;\n  dataFilter?: any;\n  renderHeader?: (favorite: FavoriteInstance) => React.ReactNode;\n  emptyView?: React.ReactNode;\n};\n\nconst MarketTabPanel: React.FC<MarketTabPanelProps> = ({\n  type,\n  getColumns,\n  initialSort,\n  onSort,\n  dataFilter,\n  renderHeader,\n  emptyView,\n}) => {\n  return (\n    <div className={cls}>\n      <MarketsListWidget\n        type={type}\n        getColumns={getColumns}\n        tableClassNames={TABLE_CLASSNAMES}\n        rowClassName={LIST_ROW_COMPACT}\n        dataFilter={dataFilter}\n        renderHeader={renderHeader}\n        initialSort={initialSort}\n        onSort={onSort}\n        emptyView={emptyView}\n      />\n    </div>\n  );\n};\n\nexport const SubMenuMarkets: React.FC<SubMenuMarketsProps> = (props) => {\n  const { activeTab, onTabChange, className, tabSort, onTabSort } = props;\n  const { getFavoritesProps } = useFavoritesProps();\n  const builtInTitles = useBuiltInTitles();\n  const { tabs } = useMarketsContext();\n  const tabDataFilters = useCustomTabDataFilters(tabs);\n\n  const getColumns = (\n    _favorite: FavoriteInstance,\n    _isFavoritesList: boolean,\n  ) => {\n    return [\n      {\n        title: \"\",\n        dataIndex: \"symbol\",\n        className: \"oui-p-2\",\n        render: (_: unknown, record: any) => {\n          return (\n            <div className=\"oui-mx-[-8px]\">\n              <Flex gapX={1} itemAlign=\"center\">\n                <TokenIcon symbol={record.symbol} className=\"oui-size-[18px]\" />\n                <SymbolDisplay formatString=\"base\" size=\"2xs\">\n                  {record.symbol}\n                </SymbolDisplay>\n                <Badge size=\"xs\" color=\"primary\">\n                  {record.leverage}x\n                </Badge>\n              </Flex>\n            </div>\n          );\n        },\n      },\n    ];\n  };\n\n  const renderBuiltInContent = (tabType: MarketsTabName) => {\n    if (tabType === MarketsTabName.Rwa) {\n      return (\n        <RwaSubcategoryTabs\n          storageKey=\"orderly_submenu_markets_rwa_sel_sub_tab\"\n          classNames={{\n            tabsList: \"oui-px-1 oui-pt-1 oui-pb-2\",\n            tabsContent: \"oui-h-full\",\n            scrollIndicator: \"oui-mx-1\",\n          }}\n          className={cn(\"oui-subMenuMarkets-rwa-tabs\", cls)}\n          showScrollIndicator\n          renderPanel={(_, dataFilter) => (\n            <MarketTabPanel\n              type={tabType}\n              getColumns={getColumns}\n              dataFilter={dataFilter}\n              initialSort={tabSort[tabType]}\n              onSort={onTabSort(tabType)}\n            />\n          )}\n        />\n      );\n    }\n\n    if (tabType === MarketsTabName.Favorites) {\n      const favProps = getFavoritesProps(MarketsTabName.Favorites) as {\n        dataFilter?: any;\n      };\n\n      return (\n        <MarketTabPanel\n          type={MarketsTabName.Favorites}\n          getColumns={getColumns}\n          dataFilter={favProps?.dataFilter}\n          renderHeader={(favorite) => (\n            <Box className=\"oui-px-1 oui-my-1\">\n              <FavoritesTabWidget favorite={favorite} size=\"sm\" />\n            </Box>\n          )}\n          initialSort={tabSort[MarketsTabName.Favorites]}\n          onSort={onTabSort(MarketsTabName.Favorites)}\n          emptyView={<EmptyDataState />}\n        />\n      );\n    }\n\n    return (\n      <MarketTabPanel\n        type={tabType}\n        getColumns={getColumns}\n        initialSort={tabSort[tabType]}\n        onSort={onTabSort(tabType)}\n      />\n    );\n  };\n\n  const renderCommunityContent = () => {\n    return (\n      <CommunityBrokerTabs\n        storageKey=\"orderly_submenu_markets_community_sel_sub_tab\"\n        classNames={{\n          tabsList: \"oui-px-1 oui-pt-1 oui-pb-2\",\n          tabsContent: \"oui-h-full\",\n          scrollIndicator: \"oui-mx-1\",\n        }}\n        className={cn(\"oui-subMenuMarkets-community-tabs\", cls)}\n        showScrollIndicator\n        renderPanel={(selected) => (\n          <MarketTabPanel\n            type={MarketsTabName.All}\n            getColumns={getColumns}\n            dataFilter={createCommunityBrokerFilter(selected)}\n            initialSort={tabSort[MarketsTabName.Community]}\n            onSort={onTabSort(MarketsTabName.Community)}\n          />\n        )}\n      />\n    );\n  };\n\n  const renderCustomContent = (key: string) => {\n    return (\n      <div className={cls}>\n        <MarketsListWidget\n          type={MarketsTabName.All}\n          getColumns={getColumns}\n          tableClassNames={TABLE_CLASSNAMES}\n          rowClassName={LIST_ROW_COMPACT}\n          dataFilter={(data: any[]) => tabDataFilters[key]?.(data) ?? data}\n          initialSort={tabSort[key as MarketsTabName]}\n          onSort={onTabSort(key as MarketsTabName)}\n        />\n      </div>\n    );\n  };\n\n  return (\n    <Box\n      className={cn(\n        \"oui-subMenuMarkets oui-overflow-hidden oui-bg-base-9 oui-font-semibold\",\n        className,\n      )}\n      height=\"100%\"\n    >\n      <Box className=\"oui-flex oui-min-w-0 oui-items-center oui-gap-x-2 oui-p-1\">\n        <React.Suspense fallback={null}>\n          <LazySearchInput\n            classNames={{\n              root: \"oui-min-w-0 oui-flex-1\",\n            }}\n          />\n        </React.Suspense>\n        <ShowLowVolumeFilter />\n      </Box>\n      <Tabs\n        variant=\"contained\"\n        size=\"md\"\n        value={activeTab}\n        onValueChange={onTabChange}\n        classNames={{\n          tabsList: cn(\"oui-my-1\"),\n          tabsContent: \"oui-h-full\",\n          scrollIndicator: \"oui-mx-1\",\n        }}\n        className={cn(cls, \"oui-subMenuMarkets-tabs oui-my-1.5\")}\n        showScrollIndicator\n      >\n        {tabs?.map((tab, index) => {\n          const key = tabKey(tab, index);\n          const isBuiltIn = isBuiltInMarketTab(tab);\n          const isCommunity =\n            isBuiltIn && tab.type === MarketsTabName.Community;\n\n          return (\n            <TabPanel\n              key={key}\n              classNames={{\n                trigger: `oui-tabs-${key}-trigger`,\n                content: `oui-tabs-${key}-content`,\n              }}\n              title={resolveTabTitle(tab, builtInTitles, <RwaIconTab />)}\n              value={key}\n            >\n              {isCommunity\n                ? renderCommunityContent()\n                : isBuiltIn\n                  ? renderBuiltInContent(tab.type as MarketsTabName)\n                  : renderCustomContent(key)}\n            </TabPanel>\n          );\n        })}\n      </Tabs>\n    </Box>\n  );\n};\n","import React from \"react\";\nimport { MarketsProvider, type MarketsProviderProps } from \"../marketsProvider\";\nimport { useMarketCategories } from \"../shared/hooks/useMarketCategories\";\nimport {\n  useSubMenuMarketsScript,\n  type SubMenuMarketsScriptOptions,\n} from \"./subMenuMarkets.script\";\nimport { SubMenuMarkets } from \"./subMenuMarkets.ui\";\nimport type { SubMenuMarketsProps } from \"./subMenuMarkets.ui\";\n\nexport type SubMenuMarketsWidgetProps = MarketsProviderProps &\n  SubMenuMarketsScriptOptions &\n  Pick<SubMenuMarketsProps, \"className\">;\n\nexport const SubMenuMarketsWidget: React.FC<SubMenuMarketsWidgetProps> = (\n  props,\n) => {\n  const state = useSubMenuMarketsScript({\n    activeTab: props.activeTab,\n    onTabChange: props.onTabChange,\n  });\n  const tabs = useMarketCategories(\"subMenuMarkets\");\n\n  return (\n    <MarketsProvider\n      symbol={props.symbol}\n      onSymbolChange={props.onSymbolChange}\n      tabs={tabs}\n    >\n      <SubMenuMarkets\n        activeTab={state.activeTab}\n        onTabChange={state.onTabChange}\n        tabSort={state.tabSort}\n        onTabSort={state.onTabSort}\n        className={props.className}\n      />\n    </MarketsProvider>\n  );\n};\n","import { useCallback, useEffect, useState } from \"react\";\nimport { SIDE_MARKETS_TAB_SORT_STORAGE_KEY } from \"../../constant\";\nimport { MarketsTabName } from \"../../type\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useTabSort } from \"../shared/hooks/useTabSort\";\n\nexport type SubMenuMarketsScriptOptions = {\n  activeTab?: MarketsTabName;\n  onTabChange?: (tab: MarketsTabName) => void;\n};\n\nexport type SubMenuMarketsScriptReturn = ReturnType<\n  typeof useSubMenuMarketsScript\n>;\n\nexport function useSubMenuMarketsScript(options?: SubMenuMarketsScriptOptions) {\n  const [activeTab, setActiveTab] = useState<MarketsTabName>(\n    (options?.activeTab ?? MarketsTabName.All) as MarketsTabName,\n  );\n\n  const { clearSearchValue } = useMarketsContext();\n\n  const { tabSort, onTabSort } = useTabSort({\n    storageKey: SIDE_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n\n  const onTabChange = useCallback(\n    (value: string) => {\n      if (typeof options?.onTabChange === \"function\") {\n        options.onTabChange(value as MarketsTabName);\n      } else {\n        setActiveTab(value as MarketsTabName);\n      }\n    },\n    [options?.onTabChange],\n  );\n\n  useEffect(() => {\n    if (options?.activeTab !== undefined) {\n      setActiveTab(options.activeTab as MarketsTabName);\n    }\n  }, [options?.activeTab]);\n\n  useEffect(() => {\n    clearSearchValue?.();\n  }, [activeTab]);\n\n  return {\n    activeTab,\n    onTabChange,\n    tabSort,\n    onTabSort,\n  } as const;\n}\n","export { SideMarkets } from \"./sideMarkets.ui\";\nexport { useSideMarketsScript } from \"./sideMarkets.script\";\nexport { SideMarketsWidget } from \"./sideMarkets.widget\";\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLocalStorage } from \"@orderly.network/hooks\";\nimport { SIDE_MARKETS_TAB_SORT_STORAGE_KEY } from \"../../constant\";\nimport { MarketsTabName } from \"../../type\";\nimport { useTabSort } from \"../shared/hooks/useTabSort\";\n\nexport type SideMarketsScriptOptions = {\n  panelSize?: \"small\" | \"middle\" | \"large\";\n  collapsed?: boolean;\n  onPanelSizeChange?: React.Dispatch<\n    React.SetStateAction<\"small\" | \"middle\" | \"large\">\n  >;\n};\n\nexport type SideMarketsScriptReturn = ReturnType<typeof useSideMarketsScript>;\n\nconst SIDE_MARKETS_SEL_TAB_KEY = \"orderly_side_markets_sel_tab_key\";\n\nexport const useSideMarketsScript = (options?: SideMarketsScriptOptions) => {\n  const [activeTab, setActiveTab] = useLocalStorage(\n    SIDE_MARKETS_SEL_TAB_KEY,\n    MarketsTabName.All,\n  );\n\n  const { tabSort } = useTabSort({\n    storageKey: SIDE_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n\n  const panelSize = useMemo(() => {\n    if (options?.collapsed) {\n      return \"small\";\n    }\n    return options?.panelSize || \"large\";\n  }, [options?.collapsed, options?.panelSize]);\n\n  const onPanelSizeChange = useCallback(\n    (size: \"small\" | \"middle\" | \"large\") => {\n      if (typeof options?.onPanelSizeChange === \"function\") {\n        options.onPanelSizeChange(size);\n      }\n    },\n    [options?.onPanelSizeChange],\n  );\n\n  return {\n    activeTab: activeTab as MarketsTabName,\n    onTabChange: setActiveTab,\n    tabSort: tabSort,\n    panelSize,\n  } as const;\n};\n","import React from \"react\";\nimport { pick } from \"ramda\";\nimport { MarketsProvider, MarketsProviderProps } from \"../marketsProvider\";\nimport { useSideMarketsScript } from \"./sideMarkets.script\";\nimport type { SideMarketsProps } from \"./sideMarkets.ui\";\n\nconst LazySideMarkets = React.lazy(() =>\n  import(\"./sideMarkets.ui\").then((mod) => {\n    return { default: mod.SideMarkets };\n  }),\n);\n\nexport type SideMarketsWidgetProps = MarketsProviderProps &\n  Partial<Pick<SideMarketsProps, \"className\">> & {\n    panelSize?: \"small\" | \"middle\" | \"large\";\n    collapsed?: boolean;\n  };\n\nexport const SideMarketsWidget: React.FC<SideMarketsWidgetProps> = (props) => {\n  const state = useSideMarketsScript(props);\n\n  return (\n    <MarketsProvider {...pick([\"symbol\", \"onSymbolChange\"], props)}>\n      <React.Suspense fallback={null}>\n        <LazySideMarkets {...state} className={props.className} />\n      </React.Suspense>\n    </MarketsProvider>\n  );\n};\n","import { useTranslation } from \"@orderly.network/i18n\";\nimport { Box, cn, TabPanel, Tabs, Text } from \"@orderly.network/ui\";\nimport { createCommunityBrokerFilter } from \"../../hooks/useCommunityTabs\";\nimport { MarketsTabName } from \"../../type\";\nimport { CommunityBrokerTabs } from \"../communityBrokerTabs\";\nimport { MarketsListWidget } from \"../marketsList\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { RwaSubcategoryTabs } from \"../rwaSubcategoryTabs\";\nimport { RwaTab } from \"../rwaTab\";\nimport { SearchInput } from \"../searchInput\";\nimport { useFavoritesProps } from \"../shared/hooks/useFavoritesExtraProps\";\nimport { ShowLowVolumeFilter } from \"../shared/showLowVolumeFilter\";\nimport {\n  isBuiltInMarketTab,\n  tabKey,\n  resolveTabTitle,\n  useBuiltInTitles,\n  useCustomTabDataFilters,\n} from \"../shared/tabUtils\";\nimport { getMarketsSheetColumns } from \"./column\";\nimport { MarketsSheetScriptReturn } from \"./marketsSheet.script\";\n\nexport type MarketsSheetProps = MarketsSheetScriptReturn & {\n  className?: string;\n};\n\nexport const MarketsSheet: React.FC<MarketsSheetProps> = (props) => {\n  const { className, tabSort, onTabSort } = props;\n\n  const { t } = useTranslation();\n\n  const { getFavoritesProps, renderEmptyView } = useFavoritesProps();\n  const { tabs } = useMarketsContext();\n  const builtInTitles = useBuiltInTitles();\n  const tabDataFilters = useCustomTabDataFilters(tabs);\n\n  const renderBuiltInContent = (tabType: MarketsTabName) => {\n    const isFavorites = tabType === MarketsTabName.Favorites;\n\n    if (tabType === MarketsTabName.Rwa) {\n      return (\n        <RwaSubcategoryTabs\n          storageKey=\"orderly_markets_sheet_rwa_sel_sub_tab\"\n          classNames={{\n            tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n            tabsContent: \"oui-h-full\",\n          }}\n          className={cn(\n            \"oui-marketsSheet-rwa-tabs\",\n            \"oui-h-[calc(100%_-_36px)]\",\n          )}\n          showScrollIndicator\n          renderPanel={(_, dataFilter) => (\n            <MarketsListWidget\n              type={tabType}\n              dataFilter={dataFilter}\n              initialSort={tabSort[tabType]}\n              onSort={onTabSort(tabType)}\n              getColumns={getMarketsSheetColumns}\n              tableClassNames={{\n                root: cn(\"oui-marketsSheet-list\", \"!oui-bg-base-8\"),\n                scroll: cn(\n                  \"oui-pb-[env(safe-area-inset-bottom,_20px)]\",\n                  \"oui-h-[calc(100%_-_40px)]\",\n                ),\n              }}\n            />\n          )}\n        />\n      );\n    }\n\n    return (\n      <MarketsListWidget\n        type={tabType}\n        initialSort={tabSort[tabType]}\n        onSort={onTabSort(tabType)}\n        getColumns={getMarketsSheetColumns}\n        tableClassNames={{\n          root: cn(\"oui-marketsSheet-list\", \"!oui-bg-base-8\"),\n          scroll: cn(\n            \"oui-pb-[env(safe-area-inset-bottom,_20px)]\",\n            isFavorites\n              ? \"oui-h-[calc(100%_-_70px)]\"\n              : \"oui-h-[calc(100%_-_40px)]\",\n          ),\n        }}\n        emptyView={renderEmptyView({\n          type: tabType,\n          onClick: () => {\n            props.onTabChange(MarketsTabName.All);\n          },\n        })}\n        {...getFavoritesProps(tabType)}\n      />\n    );\n  };\n\n  const renderCommunityContent = () => {\n    return (\n      <CommunityBrokerTabs\n        storageKey=\"orderly_markets_sheet_community_sel_sub_tab\"\n        classNames={{\n          tabsList: \"oui-px-3 oui-pt-1 oui-pb-2\",\n          tabsContent: \"oui-h-full\",\n        }}\n        className={cn(\n          \"oui-marketsSheet-community-tabs\",\n          \"oui-h-[calc(100%_-_36px)]\",\n        )}\n        showScrollIndicator\n        renderPanel={(selected) => (\n          <MarketsListWidget\n            type={MarketsTabName.All}\n            initialSort={tabSort[MarketsTabName.Community]}\n            onSort={onTabSort(MarketsTabName.Community)}\n            getColumns={getMarketsSheetColumns}\n            tableClassNames={{\n              root: cn(\"oui-marketsSheet-list\", \"!oui-bg-base-8\"),\n              scroll: cn(\n                \"oui-pb-[env(safe-area-inset-bottom,_20px)]\",\n                \"oui-h-[calc(100%_-_40px)]\",\n              ),\n            }}\n            dataFilter={createCommunityBrokerFilter(selected)}\n          />\n        )}\n      />\n    );\n  };\n\n  const renderCustomContent = (key: string) => {\n    return (\n      <MarketsListWidget\n        type={MarketsTabName.All}\n        dataFilter={(data) => tabDataFilters[key]?.(data) ?? data}\n        initialSort={tabSort[key]}\n        onSort={onTabSort(key as MarketsTabName)}\n        getColumns={getMarketsSheetColumns}\n        tableClassNames={{\n          root: cn(\"oui-marketsSheet-list\", \"!oui-bg-base-8\"),\n          scroll: cn(\n            \"oui-pb-[env(safe-area-inset-bottom,_20px)]\",\n            \"oui-h-[calc(100%_-_40px)]\",\n          ),\n        }}\n      />\n    );\n  };\n\n  return (\n    <Box\n      height=\"100%\"\n      className={cn(\"oui-markets-marketsSheet\", \"oui-font-semibold\", className)}\n    >\n      <Box className=\"oui-marketsSheet-header\" px={3} mt={3} mb={2}>\n        <Text size=\"base\" intensity={80}>\n          {t(\"common.markets\")}\n        </Text>\n        <div className=\"oui-mt-4 oui-flex oui-min-w-0 oui-items-center oui-gap-x-2\">\n          <SearchInput\n            classNames={{\n              root: \"oui-marketsSheet-search-input oui-min-w-0 oui-flex-1\",\n            }}\n          />\n          <ShowLowVolumeFilter />\n        </div>\n      </Box>\n\n      <Tabs\n        variant=\"contained\"\n        size=\"md\"\n        value={props.activeTab}\n        onValueChange={props.onTabChange as (tab: string) => void}\n        classNames={{\n          tabsList: cn(\"oui-my-[6px]\"),\n          tabsContent: \"oui-h-full\",\n          scrollIndicator: \"oui-mx-3\",\n        }}\n        className={cn(\"oui-marketsSheet-tabs\", \"oui-h-[calc(100%_-_92px)]\")}\n        showScrollIndicator\n      >\n        {tabs?.map((tab, index) => {\n          const key = tabKey(tab, index);\n          const isBuiltIn = isBuiltInMarketTab(tab);\n          const isCommunity =\n            isBuiltIn && tab.type === MarketsTabName.Community;\n\n          return (\n            <TabPanel\n              key={key}\n              classNames={{\n                trigger: `oui-tabs-${key}-trigger`,\n                content: `oui-tabs-${key}-content`,\n              }}\n              title={resolveTabTitle(tab, builtInTitles, <RwaTab />)}\n              value={key}\n            >\n              {isCommunity\n                ? renderCommunityContent()\n                : isBuiltIn\n                  ? renderBuiltInContent(tab.type as MarketsTabName)\n                  : renderCustomContent(key)}\n            </TabPanel>\n          );\n        })}\n      </Tabs>\n    </Box>\n  );\n};\n","import { Column } from \"@orderly.network/ui\";\nimport { FavoriteInstance } from \"../../type\";\nimport {\n  get24hVolOIColumn,\n  getLastAnd24hPercentageColumn,\n  getSymbolColumn,\n} from \"../shared/column\";\n\nexport const getMarketsSheetColumns = (\n  favorite: FavoriteInstance,\n  isFavoriteList = false,\n) => {\n  return [\n    getSymbolColumn(favorite, isFavoriteList, {\n      stackLeverageInSecondRow: true,\n    }),\n    get24hVolOIColumn(),\n    getLastAnd24hPercentageColumn(favorite, isFavoriteList),\n  ] as Column[];\n};\n","import { useLocalStorage } from \"@orderly.network/hooks\";\nimport { SIDE_MARKETS_TAB_SORT_STORAGE_KEY } from \"../../constant\";\nimport { MarketsTabName } from \"../../type\";\nimport { useTabSort } from \"../shared/hooks/useTabSort\";\n\nexport type MarketsSheetScriptReturn = ReturnType<typeof useMarketsSheetScript>;\n\nconst MARKETS_SHEET_SEL_TAB_KEY = \"orderly_markets_sheet_sel_tab_key\";\n\nexport function useMarketsSheetScript() {\n  const { tabSort, onTabSort } = useTabSort({\n    storageKey: SIDE_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n\n  const [activeTab, setActiveTab] = useLocalStorage(\n    MARKETS_SHEET_SEL_TAB_KEY,\n    MarketsTabName.All,\n  );\n\n  return {\n    tabSort,\n    onTabSort,\n    activeTab,\n    onTabChange: setActiveTab,\n  };\n}\n","import React from \"react\";\nimport { MarketsProvider, MarketsProviderProps } from \"../marketsProvider\";\nimport { useMarketCategories } from \"../shared/hooks/useMarketCategories\";\nimport { useMarketsSheetScript } from \"./marketsSheet.script\";\nimport { MarketsSheet, MarketsSheetProps } from \"./marketsSheet.ui\";\n\nexport type MarketsSheetWidgetProps = MarketsProviderProps &\n  Partial<Pick<MarketsSheetProps, \"className\">>;\n\nexport const MarketsSheetWidget: React.FC<MarketsSheetWidgetProps> = (\n  props,\n) => {\n  const state = useMarketsSheetScript();\n  const tabs = useMarketCategories(\"marketsSheet\");\n\n  return (\n    <MarketsProvider\n      symbol={props.symbol}\n      onSymbolChange={props.onSymbolChange}\n      tabs={tabs}\n    >\n      <MarketsSheet {...state} className={props.className} />\n    </MarketsProvider>\n  );\n};\n","import { FC, ReactNode } from \"react\";\nimport { Flex, Text, cn, Divider, Badge, TokenIcon } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport { TriangleDownIcon } from \"../../icons\";\nimport { MarketsProviderProps } from \"../marketsProvider\";\nimport { SymbolBadge } from \"../symbolBadge\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\nimport { RwaTooltip } from \"../symbolInfoBarFull/rwaTooltip\";\nimport { UseSymbolInfoBarScriptReturn } from \"./symbolInfoBar.script\";\n\nexport type Layout = \"left\" | \"right\";\n\nexport type SymbolInfoBarProps = Pick<MarketsProviderProps, \"onSymbolChange\"> &\n  UseSymbolInfoBarScriptReturn & {\n    className?: string;\n    trailing?: ReactNode;\n    onSymbol?: () => void;\n  };\n\nexport const SymbolInfoBar: FC<SymbolInfoBarProps> = (props) => {\n  const {\n    symbol,\n    data,\n    leverage,\n    onSymbol,\n    isRwa,\n    open,\n    closeTimeInterval,\n    openTimeInterval,\n  } = props;\n\n  const symbolView = (\n    <Flex\n      className=\"oui-h-5 oui-cursor-pointer oui-gap-x-[6px]\"\n      onClick={onSymbol}\n    >\n      <SymbolDisplay formatString=\"base\" size=\"sm\" showBadge={false}>\n        {symbol}\n      </SymbolDisplay>\n      <TriangleDownIcon className=\"oui-size-[14px] oui-text-base-contrast-54\" />\n    </Flex>\n  );\n\n  return (\n    <Flex\n      intensity={900}\n      mx={1}\n      px={3}\n      py={2}\n      className={cn(\n        \"oui-symbol-info-bar-mobile\",\n        \"oui-h-full oui-font-semibold oui-rounded-xl\",\n        props.className,\n      )}\n    >\n      <Flex gapX={3} className=\"oui-h-full oui-flex-1 oui-overflow-hidden\">\n        <Flex gapX={3}>\n          <TokenIcon symbol={symbol} size=\"xs\" />\n          <Flex direction=\"column\" itemAlign=\"start\" gap={1}>\n            {symbolView}\n            <Flex gap={1}>\n              <Badge size=\"xs\" color=\"primary\">\n                {leverage}x\n              </Badge>\n              <SymbolBadge symbol={symbol} />\n            </Flex>\n            <RwaTooltip\n              isRwa={isRwa}\n              open={open}\n              closeTimeInterval={closeTimeInterval}\n              openTimeInterval={openTimeInterval}\n            />\n          </Flex>\n        </Flex>\n\n        <Divider className=\"oui-h-[38px]\" direction=\"vertical\" intensity={8} />\n        <Text.numeral\n          size=\"2xs\"\n          rule=\"percentages\"\n          coloring\n          rm={Decimal.ROUND_DOWN}\n          showIdentifier\n        >\n          {data?.[\"change\"]!}\n        </Text.numeral>\n      </Flex>\n      {props.trailing}\n    </Flex>\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport React from \"react\";\nimport { Trans, useTranslation } from \"@orderly.network/i18n\";\nimport { Flex, Tooltip, Text, cn, modal } from \"@orderly.network/ui\";\nimport { useScreen } from \"@orderly.network/ui\";\n\nexport type RwaTooltipProps = {\n  isRwa: boolean;\n  open?: boolean;\n  closeTimeInterval?: number;\n  openTimeInterval?: number;\n};\n\nexport const RwaTooltip = (props: RwaTooltipProps) => {\n  const { isRwa, open, closeTimeInterval, openTimeInterval } = props;\n  const { isMobile } = useScreen();\n  const { t } = useTranslation();\n  const [isOpen, setIsOpen] = useState(false);\n\n  const timeInterval = open ? closeTimeInterval : openTimeInterval;\n  const tooltipContent = useMemo(() => {\n    return <Content open={open} timeInterval={timeInterval} />;\n  }, [open, t, timeInterval]);\n\n  const triggerView = (\n    <Flex\n      r=\"base\"\n      px={2}\n      className={cn(\n        open ? \"oui-bg-success/15\" : \"oui-bg-danger/15\",\n        \"oui-shrink-0\",\n      )}\n    >\n      <Text size=\"2xs\" color={open ? \"success\" : \"danger\"}>\n        {open\n          ? t(\"trading.rwa.marketHours\")\n          : t(\"trading.rwa.outsideMarketHours\")}\n      </Text>\n    </Flex>\n  );\n\n  const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n    e.stopPropagation();\n    e.preventDefault();\n\n    modal.alert({\n      title: open\n        ? t(\"trading.rwa.marketHours\")\n        : t(\"trading.rwa.outsideMarketHours\"),\n      message: <AlertContent open={open} timeInterval={timeInterval} />,\n    });\n  };\n\n  if (!isRwa) {\n    return null;\n  }\n\n  if (isMobile) {\n    return <button onClick={handleClick}>{triggerView}</button>;\n  }\n\n  return (\n    <Tooltip\n      content={tooltipContent}\n      open={isOpen}\n      onOpenChange={setIsOpen}\n      disableHoverableContent={false}\n    >\n      <button\n        onMouseEnter={() => {\n          setIsOpen(true);\n        }}\n        onClick={(e) => {\n          e.stopPropagation();\n          e.preventDefault();\n        }}\n      >\n        {triggerView}\n      </button>\n    </Tooltip>\n  );\n};\n\nconst AlertContent = ({\n  open,\n  timeInterval,\n}: {\n  open?: boolean;\n  timeInterval?: number;\n}) => {\n  const [innerTimeInterval, setInnerTimeInterval] = useState(timeInterval);\n\n  useEffect(() => {\n    setInnerTimeInterval(timeInterval);\n  }, [timeInterval]);\n\n  useEffect(() => {\n    if (!innerTimeInterval || innerTimeInterval <= 0) {\n      return;\n    }\n\n    const id = setInterval(() => {\n      setInnerTimeInterval((prev) => {\n        if (!prev || prev <= 1) {\n          return 0;\n        }\n        return prev - 1;\n      });\n    }, 1000);\n    return () => {\n      clearInterval(id);\n    };\n  }, [innerTimeInterval]);\n\n  return <Content open={open} timeInterval={innerTimeInterval} />;\n};\n\nconst Content = ({\n  open,\n  timeInterval,\n}: {\n  open?: boolean;\n  timeInterval?: number;\n}) => {\n  const { t } = useTranslation();\n  return (\n    <Flex\n      direction=\"column\"\n      gapY={1}\n      className=\"oui-text-2xs oui-max-w-[275px]\"\n      itemAlign=\"start\"\n      py={1}\n    >\n      {open\n        ? t(\"trading.rwa.tooltip.description.open\")\n        : t(\"trading.rwa.tooltip.description.close\")}\n\n      <div className=\"oui-text-base-contrast-54\">\n        {timeInterval && (\n          <Trans\n            i18nKey={\n              !open\n                ? \"trading.rwa.tooltip.openIn\"\n                : \"trading.rwa.tooltip.closeIn\"\n            }\n            values={{ timeFormat: timeInterval }}\n            components={[\n              // @ts-ignore\n              <CountdownText key=\"0\" />,\n            ]}\n          />\n        )}\n      </div>\n      {/* TODO: wait for rwa detail page to be ready */}\n      {/* <a\n        href=\"https://orderly.network/rwa\"\n        target=\"_blank\"\n        className=\"oui-flex oui-items-center oui-gap-x-1 oui-text-primary-darken oui-cursor-pointer\"\n        onClick={(e) => {\n          e.stopPropagation();\n          console.log(\"Link clicked in tooltip\");\n        }}\n      >\n        {t(\"trading.rwa.tooltip.checkDetailRules\")}\n        <ArrowRightShortIcon color=\"primary\" opacity={1} />\n      </a> */}\n    </Flex>\n  );\n};\n\nconst CountdownText: React.FC<React.PropsWithChildren> = (props) => {\n  const { children } = props;\n  const { t } = useTranslation();\n  const timeInterval = Number(children);\n\n  // calculate days\n  const days = Math.floor(timeInterval / (60 * 60 * 24));\n  const daysStr = days.toString().padStart(2, \"0\");\n\n  // calculate hours\n  const hours = Math.floor((timeInterval % (60 * 60 * 24)) / (60 * 60));\n  const hoursStr = hours.toString().padStart(2, \"0\");\n\n  // calculate minutes\n  const minutes = Math.floor((timeInterval % (60 * 60)) / 60);\n  const minutesStr = minutes.toString().padStart(2, \"0\");\n\n  // calculate seconds\n  const seconds = timeInterval % 60;\n  const secondsStr = seconds.toString().padStart(2, \"0\");\n\n  return (\n    <span className=\"oui-text-base-contrast oui-px-1\">\n      {days > 0 ? (\n        <span>\n          {daysStr}\n          <span className=\"oui-text-base-contrast-54 oui-me-1 oui-ms-[2px]\">\n            {t(\"common.dayShort\")}\n          </span>\n        </span>\n      ) : (\n        \"\"\n      )}\n      {hoursStr}:{minutesStr}:{secondsStr}\n    </span>\n  );\n};\n","import { useMemo } from \"react\";\nimport {\n  useGetRwaSymbolInfo,\n  useSymbolsInfo,\n  useTickerStream,\n} from \"@orderly.network/hooks\";\n\nexport type UseSymbolInfoBarScriptOptions = {\n  symbol: string;\n};\n\nexport type UseSymbolInfoBarScriptReturn = ReturnType<\n  typeof useSymbolInfoBarScript\n>;\n\nexport function useSymbolInfoBarScript(options: UseSymbolInfoBarScriptOptions) {\n  const { symbol } = options;\n  const { isRwa, open, closeTimeInterval, openTimeInterval } =\n    useGetRwaSymbolInfo(symbol);\n\n  const data = useTickerStream(symbol);\n\n  const symbolsInfo = useSymbolsInfo();\n\n  const leverage = useMemo(() => {\n    const info = symbolsInfo[symbol];\n    const baseImr = info(\"base_imr\");\n    return getLeverage(baseImr);\n  }, [symbol, symbolsInfo]);\n\n  return {\n    symbol,\n    data,\n    leverage,\n    isRwa,\n    open,\n    closeTimeInterval,\n    openTimeInterval,\n  };\n}\n\nfunction getLeverage(base_imr: number) {\n  return base_imr ? 1 / base_imr : undefined;\n}\n","import {\n  useSymbolInfoBarScript,\n  UseSymbolInfoBarScriptOptions,\n} from \"./symbolInfoBar.script\";\nimport { SymbolInfoBar, SymbolInfoBarProps } from \"./symbolInfoBar.ui\";\n\nexport type SymbolInfoBarWidgetPros = UseSymbolInfoBarScriptOptions &\n  Pick<SymbolInfoBarProps, \"className\" | \"trailing\" | \"onSymbol\">;\n\nexport const SymbolInfoBarWidget: React.FC<SymbolInfoBarWidgetPros> = (\n  props,\n) => {\n  const { symbol, ...rest } = props;\n\n  const state = useSymbolInfoBarScript({ symbol });\n  return <SymbolInfoBar {...state} {...rest} />;\n};\n","import React, { ReactNode } from \"react\";\nimport {\n  useBadgeBySymbol,\n  useFundingRate,\n  useSymbolsInfo,\n} from \"@orderly.network/hooks\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport {\n  TokenIcon,\n  Flex,\n  Text,\n  cn,\n  Divider,\n  NewsFillIcon,\n  Box,\n  Tooltip,\n  WarningIcon,\n} from \"@orderly.network/ui\";\nimport { CloseIcon } from \"@orderly.network/ui\";\nimport { Decimal } from \"@orderly.network/utils\";\nimport {\n  ArrowLeftIcon,\n  FavoritesIcon2,\n  TriangleDownIcon,\n  UnFavoritesIcon2,\n} from \"../../icons\";\nimport { FundingRateHintWidget } from \"../fundingRateHint\";\nimport type { MarketsProviderProps } from \"../marketsProvider\";\nimport { SymbolBadge } from \"../symbolBadge\";\nimport { SymbolDisplay } from \"../symbolDisplay\";\nimport { RwaTooltip } from \"./rwaTooltip\";\nimport type { UseSymbolInfoBarFullScriptReturn } from \"./symbolInfoBarFull.script\";\n\nconst LazyDropDownMarketsWidget = React.lazy(() =>\n  import(\"../dropDownMarkets\").then((mod) => {\n    return { default: mod.DropDownMarketsWidget };\n  }),\n);\n\nconst LazyFavoritesDropdownMenuWidget = React.lazy(() =>\n  import(\"../favoritesDropdownMenu\").then((mod) => {\n    return { default: mod.FavoritesDropdownMenuWidget };\n  }),\n);\n\nconst LazyDataItem = React.lazy(() =>\n  import(\"./dataItem.ui\").then((mod) => {\n    return { default: mod.DataItem };\n  }),\n);\n\nconst RISK_NOTICE_LEARN_MORE_URL =\n  \"https://orderly.network/docs/introduction/trade-on-orderly/permissionless-listing\";\n\n/** Part 1: Community-listed risk notice banner */\nexport const SymbolInfoBarRiskNotice: React.FC<{\n  className?: string;\n  visible: boolean;\n  symbolWithBroker: string;\n  brokerName: string;\n  isPreTge?: boolean;\n  /** When true, height follows content instead of fixed 46px (e.g. for mobile) */\n  autoHeight?: boolean;\n}> = ({\n  className,\n  visible,\n  symbolWithBroker,\n  brokerName,\n  isPreTge,\n  autoHeight,\n}) => {\n  const { t } = useTranslation();\n  if (!visible) return null;\n  const contentKey = isPreTge\n    ? \"markets.symbolInfoBar.riskNotice.preLaunch.content\"\n    : \"markets.symbolInfoBar.riskNotice.content\";\n  return (\n    <a\n      href={RISK_NOTICE_LEARN_MORE_URL}\n      target=\"_blank\"\n      rel=\"noopener noreferrer\"\n      className={cn(\n        \"oui-symbol-info-bar-risk-notice oui-w-full oui-bg-warning-darken/10 oui-rounded-none oui-text-warning-darken hover:oui-cursor-pointer oui-block\",\n        className,\n      )}\n    >\n      <Flex\n        itemAlign=\"center\"\n        gap={2}\n        className={\n          autoHeight ? \"oui-min-h-0 oui-py-2 oui-px-2\" : \"oui-h-[46px] oui-px-3\"\n        }\n      >\n        <WarningIcon className=\"oui-shrink-0 oui-size-4 oui-text-warning-darken\" />\n        <Text size=\"xs\" className=\"oui-text-warning-darken oui-flex-1\">\n          {t(contentKey, {\n            symbolWithBroker,\n            brokerName,\n          })}{\" \"}\n          <span className=\"oui-underline\">{t(\"common.learnMore\")}</span>\n        </Text>\n      </Flex>\n    </a>\n  );\n};\n\n/** Part 2: Desktop info bar (favorites, symbol, last price, scrollable data area) */\ntype SymbolInfoBarDesktopProps = {\n  className?: string;\n  trailing?: ReactNode;\n  leftSection: ReactNode;\n  priceSection: ReactNode;\n  scrollableContent: ReactNode;\n  containerRef: React.LegacyRef<HTMLDivElement>;\n  leadingVisible: boolean;\n  tailingVisible: boolean;\n  onScroll: (direction: string) => void;\n};\n\nconst SymbolInfoBarDesktop: React.FC<SymbolInfoBarDesktopProps> = ({\n  className,\n  trailing,\n  leftSection,\n  priceSection,\n  scrollableContent,\n  containerRef,\n  leadingVisible,\n  tailingVisible,\n  onScroll,\n}) => (\n  <Flex\n    intensity={900}\n    r=\"2xl\"\n    // mt={1}\n    px={3}\n    className={cn(\n      \"oui-symbol-info-bar-desktop\",\n      \"oui-font-semibold\",\n      \"oui-flex-1 oui-w-full\",\n      \"oui-py-2\",\n      className,\n    )}\n    style={{\n      transform: \"translateZ(0)\",\n      willChange: \"transform\",\n    }}\n  >\n    <Flex gapX={6} className=\"oui-h-full oui-flex-1 oui-overflow-hidden\">\n      <Flex gapX={1} className=\"oui-flex-none oui-shrink-0\">\n        {leftSection}\n      </Flex>\n      <Divider className=\"oui-h-[26px]\" direction=\"vertical\" intensity={8} />\n      {priceSection}\n      <div className=\"oui-relative oui-h-full oui-overflow-hidden\">\n        <div\n          ref={containerRef}\n          className=\"oui-hide-scrollbar oui-h-full oui-overflow-x-auto\"\n        >\n          {scrollableContent}\n        </div>\n        <ScrollIndicator leading onClick={onScroll} visible={leadingVisible} />\n        <ScrollIndicator tailing onClick={onScroll} visible={tailingVisible} />\n      </div>\n    </Flex>\n    {trailing}\n  </Flex>\n);\n\nexport type Layout = \"left\" | \"right\";\n\nexport type SymbolInfoBarFullProps = Pick<\n  MarketsProviderProps,\n  \"onSymbolChange\"\n> &\n  UseSymbolInfoBarFullScriptReturn & {\n    className?: string;\n    trailing?: ReactNode;\n    closeCountdown?: () => void;\n    showCountdown?: boolean;\n  };\n\nexport const SymbolInfoBarFull: React.FC<SymbolInfoBarFullProps> = (props) => {\n  const {\n    symbol,\n    isFavorite,\n    favorite,\n    data,\n    quotoDp,\n    openInterest,\n    containerRef,\n    leadingElementRef,\n    tailingElementRef,\n    leadingVisible,\n    tailingVisible,\n    onScoll,\n    fundingPeriod,\n    capFunding,\n    floorFunding,\n    isRwa,\n    open,\n    closeTimeInterval,\n    openTimeInterval,\n    closeCountdown,\n    showCountdown,\n  } = props;\n\n  const { t } = useTranslation();\n  const symbolsInfo = useSymbolsInfo();\n  const { brokerId, brokerName, brokerNameRaw, displaySymbolName } =\n    useBadgeBySymbol(symbol);\n  const isPreTge = Boolean(symbolsInfo[symbol]?.(\"is_pretge\"));\n  const isCommunityListed = Boolean(brokerId ?? brokerName);\n  const baseFromSymbol = symbol?.split(\"_\")[1] ?? symbol;\n  const symbolWithBroker =\n    brokerName != null\n      ? `${baseFromSymbol}-${brokerNameRaw}`\n      : (displaySymbolName ?? symbol);\n\n  const favoriteIcon = (\n    <React.Suspense fallback={null}>\n      <LazyFavoritesDropdownMenuWidget row={{ symbol }} favorite={favorite}>\n        <Flex\n          width={12}\n          height={12}\n          justify=\"center\"\n          itemAlign=\"center\"\n          className=\"oui-me-1 oui-cursor-pointer\"\n        >\n          {isFavorite ? (\n            <FavoritesIcon2 className=\"oui-size-3 oui-text-warning-darken\" />\n          ) : (\n            <UnFavoritesIcon2 className=\"oui-size-3 oui-text-base-contrast-36 hover:oui-text-warning-darken\" />\n          )}\n        </Flex>\n      </LazyFavoritesDropdownMenuWidget>\n    </React.Suspense>\n  );\n\n  const symbolView = (\n    <React.Suspense fallback={null}>\n      <Flex\n        direction=\"column\"\n        itemAlign=\"start\"\n        className=\"oui-shrink-0 oui-gap-y-[2px]\"\n      >\n        <LazyDropDownMarketsWidget\n          contentClassName=\"oui-w-[620px] oui-h-[496px]\"\n          symbol={props.symbol}\n          onSymbolChange={props.onSymbolChange}\n        >\n          <Flex direction=\"column\" gap={1}>\n            <Flex gapX={1} className=\"oui-cursor-pointer\">\n              <TokenIcon symbol={symbol} className=\"oui-size-4\" />\n              <SymbolDisplay\n                formatString=\"base\"\n                size=\"xs\"\n                className=\"oui-text-base-contrast\"\n                showBadge={false}\n              >\n                {symbol}\n              </SymbolDisplay>\n              <TriangleDownIcon className=\"oui-text-base-contrast-54\" />\n            </Flex>\n          </Flex>\n        </LazyDropDownMarketsWidget>\n        <Flex gap={1}>\n          <SymbolBadge symbol={symbol} />\n          {isRwa && (\n            <RwaTooltip\n              isRwa={isRwa}\n              open={open}\n              closeTimeInterval={closeTimeInterval}\n              openTimeInterval={openTimeInterval}\n            />\n          )}\n        </Flex>\n      </Flex>\n    </React.Suspense>\n  );\n\n  const price = (\n    <Text.numeral\n      dp={quotoDp || 2}\n      currency=\"$\"\n      size=\"sm\"\n      intensity={98}\n      className=\"oui-data-value\"\n    >\n      {data?.[\"24h_close\"]}\n    </Text.numeral>\n  );\n\n  const change = (\n    <>\n      <Text.numeral coloring rm={Decimal.ROUND_DOWN} showIdentifier>\n        {data?.[\"24h_change\"]!}\n      </Text.numeral>\n      <Text intensity={36}>/</Text>\n      <Text.numeral\n        rule=\"percentages\"\n        coloring\n        rm={Decimal.ROUND_DOWN}\n        showIdentifier\n      >\n        {data?.[\"change\"]!}\n      </Text.numeral>\n    </>\n  );\n\n  const leftSection = (\n    <>\n      {favoriteIcon}\n      {symbolView}\n    </>\n  );\n\n  const priceSection = (\n    <Tooltip\n      content={t(\"markets.symbolInfoBar.lastPrice.tooltip\")}\n      className=\"oui-max-w-[240px]\"\n    >\n      <span className=\"oui-cursor-pointer oui-border-b oui-border-dashed oui-border-line-12 oui-inline-block\">\n        {price}\n      </span>\n    </Tooltip>\n  );\n\n  const scrollableContent = (\n    <Flex gapX={8} height=\"100%\">\n      <div ref={leadingElementRef}>\n        <React.Suspense fallback={null}>\n          <LazyDataItem label={t(\"markets.column.24hChange\")} value={change} />\n        </React.Suspense>\n      </div>\n      <React.Suspense fallback={null}>\n        <LazyDataItem\n          label={t(\"markets.symbolInfoBar.Mark\")}\n          value={\n            <Text.numeral\n              dp={quotoDp}\n              data-testid=\"oui-testid-tokenInfo-markPrice-value\"\n            >\n              {data?.[\"mark_price\"]}\n            </Text.numeral>\n          }\n          hint={t(\"markets.symbolInfoBar.Mark.tooltip\")}\n        />\n      </React.Suspense>\n      <React.Suspense fallback={null}>\n        <LazyDataItem\n          label={t(\"markets.symbolInfoBar.Index\")}\n          value={\n            <Text.numeral dp={quotoDp}>{data?.[\"index_price\"]}</Text.numeral>\n          }\n          hint={t(\"markets.symbolInfoBar.Index.tooltip\")}\n        />\n      </React.Suspense>\n      <React.Suspense fallback={null}>\n        <LazyDataItem\n          label={t(\"markets.symbolInfoBar.24hVolume\")}\n          value={\n            <Text.numeral rule=\"human\" dp={2}>\n              {data?.[\"24h_amount\"]}\n            </Text.numeral>\n          }\n          hint={t(\"markets.symbolInfoBar.24hVolume.tooltip\")}\n        />\n      </React.Suspense>\n      <React.Suspense fallback={null}>\n        <LazyDataItem\n          label={t(\"markets.symbolInfoBar.predFundingRate\")}\n          value={<FundingRate symbol={symbol} />}\n          hint={<FundingRateHintWidget symbol={symbol} />}\n        />\n      </React.Suspense>\n      <div ref={tailingElementRef}>\n        <React.Suspense fallback={null}>\n          <LazyDataItem\n            label={t(\"markets.openInterest\")}\n            value={\n              <>\n                <Text.numeral rule=\"human\" dp={2}>\n                  {openInterest}\n                </Text.numeral>\n                <Text intensity={36}>{` USDC`}</Text>\n              </>\n            }\n            hint={t(\"markets.openInterest.tooltip\")}\n          />\n        </React.Suspense>\n      </div>\n    </Flex>\n  );\n\n  return (\n    <Flex direction=\"column\" className=\"oui-h-full oui-w-full\" gapY={1}>\n      {/* autoHeight: banner text can wrap — fixed 46px row spilled over the chart in compact hosts */}\n      <SymbolInfoBarRiskNotice\n        visible={isCommunityListed}\n        symbolWithBroker={symbolWithBroker}\n        brokerName={brokerNameRaw ?? brokerName ?? \"\"}\n        isPreTge={isPreTge}\n        autoHeight\n      />\n      <SymbolInfoBarDesktop\n        className={props.className}\n        trailing={props.trailing}\n        leftSection={leftSection}\n        priceSection={priceSection}\n        scrollableContent={scrollableContent}\n        containerRef={containerRef}\n        leadingVisible={leadingVisible}\n        tailingVisible={tailingVisible}\n        onScroll={onScoll}\n      />\n      {/* Part 3: RWA countdown */}\n      {showCountdown && (\n        <RwaCountdown\n          closeCountdown={closeCountdown}\n          isRwa={isRwa}\n          open={open}\n          closeTimeInterval={closeTimeInterval}\n        />\n      )}\n    </Flex>\n  );\n};\n\ntype ScrollIndicatorProps = {\n  tailing?: boolean;\n  leading?: boolean;\n  visible?: boolean;\n  onClick?: (direction: string) => void;\n};\n\nconst ScrollIndicator: React.FC<ScrollIndicatorProps> = (props) => {\n  const { visible, leading, tailing, onClick } = props;\n  if (!visible) {\n    return null;\n  }\n\n  return (\n    <button\n      onClick={() => {\n        onClick?.(leading ? \"left\" : \"right\");\n      }}\n      style={{\n        background:\n          \"linear-gradient(90deg, rgb(var(--oui-color-base-10)) 0%, rgb(var(--oui-color-base-10) / 0.60) 65%, rgb(var(--oui-color-base-10) / 0.00) 100%)\",\n      }}\n      className={cn(\n        \"oui-flex oui-w-[80px] oui-items-center\",\n        \"oui-absolute oui-inset-y-0 oui-rounded-s\",\n        leading && \"oui-start-0 oui-ps-1\",\n        tailing && \"oui-end-0 oui-rotate-180 oui-pe-1\",\n      )}\n    >\n      <ArrowLeftIcon className=\"oui-text-base-contrast-54 hover:oui-text-base-contrast-80\" />\n    </button>\n  );\n};\n\nconst FundingRate: React.FC<{ symbol: string }> = ({ symbol }) => {\n  const data = useFundingRate(symbol);\n\n  if (data?.est_funding_rate === null) {\n    return \"--\";\n  }\n\n  return (\n    <div>\n      <Text.numeral unit=\"%\" dp={4} intensity={98}>\n        {data.est_funding_rate!}\n      </Text.numeral>\n      <Text intensity={36} className=\"oui-tabular-nums\">\n        {/* not need to translate  */}\n        {` in ${data.countDown}`}\n      </Text>\n    </div>\n  );\n};\n\nconst RwaCountdown: React.FC<{\n  closeCountdown?: () => void;\n  isRwa: boolean;\n  open: boolean | undefined;\n  closeTimeInterval: number | undefined;\n}> = ({ closeCountdown, isRwa, open, closeTimeInterval }) => {\n  const { t } = useTranslation();\n  if (\n    !isRwa ||\n    closeTimeInterval === undefined ||\n    open === undefined ||\n    closeTimeInterval > 30 * 60\n  ) {\n    return null;\n  }\n  if (!open) {\n    return null;\n  }\n\n  const minutes = closeTimeInterval ? Math.floor(closeTimeInterval / 60) : 0;\n  const minutesStr = minutes.toString().padStart(2, \"0\");\n  const seconds = closeTimeInterval ? closeTimeInterval % 60 : 0;\n  const secondsStr = seconds.toString().padStart(2, \"0\");\n\n  return (\n    <Flex\n      itemAlign=\"center\"\n      px={2}\n      r=\"lg\"\n      className=\"oui-w-full oui-text-warning-darken oui-bg-warning-darken/15 oui-flex-1 oui-my-2 oui-text-sm\"\n    >\n      <Flex className=\"oui-w-full oui-pe-2\">\n        <NewsFillIcon className=\"oui-text-warning-darken\" size={16} />\n        <Flex>\n          {t(\"trading.rwa.countdown.title\")}\n          <Flex className=\"oui-text-base-contrast-54 oui-text-xs oui-font-normal\">\n            <Box\n              ml={2}\n              className=\"oui-bg-base-7 oui-px-1 oui-rounded-md oui-text-base-contrast oui-min-w-[22px] oui-text-center oui-text-xs\"\n            >\n              {minutesStr}\n            </Box>\n            {t(\"common.minuteShort\")}\n            {\" : \"}\n            <Box\n              ml={1}\n              className=\"oui-bg-base-7 oui-px-1 oui-rounded-md oui-text-base-contrast oui-min-w-[22px] oui-text-center oui-text-xs\"\n            >\n              {secondsStr}\n            </Box>\n            {t(\"common.secondShort\")}\n          </Flex>\n        </Flex>\n      </Flex>\n\n      <button className=\"oui-cursor-pointer\" onClick={closeCountdown}>\n        <CloseIcon className=\"oui-text-base-contrast\" size={16} opacity={1} />\n      </button>\n    </Flex>\n  );\n};\n","import { FC } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport { Divider, Flex, Text } from \"@orderly.network/ui\";\nimport { FundingRateHintState } from \"./fundingRateHint.script\";\n\nexport type FundingRateHintProps = FundingRateHintState & {\n  className?: string;\n  style?: React.CSSProperties;\n};\n\nexport const FundingRateHint: FC<FundingRateHintProps> = (props) => {\n  const { t } = useTranslation();\n  const {\n    fundingPeriod,\n    capFunding,\n    floorFunding,\n    lastFundingRate,\n    estFundingFee,\n    lastFundingRateAnnualized,\n    estFundingRateByTimeframe,\n  } = props;\n\n  const renderRow = (\n    label: string,\n    value?: string | number,\n    annualizedValue?: string,\n  ) => {\n    if (!value) {\n      return null;\n    }\n    return (\n      <Flex justify=\"between\" itemAlign={\"center\"} width={\"100%\"}>\n        <Text intensity={54}>\n          {annualizedValue\n            ? `${label}/ ${t(\"trading.fundingRate.annualized\")}`\n            : label}\n        </Text>\n        <Flex itemAlign=\"end\" gap={1} className=\"oui-text-base-contrast-80\">\n          <Text intensity={80}>{value}</Text>\n          {annualizedValue && \" / \"}\n          {annualizedValue && annualizedValue}\n        </Flex>\n      </Flex>\n    );\n  };\n\n  return (\n    <Flex width={\"100%\"} itemAlign={\"center\"} direction=\"column\" gap={1}>\n      {renderRow(\n        t(\"trading.fundingRate.predFundingRate.interval\"),\n        fundingPeriod,\n      )}\n      {renderRow(\n        t(\"trading.fundingRate.predFundingRate.cap\") +\n          \" / \" +\n          t(\"trading.fundingRate.predFundingRate.floor\"),\n        capFunding + \" / \" + floorFunding,\n      )}\n      {renderRow(\n        t(\"trading.fundingRate.lastFundingRate\"),\n        lastFundingRate,\n        lastFundingRateAnnualized,\n      )}\n      {estFundingRateByTimeframe.map(({ timeframe, value }) =>\n        renderRow(\n          t(\"trading.fundingRate.estFundingRateWithTimeframe\", {\n            timeframe: timeframe as string,\n          }),\n          value,\n        ),\n      )}\n      {renderRow(t(\"trading.fundingRate.estimatedFundingFee\"), estFundingFee)}\n      <Divider className=\"oui-w-full\" intensity={8} />\n      {t(\"markets.symbolInfoBar.predFundingRate.tooltip\")}\n    </Flex>\n  );\n};\n","import { useMemo } from \"react\";\nimport {\n  useFundingDetails,\n  useFundingRateBySymbol,\n  usePositionStream,\n} from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nconst TIMEFRAME_CONFIG = [\n  { key: \"1H\", hours: 1 },\n  { key: \"4H\", hours: 4 },\n  { key: \"1D\", hours: 24 },\n  { key: \"7D\", hours: 168 },\n  { key: \"30D\", hours: 720 },\n  { key: \"1Y\", hours: 8760 },\n] as const;\n\nexport const useFundingRateHintScript = (symbol: string) => {\n  const { data: fundingDetails, isLoading: isFundingLoading } =\n    useFundingDetails(symbol);\n\n  const {\n    last_funding_rate,\n    est_funding_rate,\n    next_funding_time,\n    last_funding_rate_timestamp,\n  } = useFundingRateBySymbol(symbol) ?? {};\n\n  const [{ aggregated, rows }] = usePositionStream(symbol);\n\n  const { notional } = aggregated ?? {};\n\n  const fundingPeriod = useMemo(() => {\n    if (!fundingDetails || isFundingLoading) {\n      return \"-\";\n    }\n    return `${fundingDetails.funding_period}h`;\n  }, [fundingDetails, isFundingLoading]);\n\n  const capFunding = useMemo(() => {\n    if (!fundingDetails || isFundingLoading) {\n      return \"-\";\n    }\n    return `${new Decimal(fundingDetails.cap_funding).mul(100).toNumber()}%`;\n  }, [fundingDetails, isFundingLoading]);\n\n  const floorFunding = useMemo(() => {\n    if (!fundingDetails || isFundingLoading) {\n      return \"-\";\n    }\n    return `${new Decimal(fundingDetails.floor_funding).mul(100).toNumber()}%`;\n  }, [fundingDetails, isFundingLoading]);\n\n  const lastFundingRate = useMemo(() => {\n    if (!last_funding_rate) {\n      return undefined;\n    }\n    return `${new Decimal(last_funding_rate).mul(100).toNumber()}%`;\n  }, [last_funding_rate]);\n\n  const estFundingFee = useMemo(() => {\n    if (!est_funding_rate || !notional || rows.length === 0) {\n      return \"--\";\n    }\n\n    return `${new Decimal(est_funding_rate).mul(notional).todp(4).toNumber()}`;\n  }, [est_funding_rate, notional, rows]);\n\n  // Calculate annualized funding rate\n  const calculateAnnualizedRate = (rate: number, intervalHours: number) => {\n    if (!rate || !intervalHours) return undefined;\n    // annualized rate = funding rate * 24h / interval(h) * 365\n    const annualizedRate = new Decimal(rate)\n      .mul(24)\n      .div(intervalHours)\n      .mul(365);\n    // Round down to two decimal places\n    return annualizedRate.todp(2, Decimal.ROUND_DOWN).toNumber();\n  };\n\n  const lastFundingRateAnnualized = useMemo(() => {\n    if (!last_funding_rate || !fundingDetails?.funding_period) {\n      return undefined;\n    }\n    const rate = new Decimal(last_funding_rate).mul(100).toNumber();\n    const annualized = calculateAnnualizedRate(\n      rate,\n      fundingDetails.funding_period,\n    );\n    return annualized ? `${annualized}%` : undefined;\n  }, [last_funding_rate, fundingDetails?.funding_period]);\n\n  const settlementIntervalHours = useMemo(() => {\n    if (!next_funding_time || !last_funding_rate_timestamp) return 8;\n    const diff = next_funding_time - last_funding_rate_timestamp;\n    return diff / 3_600_000;\n  }, [next_funding_time, last_funding_rate_timestamp]);\n\n  const estFundingRateByTimeframe = useMemo(() => {\n    if (\n      est_funding_rate === undefined ||\n      est_funding_rate === null ||\n      settlementIntervalHours <= 0\n    ) {\n      return [];\n    }\n    return TIMEFRAME_CONFIG.map(({ key, hours }) => {\n      const rate = new Decimal(est_funding_rate)\n        .mul(hours)\n        .div(settlementIntervalHours)\n        .mul(100);\n      const str = rate.toFixed(5);\n      const trimmed = str.replace(/\\.?0+$/, \"\") || \"0\";\n      return { timeframe: key, value: `${trimmed}%` };\n    });\n  }, [est_funding_rate, settlementIntervalHours]);\n\n  return useMemo(() => {\n    return {\n      fundingPeriod,\n      capFunding,\n      floorFunding,\n      lastFundingRate,\n      estFundingFee,\n      lastFundingRateAnnualized,\n      estFundingRateByTimeframe,\n    };\n  }, [\n    fundingPeriod,\n    capFunding,\n    floorFunding,\n    lastFundingRate,\n    estFundingFee,\n    lastFundingRateAnnualized,\n    estFundingRateByTimeframe,\n    symbol,\n  ]);\n};\n\nexport type FundingRateHintState = ReturnType<typeof useFundingRateHintScript>;\n","import { useFundingRateHintScript } from \"./fundingRateHint.script\";\nimport { FundingRateHint, FundingRateHintProps } from \"./fundingRateHint.ui\";\n\nexport type FundingRateHintWidgetProps = Pick<\n  FundingRateHintProps,\n  \"style\" | \"className\"\n>;\n\nexport const FundingRateHintWidget: React.FC<\n  FundingRateHintWidgetProps & {\n    symbol: string;\n  }\n> = (props) => {\n  const state = useFundingRateHintScript(props.symbol);\n  return <FundingRateHint {...state} {...props} />;\n};\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n  useFundingDetails,\n  useFundingRate,\n  useGetRwaSymbolInfo,\n  useMarketsStore,\n  useSymbolsInfo,\n  useTickerStream,\n} from \"@orderly.network/hooks\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport type UseSymbolInfoBarFullScriptOptions = {\n  symbol: string;\n};\n\nexport type UseSymbolInfoBarFullScriptReturn = ReturnType<\n  typeof useSymbolInfoBarFullScript\n>;\n\nexport function useSymbolInfoBarFullScript(\n  options: UseSymbolInfoBarFullScriptOptions,\n) {\n  const { symbol } = options;\n\n  const data = useTickerStream(symbol);\n  const fundingRate = useFundingRate(symbol);\n\n  const favorite = useMarketsStore();\n\n  const { isRwa, open, closeTimeInterval, openTimeInterval } =\n    useGetRwaSymbolInfo(symbol);\n\n  const { data: fundingDetails, isLoading: isFundingLoading } =\n    useFundingDetails(symbol);\n\n  const fundingPeriod = useMemo(() => {\n    if (!fundingDetails || isFundingLoading) {\n      return \"-\";\n    }\n    return `${fundingDetails.funding_period}h`;\n  }, [fundingDetails, isFundingLoading]);\n\n  const capFunding = useMemo(() => {\n    if (!fundingDetails || isFundingLoading) {\n      return \"-\";\n    }\n    return `${new Decimal(fundingDetails.cap_funding).mul(100).toNumber()}%`;\n  }, [fundingDetails, isFundingLoading]);\n\n  const floorFunding = useMemo(() => {\n    if (!fundingDetails || isFundingLoading) {\n      return \"-\";\n    }\n    return `${new Decimal(fundingDetails.floor_funding).mul(100).toNumber()}%`;\n  }, [fundingDetails, isFundingLoading]);\n\n  const info = useSymbolsInfo();\n  const quotoDp = info[symbol](\"quote_dp\");\n  const [leadingVisible, setLeadingVisible] = useState(false);\n  const [tailingVisible, setTailingVisible] = useState(false);\n\n  const containerRef = useRef<HTMLDivElement>(null);\n  const leadingElementRef = useRef<HTMLDivElement>(null);\n  const tailingElementRef = useRef<HTMLDivElement>(null);\n\n  const isFavorite = useMemo(\n    () => !!favorite.favorites.find((item) => item.name === symbol),\n    [favorite.favorites, symbol],\n  );\n\n  const openInterest = useMemo(\n    () =>\n      new Decimal(data?.open_interest ?? 0)\n        .mul(data?.index_price ?? 0)\n        .toDecimalPlaces(2)\n        .valueOf(),\n    [data],\n  );\n\n  useEffect(() => {\n    const intersectionObserver = new IntersectionObserver((entries) => {\n      for (let index = 0; index < entries.length; index++) {\n        const item = entries[index];\n        if (item) {\n          if (item.target === leadingElementRef.current) {\n            setLeadingVisible(!item.isIntersecting);\n          }\n\n          if (item.target === tailingElementRef.current) {\n            setTailingVisible(!item.isIntersecting);\n          }\n        }\n      }\n    });\n    if (leadingElementRef.current) {\n      intersectionObserver.observe(leadingElementRef.current);\n    }\n\n    if (tailingElementRef.current) {\n      intersectionObserver.observe(tailingElementRef.current);\n    }\n\n    return () => {\n      intersectionObserver.disconnect();\n    };\n  }, []);\n\n  const onScoll = (direction: string) => {\n    containerRef.current?.scrollBy({\n      left: direction === \"left\" ? -100 : 100,\n      behavior: \"smooth\",\n    });\n  };\n\n  return {\n    symbol,\n    isFavorite,\n    favorite,\n    data,\n    quotoDp,\n    openInterest,\n    fundingRate,\n    containerRef,\n    leadingElementRef,\n    tailingElementRef,\n    leadingVisible,\n    tailingVisible,\n    onScoll,\n    fundingPeriod,\n    capFunding,\n    floorFunding,\n    isRwa,\n    open,\n    closeTimeInterval,\n    openTimeInterval,\n  };\n}\n","import { injectable } from \"@orderly.network/ui\";\nimport { SymbolInfoBarFull } from \"./symbolInfoBarFull.ui\";\n\nexport const SymbolInfoBarFullInjectable = injectable(\n  SymbolInfoBarFull,\n  \"Trading.SymbolInfoBar.Desktop\",\n);\n","import { FC } from \"react\";\nimport { MarketsProviderProps } from \"../marketsProvider\";\nimport { SymbolInfoBarFullInjectable } from \"./symbolInfoBarFull.injectable\";\nimport {\n  useSymbolInfoBarFullScript,\n  UseSymbolInfoBarFullScriptOptions,\n} from \"./symbolInfoBarFull.script\";\nimport { SymbolInfoBarFullProps } from \"./symbolInfoBarFull.ui\";\n\nexport type SymbolInfoBarFullWidgetPros = UseSymbolInfoBarFullScriptOptions &\n  Pick<SymbolInfoBarFullProps, \"className\" | \"trailing\"> &\n  Pick<MarketsProviderProps, \"onSymbolChange\"> & {\n    closeCountdown?: () => void;\n    showCountdown?: boolean;\n  };\n\nexport const SymbolInfoBarFullWidget: FC<SymbolInfoBarFullWidgetPros> = (\n  props,\n) => {\n  const { symbol, ...rest } = props;\n\n  const state = useSymbolInfoBarFullScript({ symbol });\n  return <SymbolInfoBarFullInjectable {...state} {...rest} />;\n};\n","import React from \"react\";\nimport { MarketsProvider, MarketsProviderProps } from \"../marketsProvider\";\nimport { useMarketCategories } from \"../shared/hooks/useMarketCategories\";\nimport { useHorizontalMarketsScript } from \"./horizontalMarkets.script\";\nimport type { MarketType } from \"./horizontalMarkets.script\";\nimport type { HorizontalMarketsProps } from \"./horizontalMarkets.ui\";\nimport type { DropdownPos } from \"./marketTypeFilter.ui\";\n\nconst LazyHorizontalMarkets = React.lazy(() =>\n  import(\"./horizontalMarkets.ui\").then((mod) => {\n    return { default: mod.HorizontalMarkets };\n  }),\n);\n\nexport type HorizontalMarketsWidgetProps = MarketsProviderProps &\n  Partial<Pick<HorizontalMarketsProps, \"symbols\" | \"className\">> & {\n    maxItems?: number;\n    defaultMarketType?: MarketType;\n    dropdownPos?: DropdownPos;\n  };\n\nconst HorizontalMarketsInner: React.FC<\n  Pick<\n    HorizontalMarketsWidgetProps,\n    \"symbols\" | \"maxItems\" | \"defaultMarketType\" | \"className\" | \"dropdownPos\"\n  >\n> = (props) => {\n  const { symbols, maxItems, className, defaultMarketType, dropdownPos } =\n    props;\n  const state = useHorizontalMarketsScript({\n    symbols,\n    maxItems,\n    defaultMarketType,\n  });\n  return (\n    <React.Suspense fallback={null}>\n      <LazyHorizontalMarkets\n        {...state}\n        className={className}\n        dropdownPos={dropdownPos}\n      />\n    </React.Suspense>\n  );\n};\n\nexport const HorizontalMarketsWidget: React.FC<HorizontalMarketsWidgetProps> = (\n  props,\n) => {\n  const {\n    symbols,\n    maxItems,\n    className,\n    defaultMarketType,\n    dropdownPos,\n    ...providerProps\n  } = props;\n\n  const tabs = useMarketCategories(\"horizontalMarkets\");\n\n  return (\n    <MarketsProvider {...providerProps} tabs={tabs}>\n      <HorizontalMarketsInner\n        symbols={symbols}\n        maxItems={maxItems}\n        className={className}\n        defaultMarketType={defaultMarketType}\n        dropdownPos={dropdownPos}\n      />\n    </MarketsProvider>\n  );\n};\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport {\n  useMarkets,\n  MarketsType,\n  useLocalStorage,\n} from \"@orderly.network/hooks\";\nimport { API } from \"@orderly.network/types\";\nimport {\n  SIDE_MARKETS_TAB_SORT_STORAGE_KEY,\n  SIDE_MARKETS_SEL_TAB_KEY,\n} from \"../../constant\";\nimport { MarketsTabName } from \"../../type\";\nimport { sortList } from \"../../utils\";\nimport { useMarketsContext } from \"../marketsProvider\";\nimport { useTabSort } from \"../shared/hooks/useTabSort\";\nimport {\n  getCustomTabDataFilter,\n  isCustomMarketTab,\n  tabKey,\n} from \"../shared/tabUtils\";\n\nexport type MarketType =\n  | \"all\"\n  | \"crypto\"\n  | \"recent\"\n  | \"newListing\"\n  | \"rwa\"\n  | \"preTge\"\n  | \"favorites\"\n  | (string & {});\n\nexport type HorizontalMarketsScriptOptions = {\n  symbols?: string[];\n  maxItems?: number;\n  defaultMarketType?: MarketType;\n};\n\nexport type HorizontalMarketsScriptReturn = ReturnType<\n  typeof useHorizontalMarketsScript\n>;\n\nexport const useHorizontalMarketsScript = (\n  options?: HorizontalMarketsScriptOptions,\n) => {\n  const {\n    symbols: optionSymbols,\n    maxItems: optionMaxItems,\n    defaultMarketType,\n  } = options || {};\n  const { symbol: currentSymbol, onSymbolChange, tabs } = useMarketsContext();\n  const [selectedMarketType, setSelectedMarketType] =\n    useLocalStorage<MarketType>(\n      SIDE_MARKETS_SEL_TAB_KEY,\n      (defaultMarketType || \"all\") as MarketType,\n    );\n  const availableMarketTypes = useMemo<MarketType[]>(\n    () =>\n      tabs?.map((tab, index) => tabKey(tab, index) as MarketType) ?? [\"all\"],\n    [tabs],\n  );\n\n  const MarketsTypeMap: Record<string, MarketsType> = {\n    all: MarketsType.ALL,\n    crypto: MarketsType.CRYPTO,\n    recent: MarketsType.RECENT,\n    newListing: MarketsType.NEW_LISTING,\n    favorites: MarketsType.FAVORITES,\n    rwa: MarketsType.RWA,\n    preTge: MarketsType.PRE_TGE,\n  };\n\n  // For custom categories, fetch all markets and filter by tab match rule.\n  const isCustomCategory =\n    typeof selectedMarketType === \"string\" &&\n    !MarketsTypeMap[selectedMarketType];\n  const marketTypeKey = isCustomCategory\n    ? \"all\"\n    : (selectedMarketType as string) || \"all\";\n  const [markets, favorite] = useMarkets(\n    MarketsTypeMap[marketTypeKey] || MarketsType.ALL,\n  );\n\n  useEffect(() => {\n    if (!availableMarketTypes.includes(selectedMarketType)) {\n      setSelectedMarketType(availableMarketTypes[0] ?? \"all\");\n    }\n  }, [availableMarketTypes, selectedMarketType, setSelectedMarketType]);\n\n  // Resolve the filter for the active custom category.\n  const customCategoryFilter = useMemo(() => {\n    if (!isCustomCategory || !tabs) return null;\n    const customTabs = tabs.filter(isCustomMarketTab);\n    const tab = customTabs.find(\n      (item, index) => tabKey(item, index) === selectedMarketType,\n    );\n    return tab ? (getCustomTabDataFilter(tab) ?? null) : null;\n  }, [isCustomCategory, tabs, selectedMarketType]);\n\n  // Apply the same ordering rules as SideMarkets\n  const filteredMarkets = useMemo(() => {\n    // Custom category: apply the matched tab predicate to all markets.\n    if (isCustomCategory && customCategoryFilter) {\n      return customCategoryFilter(markets);\n    }\n\n    if (selectedMarketType === \"favorites\") {\n      const { favorites, selectedFavoriteTab } = favorite;\n      const symbolsInTab = favorites\n        ?.filter((fav) =>\n          fav.tabs?.some((tab) => tab.id === selectedFavoriteTab.id),\n        )\n        ?.map((fav) => fav.name);\n\n      const map: Record<string, (typeof markets)[number]> = Object.create(null);\n      for (const m of markets) map[m.symbol] = m;\n      return (symbolsInTab || [])\n        .map((s) => map[s])\n        .filter(Boolean) as typeof markets;\n    }\n\n    if (selectedMarketType === \"recent\") {\n      const symbolsInRecent = favorite.recent?.map((r) => r.name) || [];\n      const map: Record<string, (typeof markets)[number]> = Object.create(null);\n      for (const m of markets) map[m.symbol] = m;\n      return symbolsInRecent\n        .map((s) => map[s])\n        .filter(Boolean) as typeof markets;\n    }\n\n    return markets;\n  }, [\n    markets,\n    favorite.favorites,\n    favorite.selectedFavoriteTab,\n    favorite.recent,\n    selectedMarketType,\n    isCustomCategory,\n    customCategoryFilter,\n  ]);\n\n  // Read the tabSort from the same storage used by side markets and apply it\n  const { tabSort } = useTabSort({\n    storageKey: SIDE_MARKETS_TAB_SORT_STORAGE_KEY,\n  });\n  const sortedMarkets = useMemo(() => {\n    const sort = tabSort?.[selectedMarketType as MarketsTabName];\n    return sort ? sortList(filteredMarkets, sort) : filteredMarkets;\n  }, [filteredMarkets, tabSort, selectedMarketType]);\n\n  const symbols = useMemo(() => {\n    const list = optionSymbols\n      ? optionSymbols\n      : sortedMarkets.map((m) => m.symbol);\n    const max = optionMaxItems;\n    if (typeof max === \"number\") {\n      if (max === -1) return list;\n      if (max >= 0) return list.slice(0, max);\n    }\n    return list;\n  }, [sortedMarkets, optionSymbols, optionMaxItems]);\n\n  type TickerData = Record<\n    string,\n    { \"24h_close\": number; change: number; quote_dp: number }\n  >;\n  const tickerData = useMemo<TickerData>(() => {\n    return sortedMarkets.reduce<TickerData>((acc, item) => {\n      acc[item.symbol] = {\n        \"24h_close\": item[\"24h_close\"],\n        change: item.change,\n        quote_dp: item.quote_dp,\n      };\n      return acc;\n    }, {} as TickerData);\n  }, [sortedMarkets]);\n\n  const onSymbolClick = useCallback(\n    (symbol: string) => {\n      const record = sortedMarkets.find((m) => m.symbol === symbol);\n      if (record) {\n        onSymbolChange?.(record as any);\n        favorite.addToHistory(record as any);\n      } else {\n        onSymbolChange?.({ symbol } as API.Symbol);\n      }\n    },\n    [sortedMarkets, favorite, onSymbolChange],\n  );\n\n  const onMarketTypeChange = useCallback(\n    (marketType: MarketType) => {\n      setSelectedMarketType(marketType);\n    },\n    [setSelectedMarketType],\n  );\n\n  return {\n    symbols,\n    tickerData,\n    currentSymbol,\n    onSymbolClick,\n    selectedMarketType,\n    onMarketTypeChange,\n  } as const;\n};\n","export { HorizontalMarketsWidget } from \"./horizontalMarkets.widget\";\nexport { HorizontalMarkets } from \"./horizontalMarkets.ui\";\nexport { MarketTypeFilter } from \"./marketTypeFilter.ui\";\nexport { MarketItem } from \"./marketItem.ui\";\nexport { useHorizontalMarketsScript } from \"./horizontalMarkets.script\";\nexport type { HorizontalMarketsProps } from \"./horizontalMarkets.ui\";\nexport type { HorizontalMarketsWidgetProps } from \"./horizontalMarkets.widget\";\nexport type { MarketTypeFilterProps } from \"./marketTypeFilter.ui\";\nexport type { MarketItemProps } from \"./marketItem.ui\";\nexport type {\n  HorizontalMarketsScriptOptions,\n  HorizontalMarketsScriptReturn,\n  MarketType,\n} from \"./horizontalMarkets.script\";\n","import { FC } from \"react\";\nimport { cn, DataTable } from \"@orderly.network/ui\";\nimport { CollapseMarkets } from \"../../components/collapseMarkets\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { useSideMarketsColumns } from \"../../components/sideMarkets/column\";\nimport { UseNewListingListReturn } from \"./newListingList.script\";\nimport { NewListingListWidgetProps } from \"./widget\";\n\nexport type NewListingListProps = UseNewListingListReturn &\n  NewListingListWidgetProps;\n\nexport const NewListingList: FC<NewListingListProps> = (props) => {\n  const { dataSource, favorite, onSort, loading, getColumns, collapsed } =\n    props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n\n  const sideColumns = useSideMarketsColumns(favorite, false);\n\n  const columns =\n    typeof getColumns === \"function\"\n      ? getColumns(favorite, false)\n      : sideColumns;\n\n  if (collapsed) {\n    return <CollapseMarkets dataSource={dataSource} />;\n  }\n\n  return (\n    <DataTable\n      classNames={{\n        root: props.tableClassNames?.root,\n        body: props.tableClassNames?.body,\n        header: cn(\"oui-h-9\", props.tableClassNames?.header),\n        scroll: props.tableClassNames?.scroll,\n      }}\n      columns={columns}\n      dataSource={dataSource}\n      loading={loading}\n      onRow={(record, index) => {\n        return {\n          className: cn(\"oui-h-[53px]\", props.rowClassName),\n          onClick: () => {\n            onSymbolChange?.(record);\n            favorite.addToHistory(record);\n          },\n        };\n      }}\n      generatedRowKey={(record) => record.symbol}\n      rowSelection={{ [symbol!]: true }}\n      onSort={onSort}\n      manualSorting\n    />\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { MarketsType, useMarkets } from \"@orderly.network/hooks\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { searchBySymbol, useSort } from \"../../utils\";\n\nexport type UseNewListingListReturn = ReturnType<\n  typeof useNewListingListScript\n>;\n\nexport const useNewListingListScript = () => {\n  const [data, favorite] = useMarkets(MarketsType.NEW_LISTING);\n  const [loading, setLoading] = useState(true);\n\n  const { searchValue } = useMarketsContext();\n\n  const { onSort, getSortedList } = useSort();\n\n  const dataSource = useMemo(() => {\n    const searchResults = searchBySymbol(data, searchValue, \"base\");\n    return getSortedList(searchResults);\n  }, [data, searchValue, getSortedList]);\n\n  useEffect(() => {\n    setLoading(false);\n  }, [data]);\n\n  return {\n    loading,\n    dataSource,\n    favorite,\n    onSort,\n  };\n};\n","import { DataTableClassNames } from \"@orderly.network/ui\";\nimport { GetColumns } from \"../../type\";\nimport { useNewListingListScript } from \"./newListingList.script\";\nimport { NewListingList } from \"./newListingList.ui\";\n\nexport type NewListingListWidgetProps = {\n  getColumns?: GetColumns;\n  collapsed?: boolean;\n  tableClassNames?: DataTableClassNames;\n  rowClassName?: string;\n};\n\nexport const NewListingListWidget: React.FC<NewListingListWidgetProps> = (\n  props,\n) => {\n  const state = useNewListingListScript();\n  return <NewListingList {...state} {...props} />;\n};\n","import { FC } from \"react\";\nimport { Box, cn, DataTable } from \"@orderly.network/ui\";\nimport { CollapseMarkets } from \"../../components/collapseMarkets\";\nimport { FavoritesTabWidget } from \"../../components/favoritesTabs\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { useSideMarketsColumns } from \"../../components/sideMarkets/column\";\nimport { UseFavoritesListReturn } from \"./favoritesList.script\";\nimport type { FavoritesListWidgetProps } from \"./widget\";\n\nexport type FavoritesListProps = UseFavoritesListReturn &\n  FavoritesListWidgetProps;\n\nexport const FavoritesList: FC<FavoritesListProps> = (props) => {\n  const { dataSource, favorite, onSort, loading, getColumns, collapsed } =\n    props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n\n  const sideColumns = useSideMarketsColumns(favorite, true);\n\n  const columns =\n    typeof getColumns === \"function\" ? getColumns(favorite, true) : sideColumns;\n\n  if (collapsed) {\n    return <CollapseMarkets dataSource={dataSource} />;\n  }\n\n  return (\n    <>\n      <Box px={3} className=\"oui-my-[6px]\">\n        <FavoritesTabWidget favorite={favorite} size=\"sm\" />\n      </Box>\n\n      <DataTable\n        classNames={{\n          root: props.tableClassNames?.root,\n          body: props.tableClassNames?.body,\n          header: cn(\"oui-h-9\", props.tableClassNames?.header),\n          scroll: props.tableClassNames?.scroll,\n        }}\n        columns={columns}\n        dataSource={dataSource}\n        loading={loading}\n        onRow={(record, index) => {\n          return {\n            className: cn(\"oui-h-[53px]\", props.rowClassName),\n            onClick: () => {\n              onSymbolChange?.(record);\n              favorite.addToHistory(record);\n            },\n          };\n        }}\n        generatedRowKey={(record) => record.symbol}\n        rowSelection={{ [symbol!]: true }}\n        onSort={onSort}\n        manualSorting\n      />\n    </>\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { MarketsType, useMarkets } from \"@orderly.network/hooks\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { searchBySymbol, useSort } from \"../../utils\";\n\nexport type UseFavoritesListReturn = ReturnType<typeof useFavoritesListScript>;\n\nexport const useFavoritesListScript = () => {\n  const [data, favorite] = useMarkets(MarketsType.FAVORITES);\n  const [loading, setLoading] = useState(true);\n\n  const { favorites, selectedFavoriteTab } = favorite;\n\n  const { searchValue } = useMarketsContext();\n\n  const { onSort, getSortedList } = useSort();\n\n  const dataSource = useMemo(() => {\n    const filterList = favorites\n      ?.filter(\n        (item) =>\n          item.tabs?.findIndex((tab) => tab.id === selectedFavoriteTab.id) !==\n          -1,\n      )\n      ?.map((fav) => {\n        const index = data?.findIndex((item) => item.symbol === fav.name);\n        if (index !== -1) {\n          return data[index];\n        }\n        return null;\n      })\n      ?.filter((item) => !!item);\n\n    const searchResults = searchBySymbol(filterList, searchValue, \"base\");\n    return getSortedList(searchResults);\n  }, [data, selectedFavoriteTab, favorites, searchValue, getSortedList]);\n\n  useEffect(() => {\n    setLoading(false);\n  }, [data]);\n\n  return {\n    loading,\n    dataSource,\n    favorite,\n    onSort,\n  };\n};\n","import { DataTableClassNames } from \"@orderly.network/ui\";\nimport { GetColumns } from \"../../type\";\nimport { useFavoritesListScript } from \"./favoritesList.script\";\nimport { FavoritesList } from \"./favoritesList.ui\";\n\nexport type FavoritesListWidgetProps = {\n  getColumns?: GetColumns;\n  collapsed?: boolean;\n  tableClassNames?: DataTableClassNames;\n  rowClassName?: string;\n};\n\nexport const FavoritesListWidget: React.FC<FavoritesListWidgetProps> = (\n  props,\n) => {\n  const state = useFavoritesListScript();\n  return <FavoritesList {...state} {...props} />;\n};\n","import { FC } from \"react\";\nimport { cn, DataTable } from \"@orderly.network/ui\";\nimport { CollapseMarkets } from \"../../components/collapseMarkets\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { useSideMarketsColumns } from \"../../components/sideMarkets/column\";\nimport { UseRecentListReturn } from \"./recentList.script\";\nimport { RecentListWidgetProps } from \"./widget\";\n\nexport type RecentListProps = UseRecentListReturn & RecentListWidgetProps;\n\nexport const RecentList: FC<RecentListProps> = (props) => {\n  const { dataSource, favorite, onSort, loading, getColumns, collapsed } =\n    props;\n\n  const { symbol, onSymbolChange } = useMarketsContext();\n\n  const sideColumns = useSideMarketsColumns(favorite, false);\n\n  const columns =\n    typeof getColumns === \"function\"\n      ? getColumns(favorite, false)\n      : sideColumns;\n\n  if (collapsed) {\n    return <CollapseMarkets dataSource={dataSource} />;\n  }\n\n  return (\n    <DataTable\n      classNames={{\n        root: props.tableClassNames?.root,\n        body: props.tableClassNames?.body,\n        header: cn(\"oui-h-9\", props.tableClassNames?.header),\n        scroll: props.tableClassNames?.scroll,\n      }}\n      columns={columns}\n      dataSource={dataSource}\n      loading={loading}\n      onRow={(record, index) => {\n        return {\n          className: cn(\"oui-h-[53px]\", props.rowClassName),\n          onClick: () => {\n            onSymbolChange?.(record);\n            favorite.addToHistory(record);\n          },\n        };\n      }}\n      generatedRowKey={(record) => record.symbol}\n      rowSelection={{ [symbol!]: true }}\n      onSort={onSort}\n      manualSorting\n    />\n  );\n};\n","import { useEffect, useMemo, useState } from \"react\";\nimport { MarketsType, useMarkets } from \"@orderly.network/hooks\";\nimport { useMarketsContext } from \"../../components/marketsProvider\";\nimport { searchBySymbol, useSort } from \"../../utils\";\n\nexport type UseRecentListReturn = ReturnType<typeof useRecentListScript>;\n\nexport const useRecentListScript = () => {\n  const [data, favorite] = useMarkets(MarketsType.RECENT);\n  const [loading, setLoading] = useState(true);\n\n  const { searchValue } = useMarketsContext();\n\n  const { onSort, getSortedList } = useSort();\n\n  const dataSource = useMemo(() => {\n    const searchResults = searchBySymbol(data, searchValue, \"base\");\n    return getSortedList(searchResults);\n  }, [data, searchValue, getSortedList]);\n\n  useEffect(() => {\n    setLoading(false);\n  }, [data]);\n\n  return {\n    loading,\n    dataSource,\n    favorite,\n    onSort,\n  };\n};\n","import { DataTableClassNames } from \"@orderly.network/ui\";\nimport { GetColumns } from \"../../type\";\nimport { useRecentListScript } from \"./recentList.script\";\nimport { RecentList } from \"./recentList.ui\";\n\nexport type RecentListWidgetProps = {\n  getColumns?: GetColumns;\n  collapsed?: boolean;\n  tableClassNames?: DataTableClassNames;\n  rowClassName?: string;\n};\n\nexport const RecentListWidget: React.FC<RecentListWidgetProps> = (props) => {\n  const state = useRecentListScript();\n  return <RecentList {...state} {...props} />;\n};\n","import React, { FC, useState } from \"react\";\nimport { useTranslation } from \"@orderly.network/i18n\";\nimport type { RouterAdapter } from \"@orderly.network/types\";\nimport { Box, cn, TabPanel, Tabs, useScreen } from \"@orderly.network/ui\";\nimport { LeftNavProps, LeftNavUI } from \"@orderly.network/ui-scaffold\";\nimport {\n  MarketsProvider,\n  type MarketsProviderProps,\n} from \"../../components/marketsProvider\";\nimport { useMarketCategories } from \"../../components/shared/hooks/useMarketCategories\";\nimport { MarketsPageTab } from \"../../type\";\n\nconst LazyMarketsHeaderWidget = React.lazy(() =>\n  import(\"./marketsHeader/marketsHeader.widget\").then((mod) => {\n    return { default: mod.MarketsHeaderWidget };\n  }),\n);\n\nconst LazyMarketsDataListWidget = React.lazy(() =>\n  import(\"./marketsDataList\").then((mod) => {\n    return { default: mod.MarketsDataListWidget };\n  }),\n);\n\nconst LazyFundingWidget = React.lazy(() =>\n  import(\"./funding/funding.widget\").then((mod) => {\n    return { default: mod.FundingWidget };\n  }),\n);\n\nexport type MarketsHomePageProps = MarketsProviderProps & {\n  className?: string;\n};\n\nexport const MarketsHomePage: FC<MarketsHomePageProps> = (props) => {\n  const { isMobile } = useScreen();\n\n  const [activeTab, setActiveTab] = useState<MarketsPageTab>(\n    MarketsPageTab.Markets,\n  );\n  const tabs = useMarketCategories(\"marketsDataList\");\n\n  return (\n    <MarketsProvider\n      symbol={props.symbol}\n      onSymbolChange={props.onSymbolChange}\n      navProps={props.navProps}\n      comparisonProps={props.comparisonProps}\n      tabs={tabs}\n    >\n      <div\n        id=\"oui-markets-home-page\"\n        className={cn(\"oui-font-semibold\", props.className)}\n      >\n        {isMobile ? (\n          <MarketsMobileContent\n            activeTab={activeTab}\n            onTabChange={setActiveTab}\n            navProps={props.navProps}\n          />\n        ) : (\n          <MarketsDesktopContent\n            activeTab={activeTab}\n            onTabChange={setActiveTab}\n          />\n        )}\n      </div>\n    </MarketsProvider>\n  );\n};\n\ntype MarketsContentProps = {\n  activeTab: MarketsPageTab;\n  onTabChange: (value: MarketsPageTab) => void;\n  // only for mobile\n  navProps?: {\n    logo?: {\n      src: string;\n      alt: string;\n    };\n    routerAdapter?: RouterAdapter;\n    leftNav?: LeftNavProps;\n  };\n};\n\nconst MarketsDesktopContent: React.FC<MarketsContentProps> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <Box p={6}>\n      <Tabs\n        size=\"xl\"\n        value={props.activeTab}\n        onValueChange={props.onTabChange as (value: string) => void}\n      >\n        <TabPanel\n          classNames={{\n            trigger: \"oui-tabs-markets-trigger\",\n            content: \"oui-tabs-markets-content\",\n          }}\n          title={t(\"common.markets\")}\n          value={MarketsPageTab.Markets}\n          testid=\"oui-testid-markets-tab\"\n        >\n          <React.Suspense fallback={null}>\n            <LazyMarketsHeaderWidget className=\"oui-mt-4\" />\n          </React.Suspense>\n          <React.Suspense fallback={null}>\n            <LazyMarketsDataListWidget />\n          </React.Suspense>\n        </TabPanel>\n        <TabPanel\n          classNames={{\n            trigger: \"oui-tabs-funding-trigger\",\n            content: \"oui-tabs-funding-content\",\n          }}\n          title={t(\"common.funding\")}\n          value={MarketsPageTab.Funding}\n          testid=\"oui-testid-funding-tab\"\n        >\n          <React.Suspense fallback={null}>\n            <LazyFundingWidget />\n          </React.Suspense>\n        </TabPanel>\n      </Tabs>\n    </Box>\n  );\n};\n\nconst MarketsMobileContent: React.FC<MarketsContentProps> = (props) => {\n  const { t } = useTranslation();\n\n  return (\n    <Tabs\n      size=\"xl\"\n      value={props.activeTab}\n      onValueChange={props.onTabChange as (value: string) => void}\n      classNames={{\n        tabsListContainer: \"oui-border-0\",\n        tabsList: \"oui-mx-6 oui-my-2\",\n        tabsContent: \"oui-px-3\",\n      }}\n      leading={\n        props.navProps?.leftNav && (\n          <LeftNavUI\n            className=\"-oui-me-4 oui-ms-3\"\n            {...props?.navProps?.leftNav}\n            logo={props?.navProps?.logo}\n            routerAdapter={props?.navProps?.routerAdapter}\n          />\n        )\n      }\n    >\n      <TabPanel\n        title={t(\"common.markets\")}\n        value=\"markets\"\n        testid=\"oui-testid-markets-tab\"\n      >\n        <React.Suspense fallback={null}>\n          <LazyMarketsHeaderWidget className=\"oui-mt-2\" />\n        </React.Suspense>\n        <React.Suspense fallback={null}>\n          <LazyMarketsDataListWidget />\n        </React.Suspense>\n      </TabPanel>\n      <TabPanel\n        title={t(\"common.funding\")}\n        value=\"funding\"\n        testid=\"oui-testid-funding-tab\"\n      >\n        <React.Suspense fallback={null}>\n          <LazyFundingWidget />\n        </React.Suspense>\n      </TabPanel>\n    </Tabs>\n  );\n};\n"]}