import type { PinnedAsset } from '@vegaprotocol/accounts'; import type { Market } from '@vegaprotocol/markets'; import { OracleBanner } from '@vegaprotocol/markets'; import type { TradingView } from './trade-views'; import { TradingViews } from './trade-views'; import { useState } from 'react'; import { Splash } from '@vegaprotocol/ui-toolkit'; import { NO_MARKET } from './constants'; import AutoSizer from 'react-virtualized-auto-sizer'; import classNames from 'classnames'; import { MarketSuccessorBanner, MarketSuccessorProposalBanner, MarketTerminationBanner, } from '../../components/market-banner'; import { FLAGS } from '@vegaprotocol/environment'; interface TradePanelsProps { market: Market | null; pinnedAsset?: PinnedAsset; } export const TradePanels = ({ market, pinnedAsset }: TradePanelsProps) => { const [view, setView] = useState('candles'); const renderView = () => { const Component = TradingViews[view].component; if (!Component) { throw new Error(`No component for view: ${view}`); } if (!market) return {NO_MARKET}; return ; }; const renderMenu = () => { const viewCfg = TradingViews[view]; if ('menu' in viewCfg) { const Menu = viewCfg.menu; return (
); } return null; }; return (
{FLAGS.SUCCESSOR_MARKETS && ( <> )}
{renderMenu()}
{({ width, height }) => (
{renderView()}
)}
{Object.keys(TradingViews).map((key) => { const isActive = view === key; const className = classNames( 'py-2 px-4 min-w-[100px] capitalize text-sm', { 'bg-vega-clight-500 dark:bg-vega-cdark-500': isActive, } ); return ( ); })}
); };