@@ -4,6 +4,9 @@ import MarketChart from '../charts/MarketChart';
44import ActivityTabs from '../../components/tabs/ActivityTabs' ;
55import ResolveModalButton from '../modals/resolution/ResolveModal' ;
66import BetModalButton from '../modals/bet/BetModal' ;
7+ import TradeCTA from '../TradeCTA' ;
8+ import TradeTabs from '../../components/tabs/TradeTabs' ;
9+ import { BetButton } from '../buttons/trade/BetButtons' ;
710import formatResolutionDate from '../../helpers/formatResolutionDate' ;
811
912function MarketDetailsTable ( {
@@ -21,6 +24,18 @@ function MarketDetailsTable({
2124 refetchData,
2225} ) {
2326 const [ showFullDescription , setShowFullDescription ] = useState ( false ) ;
27+ const [ showBetModal , setShowBetModal ] = useState ( false ) ;
28+
29+ const toggleBetModal = ( ) => setShowBetModal ( prev => ! prev ) ;
30+
31+ const handleTransactionSuccess = ( ) => {
32+ setShowBetModal ( false ) ; // Close modal
33+ if ( refetchData ) {
34+ refetchData ( ) ; // Trigger data refresh
35+ }
36+ } ;
37+
38+ const shouldShowTradeButtons = ! market . isResolved && isLoggedIn && new Date ( market . resolutionDateTime ) > new Date ( ) ;
2439
2540 return (
2641 < div className = 'bg-gray-900 text-gray-300 p-4 rounded-lg shadow-lg w-full' >
@@ -144,20 +159,40 @@ function MarketDetailsTable({
144159 className = 'text-xs px-4 py-2'
145160 />
146161 ) }
147- { ! market . isResolved && isLoggedIn && new Date ( market . resolutionDateTime ) > new Date ( ) && (
148- < BetModalButton
149- marketId = { marketId }
150- token = { token }
151- disabled = { ! token }
152- onTransactionSuccess = { refetchData }
153- className = 'text-xs px-4 py-2'
154- />
162+ { shouldShowTradeButtons && (
163+ < div className = "hidden md:block" >
164+ < BetButton onClick = { toggleBetModal } className = "text-xs px-4 py-2" />
165+ </ div >
155166 ) }
156167 </ div >
157168
158- < div className = 'mx-auto w-full' >
169+ < div className = 'mx-auto w-full mb-4 ' >
159170 < ActivityTabs marketId = { marketId } />
160171 </ div >
172+
173+ { /* Mobile floating CTA */ }
174+ { shouldShowTradeButtons && (
175+ < TradeCTA onClick = { toggleBetModal } disabled = { ! token } />
176+ ) }
177+
178+ { /* Spacer so content doesn't sit under the CTA */ }
179+ < div className = "h-32 md:hidden" />
180+
181+ { /* Shared Trade Modal */ }
182+ { showBetModal && (
183+ < div className = "fixed inset-0 bg-gray-600 bg-opacity-50 flex justify-center items-center z-50" >
184+ < div className = "bet-modal relative bg-blue-900 p-6 rounded-lg text-white m-6 mx-auto" style = { { width : '350px' } } >
185+ < TradeTabs
186+ marketId = { marketId }
187+ token = { token }
188+ onTransactionSuccess = { handleTransactionSuccess }
189+ />
190+ < button onClick = { toggleBetModal } className = "absolute top-0 right-0 mt-4 mr-4 text-gray-400 hover:text-white" >
191+ ✕
192+ </ button >
193+ </ div >
194+ </ div >
195+ ) }
161196 </ div >
162197 ) ;
163198}
0 commit comments