@agg-market/ui 5.0.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/README.md +42 -27
  2. package/dist/chunk-6I474QXG.mjs +2736 -0
  3. package/dist/chunk-AVHMI47G.mjs +2409 -0
  4. package/dist/chunk-BXW3VIKV.mjs +90 -0
  5. package/dist/{chunk-5K7VXAYM.mjs → chunk-EEQPPN7N.mjs} +2 -4
  6. package/dist/chunk-EERL6BZF.mjs +997 -0
  7. package/dist/chunk-KQKLLL4D.mjs +730 -0
  8. package/dist/chunk-KZOQW6NT.mjs +0 -0
  9. package/dist/chunk-L5U7RGJV.mjs +1211 -0
  10. package/dist/{connect-button.js → chunk-MUB7NYWZ.mjs} +1039 -876
  11. package/dist/chunk-OAJBTVZT.mjs +119 -0
  12. package/dist/{chunk-QDMHLRDY.mjs → chunk-OVQVAUAI.mjs} +167 -40
  13. package/dist/chunk-ZYUJ7YEJ.mjs +645 -0
  14. package/dist/events.d.mts +1 -0
  15. package/dist/events.d.ts +1 -0
  16. package/dist/{event-market-page.js → events.js} +5552 -5315
  17. package/dist/events.mjs +16 -0
  18. package/dist/index.d.mts +1 -79
  19. package/dist/index.d.ts +1 -79
  20. package/dist/index.js +9186 -8374
  21. package/dist/index.mjs +644 -170
  22. package/dist/modals.d.mts +1 -0
  23. package/dist/modals.d.ts +1 -0
  24. package/dist/{onboarding-modal.js → modals.js} +3472 -1335
  25. package/dist/modals.mjs +24 -0
  26. package/dist/pages.d.mts +1 -0
  27. package/dist/pages.d.ts +1 -0
  28. package/dist/pages.js +8590 -0
  29. package/dist/pages.mjs +16 -0
  30. package/dist/primitives.d.mts +1 -0
  31. package/dist/primitives.d.ts +1 -0
  32. package/dist/{market-details.js → primitives.js} +3914 -3741
  33. package/dist/{icon.mjs → primitives.mjs} +70 -9
  34. package/dist/styles.css +1 -1
  35. package/dist/tailwind.css +1 -1
  36. package/dist/trading.d.mts +1 -0
  37. package/dist/trading.d.ts +1 -0
  38. package/dist/{place-order.js → trading.js} +2404 -1409
  39. package/dist/trading.mjs +65 -0
  40. package/dist/types/auth/connect-button-view/connect-button-view.constants.d.mts +31 -0
  41. package/dist/types/auth/connect-button-view/connect-button-view.constants.d.ts +31 -0
  42. package/dist/types/auth/connect-button-view/connect-button-view.types.d.mts +83 -0
  43. package/dist/types/auth/connect-button-view/connect-button-view.types.d.ts +83 -0
  44. package/dist/types/auth/connect-button-view/index.d.mts +7 -0
  45. package/dist/types/auth/connect-button-view/index.d.ts +7 -0
  46. package/dist/types/auth/index.d.mts +1 -0
  47. package/dist/types/auth/index.d.ts +1 -0
  48. package/dist/types/constants.d.mts +1 -0
  49. package/dist/types/constants.d.ts +1 -0
  50. package/dist/types/deposit/deposit-modal.constants.d.mts +9 -0
  51. package/dist/types/deposit/deposit-modal.constants.d.ts +9 -0
  52. package/dist/{deposit-modal.d.mts → types/deposit/deposit-modal.types.d.mts} +3 -10
  53. package/dist/{deposit-modal.d.ts → types/deposit/deposit-modal.types.d.ts} +3 -10
  54. package/dist/types/deposit/index.d.mts +6 -0
  55. package/dist/types/deposit/index.d.ts +6 -0
  56. package/dist/types/deposit/steps/card-deposit.d.mts +7 -0
  57. package/dist/types/deposit/steps/card-deposit.d.ts +7 -0
  58. package/dist/types/deposit/steps/crypto-transfer.d.mts +7 -0
  59. package/dist/types/deposit/steps/crypto-transfer.d.ts +7 -0
  60. package/dist/types/deposit/steps/deposit-method.d.mts +7 -0
  61. package/dist/types/deposit/steps/deposit-method.d.ts +7 -0
  62. package/dist/types/deposit/steps/kalshi-deposit.d.mts +5 -0
  63. package/dist/types/deposit/steps/kalshi-deposit.d.ts +5 -0
  64. package/dist/types/deposit/steps/venue-selection.d.mts +7 -0
  65. package/dist/types/deposit/steps/venue-selection.d.ts +7 -0
  66. package/dist/types/events/index.d.mts +4 -0
  67. package/dist/types/events/index.d.ts +4 -0
  68. package/dist/types/events/item/event-list-item.constants.d.mts +1 -0
  69. package/dist/types/events/item/event-list-item.constants.d.ts +1 -0
  70. package/dist/types/events/item/event-list-item.types.d.mts +46 -0
  71. package/dist/types/events/item/event-list-item.types.d.ts +46 -0
  72. package/dist/types/events/item/event-list-item.utils.d.mts +23 -0
  73. package/dist/types/events/item/event-list-item.utils.d.ts +23 -0
  74. package/dist/types/events/item/index.d.mts +6 -0
  75. package/dist/types/events/item/index.d.ts +6 -0
  76. package/dist/types/events/item-details/event-list-item-details.constants.d.mts +10 -0
  77. package/dist/types/events/item-details/event-list-item-details.constants.d.ts +10 -0
  78. package/dist/types/events/item-details/event-list-item-details.types.d.mts +53 -0
  79. package/dist/types/events/item-details/event-list-item-details.types.d.ts +53 -0
  80. package/dist/types/events/item-details/event-list-item-details.utils.d.mts +26 -0
  81. package/dist/types/events/item-details/event-list-item-details.utils.d.ts +26 -0
  82. package/dist/types/events/item-details/index.d.mts +6 -0
  83. package/dist/types/events/item-details/index.d.ts +6 -0
  84. package/dist/types/events/list/event-list.constants.d.mts +3 -0
  85. package/dist/types/events/list/event-list.constants.d.ts +3 -0
  86. package/dist/types/events/list/event-list.types.d.mts +21 -0
  87. package/dist/types/events/list/event-list.types.d.ts +21 -0
  88. package/dist/types/events/list/event-list.utils.d.mts +6 -0
  89. package/dist/types/events/list/event-list.utils.d.ts +6 -0
  90. package/dist/types/events/list/index.d.mts +6 -0
  91. package/dist/types/events/list/index.d.ts +6 -0
  92. package/dist/types/events/market-details/index.d.mts +6 -0
  93. package/dist/types/events/market-details/index.d.ts +6 -0
  94. package/dist/types/events/market-details/market-details.constants.d.mts +9 -0
  95. package/dist/types/events/market-details/market-details.constants.d.ts +9 -0
  96. package/dist/types/events/market-details/market-details.types.d.mts +63 -0
  97. package/dist/types/events/market-details/market-details.types.d.ts +63 -0
  98. package/dist/types/events/market-details/market-details.utils.d.mts +46 -0
  99. package/dist/types/events/market-details/market-details.utils.d.ts +46 -0
  100. package/dist/types/index.d.mts +9 -0
  101. package/dist/types/index.d.ts +9 -0
  102. package/dist/types/modals/index.d.mts +4 -0
  103. package/dist/types/modals/index.d.ts +4 -0
  104. package/dist/types/onboarding/index.d.mts +11 -0
  105. package/dist/types/onboarding/index.d.ts +11 -0
  106. package/dist/types/onboarding/onboarding-modal.constants.d.mts +10 -0
  107. package/dist/types/onboarding/onboarding-modal.constants.d.ts +10 -0
  108. package/dist/types/onboarding/onboarding-modal.types.d.mts +55 -0
  109. package/dist/types/onboarding/onboarding-modal.types.d.ts +55 -0
  110. package/dist/types/onboarding/steps/connect-accounts.d.mts +5 -0
  111. package/dist/types/onboarding/steps/connect-accounts.d.ts +5 -0
  112. package/dist/types/onboarding/steps/connect-kalshi-modal.d.mts +5 -0
  113. package/dist/types/onboarding/steps/connect-kalshi-modal.d.ts +5 -0
  114. package/dist/types/onboarding/steps/connect-onchain-modal.d.mts +5 -0
  115. package/dist/types/onboarding/steps/connect-onchain-modal.d.ts +5 -0
  116. package/dist/types/onboarding/steps/how-it-works.d.mts +5 -0
  117. package/dist/types/onboarding/steps/how-it-works.d.ts +5 -0
  118. package/dist/types/onboarding/steps/profile-setup.d.mts +5 -0
  119. package/dist/types/onboarding/steps/profile-setup.d.ts +5 -0
  120. package/dist/types/pages/event-market/event-market.types.d.mts +42 -0
  121. package/dist/types/pages/event-market/event-market.types.d.ts +42 -0
  122. package/dist/types/pages/event-market/index.d.mts +6 -0
  123. package/dist/types/pages/event-market/index.d.ts +6 -0
  124. package/dist/types/pages/home/home.constants.d.mts +8 -0
  125. package/dist/types/pages/home/home.constants.d.ts +8 -0
  126. package/dist/{home-page.d.ts → types/pages/home/home.types.d.mts} +8 -18
  127. package/dist/{home-page.d.mts → types/pages/home/home.types.d.ts} +8 -18
  128. package/dist/types/pages/home/home.utils.d.mts +3 -0
  129. package/dist/types/pages/home/home.utils.d.ts +3 -0
  130. package/dist/types/pages/home/index.d.mts +6 -0
  131. package/dist/types/pages/home/index.d.ts +6 -0
  132. package/dist/types/pages/index.d.mts +3 -0
  133. package/dist/types/pages/index.d.ts +3 -0
  134. package/dist/types/pages/user-profile/components/activity-row.d.mts +10 -0
  135. package/dist/types/pages/user-profile/components/activity-row.d.ts +10 -0
  136. package/dist/types/pages/user-profile/components/balance-display.d.mts +12 -0
  137. package/dist/types/pages/user-profile/components/balance-display.d.ts +12 -0
  138. package/dist/types/pages/user-profile/components/balances-card.d.mts +12 -0
  139. package/dist/types/pages/user-profile/components/balances-card.d.ts +12 -0
  140. package/dist/types/pages/user-profile/components/default-avatar.d.mts +8 -0
  141. package/dist/types/pages/user-profile/components/default-avatar.d.ts +8 -0
  142. package/dist/types/pages/user-profile/components/empty-state.d.mts +10 -0
  143. package/dist/types/pages/user-profile/components/empty-state.d.ts +10 -0
  144. package/dist/types/pages/user-profile/components/position-row.d.mts +10 -0
  145. package/dist/types/pages/user-profile/components/position-row.d.ts +10 -0
  146. package/dist/types/pages/user-profile/components/positions-activity.d.mts +14 -0
  147. package/dist/types/pages/user-profile/components/positions-activity.d.ts +14 -0
  148. package/dist/types/pages/user-profile/components/user-info-card.d.mts +11 -0
  149. package/dist/types/pages/user-profile/components/user-info-card.d.ts +11 -0
  150. package/dist/types/pages/user-profile/index.d.mts +6 -0
  151. package/dist/types/pages/user-profile/index.d.ts +6 -0
  152. package/dist/types/pages/user-profile/user-profile.constants.d.mts +9 -0
  153. package/dist/types/pages/user-profile/user-profile.constants.d.ts +9 -0
  154. package/dist/{user-profile-page.d.ts → types/pages/user-profile/user-profile.types.d.mts} +12 -22
  155. package/dist/{user-profile-page.d.mts → types/pages/user-profile/user-profile.types.d.ts} +12 -22
  156. package/dist/types/primitives/badge/badge.constants.d.mts +4 -0
  157. package/dist/types/primitives/badge/badge.constants.d.ts +4 -0
  158. package/dist/types/primitives/badge/badge.types.d.mts +18 -0
  159. package/dist/types/primitives/badge/badge.types.d.ts +18 -0
  160. package/dist/types/primitives/badge/index.d.mts +7 -0
  161. package/dist/types/primitives/badge/index.d.ts +7 -0
  162. package/dist/types/primitives/button/button.constants.d.mts +6 -0
  163. package/dist/types/primitives/button/button.constants.d.ts +6 -0
  164. package/dist/types/primitives/button/button.types.d.mts +12 -0
  165. package/dist/types/primitives/button/button.types.d.ts +12 -0
  166. package/dist/types/primitives/button/index.d.mts +6 -0
  167. package/dist/types/primitives/button/index.d.ts +6 -0
  168. package/dist/types/primitives/card/card.types.d.mts +3 -0
  169. package/dist/types/primitives/card/card.types.d.ts +3 -0
  170. package/dist/types/primitives/card/index.d.mts +6 -0
  171. package/dist/types/primitives/card/index.d.ts +6 -0
  172. package/dist/types/primitives/chart/chart-type-switch.d.mts +10 -0
  173. package/dist/types/primitives/chart/chart-type-switch.d.ts +10 -0
  174. package/dist/{chart.d.mts → types/primitives/chart/index.d.mts} +14 -11
  175. package/dist/{chart.d.ts → types/primitives/chart/index.d.ts} +14 -11
  176. package/dist/types/primitives/hello-world.d.mts +4 -0
  177. package/dist/types/primitives/hello-world.d.ts +4 -0
  178. package/dist/types/primitives/icon/icon.constants.d.mts +2 -0
  179. package/dist/types/primitives/icon/icon.constants.d.ts +2 -0
  180. package/dist/types/primitives/icon/icon.types.d.mts +9 -0
  181. package/dist/types/primitives/icon/icon.types.d.ts +9 -0
  182. package/dist/types/primitives/icon/icon.utils.d.mts +2 -0
  183. package/dist/types/primitives/icon/icon.utils.d.ts +2 -0
  184. package/dist/types/primitives/icon/index.d.mts +53 -0
  185. package/dist/types/primitives/icon/index.d.ts +53 -0
  186. package/dist/types/primitives/icon/registry.d.mts +194 -0
  187. package/dist/types/primitives/icon/registry.d.ts +194 -0
  188. package/dist/types/primitives/icon/svg/apple.d.mts +5 -0
  189. package/dist/types/primitives/icon/svg/apple.d.ts +5 -0
  190. package/dist/types/primitives/icon/svg/arrow-trend-up.d.mts +5 -0
  191. package/dist/types/primitives/icon/svg/arrow-trend-up.d.ts +5 -0
  192. package/dist/types/primitives/icon/svg/arrows-to-dot.d.mts +5 -0
  193. package/dist/types/primitives/icon/svg/arrows-to-dot.d.ts +5 -0
  194. package/dist/types/primitives/icon/svg/bank.d.mts +5 -0
  195. package/dist/types/primitives/icon/svg/bank.d.ts +5 -0
  196. package/dist/types/primitives/icon/svg/best-prices.d.mts +5 -0
  197. package/dist/types/primitives/icon/svg/best-prices.d.ts +5 -0
  198. package/dist/types/primitives/icon/svg/bolt.d.mts +5 -0
  199. package/dist/types/primitives/icon/svg/bolt.d.ts +5 -0
  200. package/dist/types/primitives/icon/svg/chart-candlestick.d.mts +5 -0
  201. package/dist/types/primitives/icon/svg/chart-candlestick.d.ts +5 -0
  202. package/dist/types/primitives/icon/svg/chart-line.d.mts +5 -0
  203. package/dist/types/primitives/icon/svg/chart-line.d.ts +5 -0
  204. package/dist/types/primitives/icon/svg/check-badge.d.mts +5 -0
  205. package/dist/types/primitives/icon/svg/check-badge.d.ts +5 -0
  206. package/dist/types/primitives/icon/svg/check-circle.d.mts +5 -0
  207. package/dist/types/primitives/icon/svg/check-circle.d.ts +5 -0
  208. package/dist/types/primitives/icon/svg/chevron-down.d.mts +5 -0
  209. package/dist/types/primitives/icon/svg/chevron-down.d.ts +5 -0
  210. package/dist/types/primitives/icon/svg/chevron-left.d.mts +5 -0
  211. package/dist/types/primitives/icon/svg/chevron-left.d.ts +5 -0
  212. package/dist/types/primitives/icon/svg/chevron-right.d.mts +5 -0
  213. package/dist/types/primitives/icon/svg/chevron-right.d.ts +5 -0
  214. package/dist/types/primitives/icon/svg/chevron-up.d.mts +5 -0
  215. package/dist/types/primitives/icon/svg/chevron-up.d.ts +5 -0
  216. package/dist/types/primitives/icon/svg/close.d.mts +5 -0
  217. package/dist/types/primitives/icon/svg/close.d.ts +5 -0
  218. package/dist/types/primitives/icon/svg/copy.d.mts +5 -0
  219. package/dist/types/primitives/icon/svg/copy.d.ts +5 -0
  220. package/dist/types/primitives/icon/svg/create-account.d.mts +5 -0
  221. package/dist/types/primitives/icon/svg/create-account.d.ts +5 -0
  222. package/dist/types/primitives/icon/svg/credit-card.d.mts +5 -0
  223. package/dist/types/primitives/icon/svg/credit-card.d.ts +5 -0
  224. package/dist/types/primitives/icon/svg/disconnect.d.mts +5 -0
  225. package/dist/types/primitives/icon/svg/disconnect.d.ts +5 -0
  226. package/dist/types/primitives/icon/svg/discord.d.mts +5 -0
  227. package/dist/types/primitives/icon/svg/discord.d.ts +5 -0
  228. package/dist/types/primitives/icon/svg/document.d.mts +5 -0
  229. package/dist/types/primitives/icon/svg/document.d.ts +5 -0
  230. package/dist/types/primitives/icon/svg/dots-horizontal.d.mts +5 -0
  231. package/dist/types/primitives/icon/svg/dots-horizontal.d.ts +5 -0
  232. package/dist/types/primitives/icon/svg/download.d.mts +5 -0
  233. package/dist/types/primitives/icon/svg/download.d.ts +5 -0
  234. package/dist/types/primitives/icon/svg/email.d.mts +5 -0
  235. package/dist/types/primitives/icon/svg/email.d.ts +5 -0
  236. package/dist/types/primitives/icon/svg/error-filled.d.mts +5 -0
  237. package/dist/types/primitives/icon/svg/error-filled.d.ts +5 -0
  238. package/dist/types/primitives/icon/svg/ethereum.d.mts +5 -0
  239. package/dist/types/primitives/icon/svg/ethereum.d.ts +5 -0
  240. package/dist/types/primitives/icon/svg/external-link.d.mts +5 -0
  241. package/dist/types/primitives/icon/svg/external-link.d.ts +5 -0
  242. package/dist/types/primitives/icon/svg/google.d.mts +5 -0
  243. package/dist/types/primitives/icon/svg/google.d.ts +5 -0
  244. package/dist/types/primitives/icon/svg/info.d.mts +5 -0
  245. package/dist/types/primitives/icon/svg/info.d.ts +5 -0
  246. package/dist/types/primitives/icon/svg/link-accounts.d.mts +5 -0
  247. package/dist/types/primitives/icon/svg/link-accounts.d.ts +5 -0
  248. package/dist/types/primitives/icon/svg/pencil.d.mts +5 -0
  249. package/dist/types/primitives/icon/svg/pencil.d.ts +5 -0
  250. package/dist/types/primitives/icon/svg/play-square.d.mts +5 -0
  251. package/dist/types/primitives/icon/svg/play-square.d.ts +5 -0
  252. package/dist/types/primitives/icon/svg/profile.d.mts +5 -0
  253. package/dist/types/primitives/icon/svg/profile.d.ts +5 -0
  254. package/dist/types/primitives/icon/svg/revenue-alt.d.mts +5 -0
  255. package/dist/types/primitives/icon/svg/revenue-alt.d.ts +5 -0
  256. package/dist/types/primitives/icon/svg/search.d.mts +5 -0
  257. package/dist/types/primitives/icon/svg/search.d.ts +5 -0
  258. package/dist/types/primitives/icon/svg/shield-trust.d.mts +5 -0
  259. package/dist/types/primitives/icon/svg/shield-trust.d.ts +5 -0
  260. package/dist/types/primitives/icon/svg/solana.d.mts +5 -0
  261. package/dist/types/primitives/icon/svg/solana.d.ts +5 -0
  262. package/dist/types/primitives/icon/svg/stay-in-control.d.mts +5 -0
  263. package/dist/types/primitives/icon/svg/stay-in-control.d.ts +5 -0
  264. package/dist/types/primitives/icon/svg/telegram.d.mts +5 -0
  265. package/dist/types/primitives/icon/svg/telegram.d.ts +5 -0
  266. package/dist/types/primitives/icon/svg/triangle-down.d.mts +5 -0
  267. package/dist/types/primitives/icon/svg/triangle-down.d.ts +5 -0
  268. package/dist/types/primitives/icon/svg/triangle-up-filled.d.mts +5 -0
  269. package/dist/types/primitives/icon/svg/triangle-up-filled.d.ts +5 -0
  270. package/dist/types/primitives/icon/svg/triangle-up.d.mts +5 -0
  271. package/dist/types/primitives/icon/svg/triangle-up.d.ts +5 -0
  272. package/dist/types/primitives/icon/svg/twitter.d.mts +5 -0
  273. package/dist/types/primitives/icon/svg/twitter.d.ts +5 -0
  274. package/dist/types/primitives/icon/svg/upload.d.mts +5 -0
  275. package/dist/types/primitives/icon/svg/upload.d.ts +5 -0
  276. package/dist/types/primitives/icon/svg/wallet-avatar.d.mts +5 -0
  277. package/dist/types/primitives/icon/svg/wallet-avatar.d.ts +5 -0
  278. package/dist/types/primitives/icon/svg/wallet.d.mts +5 -0
  279. package/dist/types/primitives/icon/svg/wallet.d.ts +5 -0
  280. package/dist/types/primitives/icon/svg/warning-filled.d.mts +5 -0
  281. package/dist/types/primitives/icon/svg/warning-filled.d.ts +5 -0
  282. package/dist/types/primitives/icon/svg/warning.d.mts +5 -0
  283. package/dist/types/primitives/icon/svg/warning.d.ts +5 -0
  284. package/dist/types/primitives/icon/types.d.mts +5 -0
  285. package/dist/types/primitives/icon/types.d.ts +5 -0
  286. package/dist/types/primitives/index.d.mts +18 -0
  287. package/dist/types/primitives/index.d.ts +18 -0
  288. package/dist/types/primitives/inline-alert/index.d.mts +16 -0
  289. package/dist/types/primitives/inline-alert/index.d.ts +16 -0
  290. package/dist/types/primitives/loading-icon/index.d.mts +11 -0
  291. package/dist/types/primitives/loading-icon/index.d.ts +11 -0
  292. package/dist/types/primitives/modal/index.d.mts +10 -0
  293. package/dist/types/primitives/modal/index.d.ts +10 -0
  294. package/dist/types/primitives/modal/modal.types.d.mts +54 -0
  295. package/dist/types/primitives/modal/modal.types.d.ts +54 -0
  296. package/dist/{number-value.d.mts → types/primitives/number-value.d.mts} +3 -5
  297. package/dist/{number-value.d.ts → types/primitives/number-value.d.ts} +3 -5
  298. package/dist/types/primitives/search/index.d.mts +6 -0
  299. package/dist/types/primitives/search/index.d.ts +6 -0
  300. package/dist/types/primitives/search/search-empty-icon.d.mts +5 -0
  301. package/dist/types/primitives/search/search-empty-icon.d.ts +5 -0
  302. package/dist/types/primitives/search/search.types.d.mts +96 -0
  303. package/dist/types/primitives/search/search.types.d.ts +96 -0
  304. package/dist/{select.d.mts → types/primitives/select/index.d.mts} +3 -5
  305. package/dist/{select.d.ts → types/primitives/select/index.d.ts} +3 -5
  306. package/dist/types/primitives/skeleton/index.d.mts +7 -0
  307. package/dist/types/primitives/skeleton/index.d.ts +7 -0
  308. package/dist/types/primitives/skeleton/skeleton-block.d.mts +8 -0
  309. package/dist/types/primitives/skeleton/skeleton-block.d.ts +8 -0
  310. package/dist/{skeleton.d.mts → types/primitives/skeleton/skeleton.types.d.mts} +6 -9
  311. package/dist/{skeleton.d.ts → types/primitives/skeleton/skeleton.types.d.ts} +6 -9
  312. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.mts +5 -0
  313. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.ts +5 -0
  314. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.mts +9 -0
  315. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.ts +9 -0
  316. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.mts +5 -0
  317. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.ts +5 -0
  318. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.mts +12 -0
  319. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.ts +12 -0
  320. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.mts +5 -0
  321. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.ts +5 -0
  322. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.mts +5 -0
  323. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.ts +5 -0
  324. package/dist/{state-message.d.mts → types/primitives/state-message/index.d.mts} +2 -3
  325. package/dist/{state-message.d.ts → types/primitives/state-message/index.d.ts} +2 -3
  326. package/dist/{switch-button.d.mts → types/primitives/switch-button/index.d.mts} +4 -7
  327. package/dist/{switch-button.d.ts → types/primitives/switch-button/index.d.ts} +4 -7
  328. package/dist/types/primitives/tabs/index.d.mts +6 -0
  329. package/dist/types/primitives/tabs/index.d.ts +6 -0
  330. package/dist/types/primitives/tabs/tabs.types.d.mts +24 -0
  331. package/dist/types/primitives/tabs/tabs.types.d.ts +24 -0
  332. package/dist/types/primitives/tabs/tabs.utils.d.mts +14 -0
  333. package/dist/types/primitives/tabs/tabs.utils.d.ts +14 -0
  334. package/dist/types/primitives/typography/index.d.mts +7 -0
  335. package/dist/types/primitives/typography/index.d.ts +7 -0
  336. package/dist/types/primitives/typography/typography.constants.d.mts +3 -0
  337. package/dist/types/primitives/typography/typography.constants.d.ts +3 -0
  338. package/dist/types/primitives/typography/typography.types.d.mts +8 -0
  339. package/dist/types/primitives/typography/typography.types.d.ts +8 -0
  340. package/dist/types/primitives/venue-logo/index.d.mts +8 -0
  341. package/dist/types/primitives/venue-logo/index.d.ts +8 -0
  342. package/dist/types/primitives/venue-logo/logo-props.d.mts +10 -0
  343. package/dist/types/primitives/venue-logo/logo-props.d.ts +10 -0
  344. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.mts +5 -0
  345. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.ts +5 -0
  346. package/dist/types/primitives/venue-logo/svg/logo-limitless.d.mts +5 -0
  347. package/dist/types/primitives/venue-logo/svg/logo-limitless.d.ts +5 -0
  348. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.mts +5 -0
  349. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.ts +5 -0
  350. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.mts +5 -0
  351. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.ts +5 -0
  352. package/dist/types/primitives/venue-logo/svg/logo-probable.d.mts +5 -0
  353. package/dist/types/primitives/venue-logo/svg/logo-probable.d.ts +5 -0
  354. package/dist/types/primitives/venue-logo/venue-logo.constants.d.mts +9 -0
  355. package/dist/types/primitives/venue-logo/venue-logo.constants.d.ts +9 -0
  356. package/dist/types/primitives/venue-logo/venue-logo.types.d.mts +17 -0
  357. package/dist/types/primitives/venue-logo/venue-logo.types.d.ts +17 -0
  358. package/dist/types/profile/index.d.mts +6 -0
  359. package/dist/types/profile/index.d.ts +6 -0
  360. package/dist/types/profile/profile-modal.constants.d.mts +17 -0
  361. package/dist/types/profile/profile-modal.constants.d.ts +17 -0
  362. package/dist/{profile-modal.d.mts → types/profile/profile-modal.types.d.mts} +4 -11
  363. package/dist/{profile-modal.d.ts → types/profile/profile-modal.types.d.ts} +4 -11
  364. package/dist/types/profile/tabs/about-tab.d.mts +16 -0
  365. package/dist/types/profile/tabs/about-tab.d.ts +16 -0
  366. package/dist/types/profile/tabs/accounts-wallets-tab.d.mts +18 -0
  367. package/dist/types/profile/tabs/accounts-wallets-tab.d.ts +18 -0
  368. package/dist/types/shared/constants.d.mts +23 -0
  369. package/dist/types/shared/constants.d.ts +23 -0
  370. package/dist/types/shared/query-error.d.mts +2 -0
  371. package/dist/types/shared/query-error.d.ts +2 -0
  372. package/dist/types/shared/types.d.mts +1 -0
  373. package/dist/types/shared/types.d.ts +1 -0
  374. package/dist/types/shared/utils.d.mts +15 -0
  375. package/dist/types/shared/utils.d.ts +15 -0
  376. package/dist/types/trading/index.d.mts +4 -0
  377. package/dist/types/trading/index.d.ts +4 -0
  378. package/dist/{place-order.d.ts → types/trading/place-order/index.d.mts} +3 -7
  379. package/dist/{place-order.d.mts → types/trading/place-order/index.d.ts} +3 -7
  380. package/dist/{settlement.d.ts → types/trading/settlement/index.d.mts} +3 -7
  381. package/dist/{settlement.d.mts → types/trading/settlement/index.d.ts} +3 -7
  382. package/dist/{types-BImwqY4o.d.ts → types/trading/types.d.mts} +61 -64
  383. package/dist/{types-BImwqY4o.d.mts → types/trading/types.d.ts} +61 -64
  384. package/dist/types/trading/utils.d.mts +16 -0
  385. package/dist/types/trading/utils.d.ts +16 -0
  386. package/dist/types/withdraw/index.d.mts +6 -0
  387. package/dist/types/withdraw/index.d.ts +6 -0
  388. package/dist/types/withdraw/steps/kalshi-withdraw.d.mts +5 -0
  389. package/dist/types/withdraw/steps/kalshi-withdraw.d.ts +5 -0
  390. package/dist/types/withdraw/steps/venue-selection.d.mts +6 -0
  391. package/dist/types/withdraw/steps/venue-selection.d.ts +6 -0
  392. package/dist/types/withdraw/steps/withdraw-amount.d.mts +8 -0
  393. package/dist/types/withdraw/steps/withdraw-amount.d.ts +8 -0
  394. package/dist/types/withdraw/steps/withdraw-method.d.mts +7 -0
  395. package/dist/types/withdraw/steps/withdraw-method.d.ts +7 -0
  396. package/dist/types/withdraw/withdraw-modal.constants.d.mts +9 -0
  397. package/dist/types/withdraw/withdraw-modal.constants.d.ts +9 -0
  398. package/dist/{withdraw-modal.d.mts → types/withdraw/withdraw-modal.types.d.mts} +3 -10
  399. package/dist/{withdraw-modal.d.ts → types/withdraw/withdraw-modal.types.d.ts} +3 -10
  400. package/package.json +29 -291
  401. package/dist/badge.d.mts +0 -28
  402. package/dist/badge.d.ts +0 -28
  403. package/dist/badge.js +0 -110
  404. package/dist/badge.mjs +0 -9
  405. package/dist/button.d.mts +0 -20
  406. package/dist/button.d.ts +0 -20
  407. package/dist/button.js +0 -183
  408. package/dist/button.mjs +0 -8
  409. package/dist/card.d.mts +0 -10
  410. package/dist/card.d.ts +0 -10
  411. package/dist/card.js +0 -88
  412. package/dist/card.mjs +0 -7
  413. package/dist/chart.js +0 -438
  414. package/dist/chart.mjs +0 -8
  415. package/dist/chunk-34IRJYSU.mjs +0 -146
  416. package/dist/chunk-3QLOUBDJ.mjs +0 -483
  417. package/dist/chunk-3W7NBJLU.mjs +0 -371
  418. package/dist/chunk-4343LYSH.mjs +0 -45
  419. package/dist/chunk-4S3I6X7F.mjs +0 -855
  420. package/dist/chunk-4VUDTWH7.mjs +0 -42
  421. package/dist/chunk-5ADMXO3Y.mjs +0 -456
  422. package/dist/chunk-6JG6I5AY.mjs +0 -654
  423. package/dist/chunk-BNDFQPHF.mjs +0 -9
  424. package/dist/chunk-CTYJVVHJ.mjs +0 -334
  425. package/dist/chunk-DHBHKIJR.mjs +0 -1049
  426. package/dist/chunk-ERGNR6UQ.mjs +0 -67
  427. package/dist/chunk-FO263M3V.mjs +0 -10
  428. package/dist/chunk-FO2QCB4Z.mjs +0 -35
  429. package/dist/chunk-GFBF2J3Y.mjs +0 -328
  430. package/dist/chunk-GJ4U5NCE.mjs +0 -134
  431. package/dist/chunk-IGPNIM2B.mjs +0 -83
  432. package/dist/chunk-K6IJ4WBM.mjs +0 -67
  433. package/dist/chunk-KAGYJ4XT.mjs +0 -126
  434. package/dist/chunk-KIYMVWL4.mjs +0 -280
  435. package/dist/chunk-LCZKSITC.mjs +0 -162
  436. package/dist/chunk-M4RJHRFT.mjs +0 -445
  437. package/dist/chunk-MJHKBCXQ.mjs +0 -379
  438. package/dist/chunk-MKVGQ7AS.mjs +0 -168
  439. package/dist/chunk-NDG43KGL.mjs +0 -44
  440. package/dist/chunk-NH2G3POM.mjs +0 -470
  441. package/dist/chunk-OBCHURW5.mjs +0 -64
  442. package/dist/chunk-OJVTGNIF.mjs +0 -230
  443. package/dist/chunk-PORVP72S.mjs +0 -277
  444. package/dist/chunk-PZTHM6WG.mjs +0 -1340
  445. package/dist/chunk-Q6DGDBPV.mjs +0 -774
  446. package/dist/chunk-QLMVKLNJ.mjs +0 -669
  447. package/dist/chunk-S3H63TQ5.mjs +0 -537
  448. package/dist/chunk-T7TATHPD.mjs +0 -313
  449. package/dist/chunk-XUCS575S.mjs +0 -65
  450. package/dist/chunk-YJA5VQW6.mjs +0 -167
  451. package/dist/chunk-ZFMCCBP6.mjs +0 -25
  452. package/dist/connect-button.d.mts +0 -40
  453. package/dist/connect-button.d.ts +0 -40
  454. package/dist/connect-button.mjs +0 -14
  455. package/dist/deposit-modal.js +0 -2801
  456. package/dist/deposit-modal.mjs +0 -15
  457. package/dist/event-list-item-details.d.mts +0 -11
  458. package/dist/event-list-item-details.d.ts +0 -11
  459. package/dist/event-list-item-details.js +0 -3711
  460. package/dist/event-list-item-details.mjs +0 -23
  461. package/dist/event-list-item-details.types-CMbXOrT-.d.ts +0 -53
  462. package/dist/event-list-item-details.types-DekJKeMD.d.mts +0 -53
  463. package/dist/event-list-item.d.mts +0 -10
  464. package/dist/event-list-item.d.ts +0 -10
  465. package/dist/event-list-item.js +0 -2821
  466. package/dist/event-list-item.mjs +0 -20
  467. package/dist/event-list-item.types-Y6IeJ4e4.d.mts +0 -46
  468. package/dist/event-list-item.types-Y6IeJ4e4.d.ts +0 -46
  469. package/dist/event-list.d.mts +0 -9
  470. package/dist/event-list.d.ts +0 -9
  471. package/dist/event-list.js +0 -3802
  472. package/dist/event-list.mjs +0 -23
  473. package/dist/event-list.types-CkAAUqwW.d.mts +0 -13
  474. package/dist/event-list.types-CkAAUqwW.d.ts +0 -13
  475. package/dist/event-market-page.d.mts +0 -52
  476. package/dist/event-market-page.d.ts +0 -52
  477. package/dist/event-market-page.mjs +0 -30
  478. package/dist/hello-world.d.mts +0 -8
  479. package/dist/hello-world.d.ts +0 -8
  480. package/dist/hello-world.js +0 -92
  481. package/dist/hello-world.mjs +0 -8
  482. package/dist/home-page.js +0 -4066
  483. package/dist/home-page.mjs +0 -24
  484. package/dist/icon.d.mts +0 -193
  485. package/dist/icon.d.ts +0 -193
  486. package/dist/icon.js +0 -1465
  487. package/dist/loading-icon.d.mts +0 -14
  488. package/dist/loading-icon.d.ts +0 -14
  489. package/dist/loading-icon.js +0 -112
  490. package/dist/loading-icon.mjs +0 -8
  491. package/dist/market-details.d.mts +0 -73
  492. package/dist/market-details.d.ts +0 -73
  493. package/dist/market-details.mjs +0 -24
  494. package/dist/modal.d.mts +0 -66
  495. package/dist/modal.d.ts +0 -66
  496. package/dist/modal.js +0 -321
  497. package/dist/modal.mjs +0 -9
  498. package/dist/number-value.js +0 -67
  499. package/dist/number-value.mjs +0 -7
  500. package/dist/onboarding-modal.d.mts +0 -88
  501. package/dist/onboarding-modal.d.ts +0 -88
  502. package/dist/onboarding-modal.mjs +0 -24
  503. package/dist/place-order.mjs +0 -18
  504. package/dist/profile-modal.js +0 -2447
  505. package/dist/profile-modal.mjs +0 -14
  506. package/dist/registry-DfSCFAdC.d.mts +0 -178
  507. package/dist/registry-DfSCFAdC.d.ts +0 -178
  508. package/dist/search.d.mts +0 -51
  509. package/dist/search.d.ts +0 -51
  510. package/dist/search.js +0 -1957
  511. package/dist/search.mjs +0 -13
  512. package/dist/select.js +0 -1552
  513. package/dist/select.mjs +0 -11
  514. package/dist/settlement.js +0 -2445
  515. package/dist/settlement.mjs +0 -15
  516. package/dist/skeleton.js +0 -490
  517. package/dist/skeleton.mjs +0 -10
  518. package/dist/state-message.js +0 -1629
  519. package/dist/state-message.mjs +0 -14
  520. package/dist/switch-button.js +0 -191
  521. package/dist/switch-button.mjs +0 -7
  522. package/dist/tabs.d.mts +0 -31
  523. package/dist/tabs.d.ts +0 -31
  524. package/dist/tabs.js +0 -2078
  525. package/dist/tabs.mjs +0 -12
  526. package/dist/types-BVj9ky9P.d.mts +0 -3
  527. package/dist/types-BVj9ky9P.d.ts +0 -3
  528. package/dist/typography.d.mts +0 -18
  529. package/dist/typography.d.ts +0 -18
  530. package/dist/typography.js +0 -93
  531. package/dist/typography.mjs +0 -9
  532. package/dist/user-profile-page.js +0 -3081
  533. package/dist/user-profile-page.mjs +0 -15
  534. package/dist/venue-logo.d.mts +0 -13
  535. package/dist/venue-logo.d.ts +0 -13
  536. package/dist/venue-logo.js +0 -323
  537. package/dist/venue-logo.mjs +0 -10
  538. package/dist/venue-logo.types-CGUc22ly.d.mts +0 -19
  539. package/dist/venue-logo.types-Dqr39S1-.d.ts +0 -19
  540. package/dist/withdraw-modal.js +0 -2449
  541. package/dist/withdraw-modal.mjs +0 -14
@@ -1,1049 +0,0 @@
1
- import {
2
- Tabs
3
- } from "./chunk-S3H63TQ5.mjs";
4
- import {
5
- buildPriceHistoryGroups,
6
- getTimeWindowByRange,
7
- resolveOutcomeLabels,
8
- resolveOutcomesByVenue,
9
- resolveSeriesColor
10
- } from "./chunk-34IRJYSU.mjs";
11
- import {
12
- getVenueSummary,
13
- isErrorWithStatus,
14
- normalizeProbability,
15
- resolveTileImage,
16
- resolveTileTitle,
17
- selectPrimaryVenueMarket
18
- } from "./chunk-MKVGQ7AS.mjs";
19
- import {
20
- StateMessage
21
- } from "./chunk-XUCS575S.mjs";
22
- import {
23
- MarketDetailsOderbookSkeleton,
24
- Skeleton,
25
- eventListItemDetailsTimeRanges,
26
- getMarketDetailsTabs,
27
- marketDetailsBaseCardClassName,
28
- marketDetailsDefaultIsOpened,
29
- orderBookRowLimitDefault
30
- } from "./chunk-M4RJHRFT.mjs";
31
- import {
32
- VenueLogo
33
- } from "./chunk-PORVP72S.mjs";
34
- import {
35
- Typography
36
- } from "./chunk-ERGNR6UQ.mjs";
37
- import {
38
- Card
39
- } from "./chunk-FO2QCB4Z.mjs";
40
- import {
41
- LineChart
42
- } from "./chunk-OJVTGNIF.mjs";
43
- import {
44
- SwitchButton
45
- } from "./chunk-LCZKSITC.mjs";
46
- import {
47
- __spreadProps,
48
- __spreadValues,
49
- cn,
50
- getMotionClassName
51
- } from "./chunk-GJ4U5NCE.mjs";
52
-
53
- // src/events/market-details/index.tsx
54
- import { useEffect, useId, useMemo, useState } from "react";
55
- import {
56
- useEvent,
57
- useLabels,
58
- useOrderBook,
59
- usePriceHistory,
60
- useSdkUiConfig
61
- } from "@agg-market/hooks";
62
-
63
- // src/events/market-details/market-details.utils.ts
64
- import dayjs from "dayjs";
65
- import { z } from "zod";
66
- var MarketDetailsTabSchema = z.enum(["order-book", "graph", "other"]);
67
- var OrderBookLevelSchema = z.object({
68
- price: z.number().min(0).max(1),
69
- size: z.number().nonnegative()
70
- });
71
- var OrderBookRowSchema = z.object({
72
- id: z.string(),
73
- venue: z.enum(["kalshi", "polymarket"]),
74
- price: z.number().min(0).max(1),
75
- size: z.number().nonnegative(),
76
- total: z.number().nonnegative(),
77
- tone: z.enum(["positive", "negative"])
78
- });
79
- var normalizeLabel = (value) => {
80
- return value.trim().toLowerCase();
81
- };
82
- var hasBinaryLabels = (labels) => {
83
- const normalizedLabels = labels.map(normalizeLabel);
84
- return normalizedLabels.includes("yes") && normalizedLabels.includes("no");
85
- };
86
- var resolveInitialTab = (defaultTab) => {
87
- const parsedTab = MarketDetailsTabSchema.safeParse(defaultTab);
88
- if (parsedTab.success)
89
- return parsedTab.data;
90
- return "order-book";
91
- };
92
- var resolveMarket = (event, marketId) => {
93
- if (!event.markets.length)
94
- return void 0;
95
- if (!marketId)
96
- return event.markets[0];
97
- return event.markets.find((market) => market.id === marketId);
98
- };
99
- var resolveDisplayOutcomeLabels = (labels) => {
100
- if (!hasBinaryLabels(labels))
101
- return labels;
102
- return ["Yes", "No"].filter(
103
- (label) => labels.some((value) => normalizeLabel(value) === normalizeLabel(label))
104
- );
105
- };
106
- var resolveInitialOutcomeLabel = (labels, defaultOutcomeLabel) => {
107
- var _a;
108
- if (labels.length === 0)
109
- return void 0;
110
- if (defaultOutcomeLabel) {
111
- const matchedLabel = labels.find(
112
- (label) => normalizeLabel(label) === normalizeLabel(defaultOutcomeLabel)
113
- );
114
- if (matchedLabel)
115
- return matchedLabel;
116
- }
117
- if (hasBinaryLabels(labels)) {
118
- return (_a = labels.find((label) => normalizeLabel(label) === "yes")) != null ? _a : labels[0];
119
- }
120
- return labels[0];
121
- };
122
- var resolveAverageProbabilityByLabel = (venueMarkets, labels) => {
123
- return new Map(
124
- labels.map((label) => {
125
- const matchingOutcomes = resolveOutcomesByVenue(venueMarkets, label);
126
- const probabilities = matchingOutcomes.map((item) => normalizeProbability(item.outcome.price)).filter((value) => value != null);
127
- if (!probabilities.length) {
128
- return [label, void 0];
129
- }
130
- const averageProbability = probabilities.reduce((sum, value) => sum + value, 0) / probabilities.length;
131
- return [label, averageProbability];
132
- })
133
- );
134
- };
135
- var formatProbabilityPercent = (value) => {
136
- if (value == null)
137
- return "-";
138
- return `${Math.round(value * 100)}%`;
139
- };
140
- var formatProbabilityCents = (value) => {
141
- if (value == null)
142
- return "-";
143
- const cents = (value * 100).toFixed(1).replace(/\.0$/, "");
144
- return `${cents}\xA2`;
145
- };
146
- var resolveOutcomeTone = (label, index) => {
147
- const normalizedLabel = normalizeLabel(label);
148
- if (normalizedLabel === "yes" || normalizedLabel === "up" || normalizedLabel === "buy") {
149
- return "positive";
150
- }
151
- if (normalizedLabel === "no" || normalizedLabel === "down" || normalizedLabel === "sell") {
152
- return "negative";
153
- }
154
- return index === 0 ? "positive" : "negative";
155
- };
156
- var resolveHeaderOutcomeItems = (venueMarkets, defaultOutcomeLabel) => {
157
- const labels = resolveDisplayOutcomeLabels(resolveOutcomeLabels(venueMarkets));
158
- const probabilityByLabel = resolveAverageProbabilityByLabel(venueMarkets, labels);
159
- return labels.slice(0, 2).map((label, index) => {
160
- var _a;
161
- return {
162
- label,
163
- probability: probabilityByLabel.get(label),
164
- tone: resolveOutcomeTone(label, index),
165
- isDefault: normalizeLabel(label) === normalizeLabel((_a = defaultOutcomeLabel != null ? defaultOutcomeLabel : labels[0]) != null ? _a : "")
166
- };
167
- });
168
- };
169
- var resolveSubtitle = ({
170
- venueMarkets,
171
- volume,
172
- formatCompactCurrency,
173
- labels
174
- }) => {
175
- const { venueCount } = getVenueSummary(venueMarkets);
176
- const parts = [
177
- `${venueCount} ${venueCount === 1 ? labels.marketDetails.meta.venueSingular : labels.marketDetails.meta.venuePlural}`
178
- ];
179
- if (typeof volume === "number") {
180
- parts.push(`${formatCompactCurrency(volume)} ${labels.marketDetails.meta.volumeSuffix}`);
181
- }
182
- return parts.join(" \xB7 ");
183
- };
184
- var resolveOrderBookRows = ({
185
- data,
186
- side
187
- }) => {
188
- if (!(data == null ? void 0 : data.length))
189
- return [];
190
- const tone = side === "asks" ? "negative" : "positive";
191
- const rows = data.flatMap((result) => {
192
- var _a;
193
- return ((_a = result.orderbook[side]) != null ? _a : []).flatMap(
194
- (level, index) => {
195
- const parsedLevel = OrderBookLevelSchema.safeParse(level);
196
- if (!parsedLevel.success)
197
- return [];
198
- const parsedRow = OrderBookRowSchema.safeParse({
199
- id: `${result.market.id}-${side}-${index}-${parsedLevel.data.price}`,
200
- venue: result.market.venue,
201
- price: parsedLevel.data.price,
202
- size: parsedLevel.data.size,
203
- total: parsedLevel.data.price * parsedLevel.data.size,
204
- tone
205
- });
206
- if (!parsedRow.success)
207
- return [];
208
- return [parsedRow.data];
209
- }
210
- );
211
- });
212
- const sortedRows = [...rows].sort((left, right) => {
213
- if (side === "asks")
214
- return left.price - right.price;
215
- return right.price - left.price;
216
- });
217
- const maxTotal = sortedRows.reduce((currentMax, row) => Math.max(currentMax, row.total), 0) || 1;
218
- return sortedRows.map((row) => __spreadProps(__spreadValues({}, row), {
219
- barScale: row.total / maxTotal
220
- }));
221
- };
222
- var resolveOtherTabRows = (market, labels) => {
223
- var _a;
224
- const rows = [];
225
- rows.push({
226
- label: labels.marketDetails.meta.status,
227
- value: (_a = market.status) != null ? _a : labels.marketDetails.meta.unknown
228
- });
229
- if (market.creationDate) {
230
- rows.push({
231
- label: labels.marketDetails.meta.created,
232
- value: dayjs(market.creationDate).format("MMM D, YYYY")
233
- });
234
- }
235
- if (market.startDate) {
236
- rows.push({
237
- label: labels.marketDetails.meta.opens,
238
- value: dayjs(market.startDate).format("MMM D, YYYY")
239
- });
240
- }
241
- if (market.endDate) {
242
- rows.push({
243
- label: labels.marketDetails.meta.closes,
244
- value: dayjs(market.endDate).format("MMM D, YYYY")
245
- });
246
- }
247
- if (rows.length === 1) {
248
- rows.push({
249
- label: labels.marketDetails.meta.markets,
250
- value: `${market.venueMarkets.length}`
251
- });
252
- }
253
- return rows;
254
- };
255
- var buildMarketDetailsModel = ({
256
- event,
257
- marketId,
258
- title,
259
- image,
260
- formatCompactCurrency,
261
- labels
262
- }) => {
263
- var _a;
264
- const market = resolveMarket(event, marketId);
265
- if (!market)
266
- return void 0;
267
- const primaryVenueMarket = selectPrimaryVenueMarket(market.venueMarkets);
268
- if (!primaryVenueMarket)
269
- return void 0;
270
- const resolvedTitle = resolveTileTitle(event, primaryVenueMarket, title);
271
- const resolvedImage = resolveTileImage(event, primaryVenueMarket, image);
272
- const resolvedVolume = typeof market.volume === "number" ? market.volume : (_a = primaryVenueMarket.volume) != null ? _a : void 0;
273
- const subtitle = resolveSubtitle({
274
- venueMarkets: market.venueMarkets,
275
- volume: resolvedVolume,
276
- formatCompactCurrency,
277
- labels
278
- });
279
- const outcomeLabels = resolveDisplayOutcomeLabels(resolveOutcomeLabels(market.venueMarkets));
280
- const probabilityByLabel = resolveAverageProbabilityByLabel(market.venueMarkets, outcomeLabels);
281
- return {
282
- market,
283
- primaryVenueMarket,
284
- title: resolvedTitle,
285
- image: resolvedImage,
286
- subtitle,
287
- outcomeLabels,
288
- probabilityByLabel
289
- };
290
- };
291
-
292
- // src/events/market-details/index.tsx
293
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
294
- var MarketDetailsLoadingState = ({
295
- isOpened = marketDetailsDefaultIsOpened,
296
- ariaLabel,
297
- classNames
298
- }) => {
299
- const labels = useLabels();
300
- return /* @__PURE__ */ jsx(
301
- Skeleton,
302
- {
303
- view: isOpened ? "market-details-detailed" : "market-details-minified",
304
- className: classNames == null ? void 0 : classNames.root,
305
- ariaLabel: ariaLabel != null ? ariaLabel : labels.marketDetails.loading
306
- }
307
- );
308
- };
309
- var MarketDetailsUnavailableState = ({
310
- ariaLabel,
311
- classNames
312
- }) => {
313
- const labels = useLabels();
314
- return /* @__PURE__ */ jsx(
315
- Card,
316
- {
317
- className: cn(marketDetailsBaseCardClassName, classNames == null ? void 0 : classNames.root),
318
- role: "status",
319
- "aria-label": ariaLabel != null ? ariaLabel : labels.marketDetails.unavailableAria,
320
- children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-1 p-5", children: [
321
- /* @__PURE__ */ jsx(Typography, { variant: "body-large-strong", children: labels.marketDetails.unavailableTitle }),
322
- /* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-muted-foreground", children: labels.marketDetails.unavailableDescription })
323
- ] })
324
- }
325
- );
326
- };
327
- var MarketDetailsNotFoundState = ({
328
- ariaLabel,
329
- classNames
330
- }) => {
331
- const labels = useLabels();
332
- return /* @__PURE__ */ jsx(Card, { className: cn(marketDetailsBaseCardClassName, "p-0", classNames == null ? void 0 : classNames.root), children: /* @__PURE__ */ jsx(
333
- StateMessage,
334
- {
335
- ariaLabel: ariaLabel != null ? ariaLabel : labels.marketDetails.notFoundAria,
336
- title: labels.marketDetails.notFoundTitle,
337
- description: labels.marketDetails.notFoundDescription,
338
- className: "min-h-[280px] md:min-h-[320px]"
339
- }
340
- ) });
341
- };
342
- var OrderBookRows = ({
343
- rows,
344
- title,
345
- formatNumber,
346
- formatCurrency,
347
- visibleRows
348
- }) => {
349
- const labels = useLabels();
350
- const isAsks = title === labels.marketDetails.asks;
351
- const priceClassName = isAsks ? "text-agg-orderbook-ask" : "text-agg-orderbook-bid";
352
- const barClassName = isAsks ? "bg-agg-orderbook-ask/10" : "bg-agg-orderbook-bid/10";
353
- const maxVisibleRows = Math.max(1, visibleRows);
354
- const orderBookRowHeightPx = 28;
355
- const orderBookDividerHeightPx = 1;
356
- const orderBookRowGapPx = 8;
357
- const orderBookVisibleHeightPx = maxVisibleRows * orderBookRowHeightPx + Math.max(0, maxVisibleRows - 1) * (orderBookDividerHeightPx + orderBookRowGapPx);
358
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
359
- /* @__PURE__ */ jsx(Typography, { variant: "caption-caps", children: title }),
360
- /* @__PURE__ */ jsx(
361
- "div",
362
- {
363
- className: "overflow-y-auto pr-1 flex flex-col gap-2",
364
- style: { maxHeight: `${orderBookVisibleHeightPx}px` },
365
- role: "region",
366
- "aria-label": `${title} order book levels`,
367
- children: rows.map((row, index) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
368
- /* @__PURE__ */ jsxs("div", { className: "grid grid-cols-[52px_1fr_1fr_52px] items-center gap-2 md:grid-cols-[88px_1fr_1fr_minmax(120px,220px)] md:gap-6", children: [
369
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1 md:gap-3", children: [
370
- /* @__PURE__ */ jsx(VenueLogo, { venue: row.venue, size: "small" }),
371
- /* @__PURE__ */ jsx(
372
- "span",
373
- {
374
- className: cn(
375
- "text-agg-xs font-agg-bold leading-agg-4 md:text-agg-sm md:leading-agg-5",
376
- priceClassName
377
- ),
378
- children: formatProbabilityCents(row.price)
379
- }
380
- )
381
- ] }),
382
- /* @__PURE__ */ jsx("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatNumber(row.size) }),
383
- /* @__PURE__ */ jsx("span", { className: "truncate text-agg-xs leading-agg-4 text-center text-agg-foreground md:text-agg-sm md:leading-agg-5", children: formatCurrency(row.total) }),
384
- /* @__PURE__ */ jsx("div", { className: "flex justify-end", children: /* @__PURE__ */ jsx(
385
- "div",
386
- {
387
- "aria-hidden": "true",
388
- className: cn("h-2 rounded-agg-full", barClassName),
389
- style: {
390
- width: `${Math.max(20, Math.round(row.barScale * 100))}%`
391
- }
392
- }
393
- ) })
394
- ] }),
395
- index < rows.length - 1 ? /* @__PURE__ */ jsx("div", { className: "h-px w-full bg-agg-separator" }) : null
396
- ] }, row.id))
397
- }
398
- )
399
- ] });
400
- };
401
- var getOutcomeButtonClassName = ({
402
- enableAnimations,
403
- isPositive,
404
- isActive
405
- }) => {
406
- const defaultStateClassName = isPositive ? "border-[#18c15c]/50 bg-[#18c15c]/5 text-agg-foreground hover:bg-[#18c15c]/10" : "border-[#e5455f]/50 bg-[#e5455f]/5 text-agg-foreground hover:bg-[#e5455f]/10";
407
- const activeStateClassName = isPositive ? "border-transparent bg-[#18c15c] text-agg-on-primary" : "border-transparent bg-[#e5455f] text-agg-on-primary";
408
- return cn(
409
- "h-auto min-h-10 flex-1 rounded-agg-full border px-4 py-1.5 text-agg-base leading-agg-6 shadow-none md:flex-none md:min-w-[168px]",
410
- getMotionClassName(enableAnimations, "transition-all duration-300 ease-in-out"),
411
- isActive ? activeStateClassName : defaultStateClassName,
412
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-2 focus-visible:ring-offset-agg-secondary-hover",
413
- "cursor-pointer disabled:cursor-not-allowed disabled:text-agg-muted-foreground",
414
- isActive ? "font-agg-bold" : "font-agg-normal"
415
- );
416
- };
417
- var MarketDetailsContent = ({
418
- event,
419
- marketId,
420
- title,
421
- image,
422
- isOpened: defaultIsOpened = marketDetailsDefaultIsOpened,
423
- onOpenChange,
424
- defaultTab,
425
- defaultOutcomeLabel,
426
- defaultTimeRange = "1M",
427
- orderBookDepth = orderBookRowLimitDefault,
428
- ariaLabel,
429
- classNames,
430
- otherContent
431
- }) => {
432
- const config = useSdkUiConfig();
433
- const labels = useLabels();
434
- const detailsContentId = useId();
435
- const model = useMemo(() => {
436
- return buildMarketDetailsModel({
437
- event,
438
- marketId,
439
- title,
440
- image,
441
- formatCompactCurrency: config.formatCompactCurrency,
442
- labels
443
- });
444
- }, [config.formatCompactCurrency, event, image, labels, marketId, title]);
445
- const resolvedMarket = useMemo(() => {
446
- return resolveMarket(event, marketId);
447
- }, [event, marketId]);
448
- const marketDetailsTabs = useMemo(() => {
449
- return getMarketDetailsTabs(labels);
450
- }, [labels]);
451
- const [selectedTab, setSelectedTab] = useState(
452
- () => resolveInitialTab(defaultTab)
453
- );
454
- const [isOpened, setIsOpened] = useState(defaultIsOpened);
455
- useEffect(() => {
456
- setSelectedTab(resolveInitialTab(defaultTab));
457
- }, [defaultTab]);
458
- const [selectedTimeRange, setSelectedTimeRange] = useState(defaultTimeRange);
459
- useEffect(() => {
460
- setSelectedTimeRange(defaultTimeRange);
461
- }, [defaultTimeRange]);
462
- const [selectedOutcomeLabel, setSelectedOutcomeLabel] = useState(
463
- () => {
464
- var _a;
465
- return resolveInitialOutcomeLabel((_a = model == null ? void 0 : model.outcomeLabels) != null ? _a : [], defaultOutcomeLabel);
466
- }
467
- );
468
- const [selectedGraphVenue, setSelectedGraphVenue] = useState(null);
469
- useEffect(() => {
470
- var _a;
471
- setSelectedOutcomeLabel(
472
- resolveInitialOutcomeLabel((_a = model == null ? void 0 : model.outcomeLabels) != null ? _a : [], defaultOutcomeLabel)
473
- );
474
- }, [defaultOutcomeLabel, model == null ? void 0 : model.outcomeLabels]);
475
- const headerOutcomeItems = useMemo(() => {
476
- if (!model)
477
- return [];
478
- return resolveHeaderOutcomeItems(model.market.venueMarkets, selectedOutcomeLabel);
479
- }, [model, selectedOutcomeLabel]);
480
- const headlineProbability = useMemo(() => {
481
- if (!model || !selectedOutcomeLabel)
482
- return void 0;
483
- return model.probabilityByLabel.get(selectedOutcomeLabel);
484
- }, [model, selectedOutcomeLabel]);
485
- const outcomesByLabel = useMemo(() => {
486
- const outcomesByLabelMap = /* @__PURE__ */ new Map();
487
- if (!model) {
488
- return outcomesByLabelMap;
489
- }
490
- headerOutcomeItems.forEach((headerOutcomeItem) => {
491
- outcomesByLabelMap.set(
492
- headerOutcomeItem.label,
493
- resolveOutcomesByVenue(model.market.venueMarkets, headerOutcomeItem.label)
494
- );
495
- });
496
- return outcomesByLabelMap;
497
- }, [headerOutcomeItems, model]);
498
- const selectedOutcomesByVenue = useMemo(() => {
499
- var _a;
500
- if (!selectedOutcomeLabel)
501
- return [];
502
- return (_a = outcomesByLabel.get(selectedOutcomeLabel)) != null ? _a : [];
503
- }, [outcomesByLabel, selectedOutcomeLabel]);
504
- const timeWindow = useMemo(() => {
505
- return getTimeWindowByRange(selectedTimeRange);
506
- }, [selectedTimeRange]);
507
- const graphOutcomes = useMemo(() => {
508
- const uniqueOutcomesByVenueAndId = /* @__PURE__ */ new Map();
509
- outcomesByLabel.forEach((outcomes) => {
510
- outcomes.forEach((outcomeByVenue) => {
511
- uniqueOutcomesByVenueAndId.set(
512
- `${outcomeByVenue.venue}:${outcomeByVenue.outcome.id}`,
513
- outcomeByVenue
514
- );
515
- });
516
- });
517
- return [...uniqueOutcomesByVenueAndId.values()];
518
- }, [outcomesByLabel]);
519
- const canonicalMarketIdForHistory = model == null ? void 0 : model.market.id;
520
- const priceHistoryGroups = useMemo(() => {
521
- return buildPriceHistoryGroups(graphOutcomes, canonicalMarketIdForHistory);
522
- }, [canonicalMarketIdForHistory, graphOutcomes]);
523
- const { data: priceHistoryData, isLoading: isPriceHistoryLoading } = usePriceHistory(__spreadProps(__spreadValues({
524
- groups: priceHistoryGroups
525
- }, timeWindow), {
526
- enabled: isOpened && selectedTab === "graph" && priceHistoryGroups.length > 0
527
- }));
528
- const orderBookInputs = useMemo(() => {
529
- return selectedOutcomesByVenue.map(({ market, outcome }) => ({
530
- market,
531
- outcome,
532
- liveUpdate: true
533
- }));
534
- }, [selectedOutcomesByVenue]);
535
- const {
536
- data: orderBookData,
537
- isLoading: isOrderBookLoading,
538
- error: orderBookError,
539
- results: orderBookResults
540
- } = useOrderBook({
541
- orderbooks: orderBookInputs,
542
- enabled: isOpened && selectedTab === "order-book" && orderBookInputs.length > 0
543
- });
544
- const askRows = useMemo(() => {
545
- return resolveOrderBookRows({
546
- data: orderBookData,
547
- side: "asks"
548
- });
549
- }, [orderBookData]);
550
- const bidRows = useMemo(() => {
551
- return resolveOrderBookRows({
552
- data: orderBookData,
553
- side: "bids"
554
- });
555
- }, [orderBookData]);
556
- const priceHistoryByVenue = useMemo(() => {
557
- const historyByVenue = /* @__PURE__ */ new Map();
558
- if (!(priceHistoryData == null ? void 0 : priceHistoryData.length)) {
559
- return historyByVenue;
560
- }
561
- priceHistoryData.forEach((historyItem) => {
562
- const venue = historyItem.venue;
563
- const venueHistory = historyByVenue.get(venue);
564
- if (venueHistory) {
565
- venueHistory.push(historyItem);
566
- return;
567
- }
568
- historyByVenue.set(venue, [historyItem]);
569
- });
570
- return historyByVenue;
571
- }, [priceHistoryData]);
572
- const graphSeriesByOutcomeLabel = useMemo(() => {
573
- const seriesByOutcomeLabel = /* @__PURE__ */ new Map();
574
- const resolveOutcomeCandidateIds = (outcomeByVenue) => {
575
- var _a, _b;
576
- const marketWithCanonicalId = outcomeByVenue.market;
577
- return [
578
- outcomeByVenue.outcome.id,
579
- (_a = outcomeByVenue.outcome.externalIdentifier) != null ? _a : void 0,
580
- outcomeByVenue.market.externalIdentifier,
581
- (_b = marketWithCanonicalId.marketId) != null ? _b : void 0,
582
- canonicalMarketIdForHistory
583
- ].filter((value) => typeof value === "string" && value.trim().length > 0);
584
- };
585
- headerOutcomeItems.forEach((headerOutcomeItem) => {
586
- var _a;
587
- const outcomes = (_a = outcomesByLabel.get(headerOutcomeItem.label)) != null ? _a : [];
588
- const graphSeries2 = [];
589
- outcomes.forEach((outcomeByVenue, index) => {
590
- var _a2;
591
- const venueHistory = priceHistoryByVenue.get(outcomeByVenue.venue);
592
- if (!(venueHistory == null ? void 0 : venueHistory.length))
593
- return;
594
- const candidateIds = resolveOutcomeCandidateIds(outcomeByVenue);
595
- const matchingHistory = (_a2 = venueHistory.find((historyItem) => candidateIds.includes(historyItem.marketId))) != null ? _a2 : venueHistory.length === 1 ? venueHistory[0] : void 0;
596
- if (!matchingHistory)
597
- return;
598
- const points = matchingHistory.points.map((point) => ({
599
- time: point.timestamp,
600
- value: point.price * 100
601
- })).filter((point) => Number.isFinite(point.time) && Number.isFinite(point.value));
602
- if (points.length === 0)
603
- return;
604
- graphSeries2.push({
605
- id: `${headerOutcomeItem.label}-${outcomeByVenue.venue}-${matchingHistory.marketId}`,
606
- venue: outcomeByVenue.venue,
607
- color: resolveSeriesColor(outcomeByVenue.venue, index),
608
- points
609
- });
610
- });
611
- seriesByOutcomeLabel.set(headerOutcomeItem.label, graphSeries2);
612
- });
613
- return seriesByOutcomeLabel;
614
- }, [canonicalMarketIdForHistory, headerOutcomeItems, outcomesByLabel, priceHistoryByVenue]);
615
- const graphSeries = useMemo(() => {
616
- var _a;
617
- if (!selectedOutcomeLabel)
618
- return [];
619
- const seriesForOutcomeLabel = (_a = graphSeriesByOutcomeLabel.get(selectedOutcomeLabel)) != null ? _a : [];
620
- if (!selectedGraphVenue)
621
- return seriesForOutcomeLabel;
622
- return seriesForOutcomeLabel.filter((seriesItem) => seriesItem.venue === selectedGraphVenue);
623
- }, [graphSeriesByOutcomeLabel, selectedGraphVenue, selectedOutcomeLabel]);
624
- const otherRows = useMemo(() => {
625
- if (!model)
626
- return [];
627
- return resolveOtherTabRows(model.market, labels);
628
- }, [labels, model]);
629
- const isOrderBookNotFound = isErrorWithStatus(orderBookError, 404);
630
- const hasOrderBookError = !!orderBookError && !isOrderBookNotFound;
631
- const hasNoOrderBook = isOrderBookNotFound || !isOrderBookLoading && !hasOrderBookError && (orderBookInputs.length === 0 || askRows.length === 0 && bidRows.length === 0);
632
- const handleOutcomeKeyDown = (eventToHandle) => {
633
- var _a;
634
- if ((eventToHandle == null ? void 0 : eventToHandle.key) !== "ArrowLeft" && (eventToHandle == null ? void 0 : eventToHandle.key) !== "ArrowRight") {
635
- return;
636
- }
637
- if (headerOutcomeItems.length <= 1)
638
- return;
639
- const activeIndex = headerOutcomeItems.findIndex((item) => {
640
- return item.label === selectedOutcomeLabel;
641
- });
642
- const direction = eventToHandle.key === "ArrowRight" ? 1 : -1;
643
- const nextIndex = activeIndex < 0 ? 0 : (activeIndex + direction + headerOutcomeItems.length) % headerOutcomeItems.length;
644
- setSelectedOutcomeLabel((_a = headerOutcomeItems[nextIndex]) == null ? void 0 : _a.label);
645
- };
646
- const handleToggleExpanded = (event2) => {
647
- if (event2 && "key" in event2 && (event2 == null ? void 0 : event2.key) !== "Enter" && (event2 == null ? void 0 : event2.key) !== " ") {
648
- return;
649
- }
650
- event2 == null ? void 0 : event2.preventDefault();
651
- event2 == null ? void 0 : event2.stopPropagation();
652
- setIsOpened((prev) => {
653
- const next = !prev;
654
- onOpenChange == null ? void 0 : onOpenChange(next);
655
- return next;
656
- });
657
- };
658
- const handleGraphVenueToggle = (venue) => {
659
- setSelectedGraphVenue((currentVenue) => {
660
- if (currentVenue === venue)
661
- return null;
662
- return venue;
663
- });
664
- };
665
- const handleRetryOrderBook = () => {
666
- void Promise.all(orderBookResults.map((result) => result.refetch()));
667
- };
668
- useEffect(() => {
669
- if (!selectedGraphVenue) {
670
- return;
671
- }
672
- if (selectedOutcomesByVenue.some((item) => item.venue === selectedGraphVenue)) {
673
- return;
674
- }
675
- setSelectedGraphVenue(null);
676
- }, [selectedGraphVenue, selectedOutcomesByVenue]);
677
- if (marketId && !resolvedMarket) {
678
- return /* @__PURE__ */ jsx(MarketDetailsNotFoundState, { ariaLabel, classNames });
679
- }
680
- if (!model) {
681
- return /* @__PURE__ */ jsx(MarketDetailsUnavailableState, { ariaLabel, classNames });
682
- }
683
- return /* @__PURE__ */ jsxs(
684
- Card,
685
- {
686
- className: cn(
687
- "w-full rounded-agg-2xl text-left outline-none",
688
- marketDetailsBaseCardClassName,
689
- classNames == null ? void 0 : classNames.root
690
- ),
691
- children: [
692
- /* @__PURE__ */ jsxs(
693
- "div",
694
- {
695
- className: cn(
696
- "cursor-pointer disabled:cursor-default",
697
- "flex flex-wrap flex-row items-center justify-between gap-3 px-5 py-4",
698
- isOpened && "pb-3",
699
- classNames == null ? void 0 : classNames.header
700
- ),
701
- "aria-expanded": isOpened,
702
- "aria-controls": detailsContentId,
703
- role: "button",
704
- tabIndex: 0,
705
- "aria-label": isOpened ? labels.marketDetails.toggleCloseDetailsAria(model.title) : labels.marketDetails.toggleOpenDetailsAria(model.title),
706
- onClick: handleToggleExpanded,
707
- onKeyDown: handleToggleExpanded,
708
- children: [
709
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-52 items-center gap-3 md:gap-4", children: [
710
- model.image ? /* @__PURE__ */ jsx(
711
- "img",
712
- {
713
- src: model.image,
714
- alt: "",
715
- className: "size-12 rounded-agg-lg object-cover md:size-[60px]"
716
- }
717
- ) : null,
718
- /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col", children: [
719
- /* @__PURE__ */ jsx(Typography, { as: "h3", variant: "body-large-strong", className: "truncate", children: model.title }),
720
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsx(Typography, { variant: "label", className: "truncate text-agg-muted-foreground", children: model.subtitle }) })
721
- ] })
722
- ] }),
723
- /* @__PURE__ */ jsx(Typography, { as: "div", variant: "heading", className: "shrink-0", children: formatProbabilityPercent(headlineProbability) }),
724
- /* @__PURE__ */ jsx(
725
- "div",
726
- {
727
- className: "flex gap-2",
728
- role: "tablist",
729
- "aria-label": labels.marketDetails.marketOutcomesAria,
730
- tabIndex: 0,
731
- onKeyDown: (e) => handleOutcomeKeyDown(e),
732
- children: headerOutcomeItems.map((item) => {
733
- const isPositive = item.tone === "positive";
734
- const isActiveOutcome = item.label === selectedOutcomeLabel;
735
- return /* @__PURE__ */ jsx(
736
- "button",
737
- {
738
- type: "button",
739
- role: "tab",
740
- "aria-selected": isActiveOutcome,
741
- tabIndex: isActiveOutcome ? 0 : -1,
742
- className: getOutcomeButtonClassName({
743
- enableAnimations: config.enableAnimations,
744
- isPositive,
745
- isActive: isActiveOutcome
746
- }),
747
- onClick: (e) => {
748
- e.preventDefault();
749
- e.stopPropagation();
750
- setSelectedOutcomeLabel(item.label);
751
- },
752
- children: /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-2", children: [
753
- /* @__PURE__ */ jsx(
754
- VenueLogo,
755
- {
756
- venue: isPositive ? "polymarket" : "probable",
757
- size: "small",
758
- color: isActiveOutcome ? "var(--agg-color-on-primary)" : void 0
759
- }
760
- ),
761
- /* @__PURE__ */ jsx(
762
- Typography,
763
- {
764
- variant: isActiveOutcome ? "body-strong" : "body",
765
- className: cn(
766
- "text-agg-base leading-agg-6",
767
- isActiveOutcome ? "text-agg-on-primary" : "text-agg-foreground"
768
- ),
769
- children: `${item.label} ${formatProbabilityCents(item.probability)}`
770
- }
771
- )
772
- ] })
773
- },
774
- item.label
775
- );
776
- })
777
- }
778
- )
779
- ]
780
- }
781
- ),
782
- /* @__PURE__ */ jsx(
783
- "div",
784
- {
785
- id: detailsContentId,
786
- className: cn(
787
- "grid overflow-hidden",
788
- getMotionClassName(config.enableAnimations, "transition-all duration-500 ease-in-out"),
789
- isOpened ? "grid-rows-[1fr] opacity-100" : "pointer-events-none grid-rows-[0fr] opacity-0"
790
- ),
791
- "aria-hidden": !isOpened,
792
- children: /* @__PURE__ */ jsxs("div", { className: "min-h-0", children: [
793
- /* @__PURE__ */ jsx("div", { className: "h-px w-full bg-agg-separator" }),
794
- /* @__PURE__ */ jsxs(
795
- "div",
796
- {
797
- className: cn(
798
- getMotionClassName(
799
- config.enableAnimations,
800
- "transition-all duration-500 ease-in-out"
801
- ),
802
- isOpened ? cn(
803
- "translate-y-0 opacity-100",
804
- getMotionClassName(config.enableAnimations, "delay-100")
805
- ) : "translate-y-5 opacity-0"
806
- ),
807
- children: [
808
- /* @__PURE__ */ jsx("div", { className: cn("block", classNames == null ? void 0 : classNames.tabs), children: /* @__PURE__ */ jsx(
809
- Tabs,
810
- {
811
- ariaLabel: labels.marketDetails.tabsAria,
812
- items: marketDetailsTabs,
813
- value: selectedTab === "other" ? "order-book" : selectedTab,
814
- onChange: (nextValue) => setSelectedTab(nextValue),
815
- variant: "underline",
816
- className: "w-full px-5"
817
- }
818
- ) }),
819
- /* @__PURE__ */ jsx("div", { className: "h-px w-full bg-agg-separator" }),
820
- /* @__PURE__ */ jsxs("div", { className: cn("p-5", classNames == null ? void 0 : classNames.content), children: [
821
- selectedTab === "order-book" ? /* @__PURE__ */ jsx("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.orderBook), children: isOrderBookLoading ? /* @__PURE__ */ jsx(MarketDetailsOderbookSkeleton, {}) : hasOrderBookError ? /* @__PURE__ */ jsx(
822
- StateMessage,
823
- {
824
- ariaLabel: labels.marketDetails.orderBookUnavailableAria,
825
- tone: "warning",
826
- title: labels.marketDetails.orderBookUnavailableTitle,
827
- description: labels.marketDetails.orderBookUnavailableDescription,
828
- actionLabel: labels.common.retry,
829
- onAction: handleRetryOrderBook,
830
- className: "min-h-[248px] px-5 py-10 md:min-h-[272px]"
831
- }
832
- ) : hasNoOrderBook ? /* @__PURE__ */ jsx(
833
- StateMessage,
834
- {
835
- ariaLabel: labels.marketDetails.orderBookEmptyAria,
836
- title: labels.marketDetails.orderBookEmptyTitle,
837
- description: labels.marketDetails.orderBookEmptyDescription,
838
- className: "min-h-[248px] px-5 py-10 md:min-h-[272px]"
839
- }
840
- ) : /* @__PURE__ */ jsxs(Fragment, { children: [
841
- /* @__PURE__ */ jsx(
842
- OrderBookRows,
843
- {
844
- rows: askRows,
845
- title: labels.marketDetails.asks,
846
- formatNumber: config.formatNumber,
847
- formatCurrency: config.formatCurrency,
848
- visibleRows: orderBookDepth
849
- }
850
- ),
851
- /* @__PURE__ */ jsx(
852
- OrderBookRows,
853
- {
854
- rows: bidRows,
855
- title: labels.marketDetails.bids,
856
- formatNumber: config.formatNumber,
857
- formatCurrency: config.formatCurrency,
858
- visibleRows: orderBookDepth
859
- }
860
- )
861
- ] }) }) : null,
862
- selectedTab === "graph" ? /* @__PURE__ */ jsxs("div", { className: cn("flex flex-col gap-5", classNames == null ? void 0 : classNames.graph), children: [
863
- /* @__PURE__ */ jsx(
864
- LineChart,
865
- {
866
- series: graphSeries,
867
- height: 260,
868
- isLoading: isPriceHistoryLoading,
869
- classNames: { root: "w-full" },
870
- showSeriesControls: selectedOutcomesByVenue.length > 0 || headerOutcomeItems.length > 0,
871
- renderSeriesControls: () => {
872
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 md:flex-row md:items-center md:justify-between", children: [
873
- /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: selectedOutcomesByVenue.map((item) => {
874
- const probability = formatProbabilityPercent(item.outcome.price);
875
- const isActiveVenue = selectedGraphVenue === item.venue;
876
- return /* @__PURE__ */ jsxs(
877
- "button",
878
- {
879
- type: "button",
880
- "aria-label": `${item.venue} ${probability}`,
881
- "aria-pressed": isActiveVenue,
882
- className: cn(
883
- "inline-flex items-center gap-2 rounded-agg-full border-2 px-4 py-2",
884
- "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-agg-primary focus-visible:ring-offset-2 focus-visible:ring-offset-agg-secondary-hover",
885
- isActiveVenue ? "border-agg-primary bg-agg-secondary" : "border-transparent bg-agg-secondary-hover"
886
- ),
887
- onClick: (e) => {
888
- e.preventDefault();
889
- e.stopPropagation();
890
- handleGraphVenueToggle(item.venue);
891
- },
892
- children: [
893
- /* @__PURE__ */ jsx(VenueLogo, { venue: item.venue, size: "small" }),
894
- /* @__PURE__ */ jsx("span", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: probability })
895
- ]
896
- },
897
- `${item.market.id}-${item.outcome.id}`
898
- );
899
- }) }),
900
- /* @__PURE__ */ jsx(
901
- SwitchButton,
902
- {
903
- ariaLabel: labels.marketDetails.outcomeSelectorAria,
904
- className: "shrink-0",
905
- value: selectedOutcomeLabel != null ? selectedOutcomeLabel : "",
906
- onValueChange: (nextValue) => setSelectedOutcomeLabel(nextValue),
907
- options: headerOutcomeItems.map((item) => ({
908
- value: item.label,
909
- label: `${item.label} ${formatProbabilityCents(item.probability)}`,
910
- ariaLabel: labels.marketDetails.showOutcomeAria(item.label)
911
- }))
912
- }
913
- )
914
- ] });
915
- }
916
- }
917
- ),
918
- /* @__PURE__ */ jsxs(
919
- "div",
920
- {
921
- className: cn(
922
- "flex flex-col gap-3 text-agg-sm leading-agg-5 text-agg-muted-foreground md:flex-row md:items-center md:justify-between",
923
- classNames == null ? void 0 : classNames.footer
924
- ),
925
- children: [
926
- /* @__PURE__ */ jsx("span", { children: typeof model.market.volume === "number" ? `${config.formatCompactCurrency(model.market.volume)} ${labels.marketDetails.meta.volumeSuffix}` : labels.marketDetails.volumeUnavailable }),
927
- /* @__PURE__ */ jsx("div", { className: "flex flex-wrap items-center gap-3 md:gap-4", children: eventListItemDetailsTimeRanges.map((timeRange) => {
928
- const isActive = selectedTimeRange === timeRange;
929
- return /* @__PURE__ */ jsx(
930
- "button",
931
- {
932
- type: "button",
933
- className: cn(
934
- "cursor-pointer text-agg-sm leading-agg-5",
935
- isActive ? "font-agg-bold text-agg-foreground" : "font-agg-normal text-agg-muted-foreground"
936
- ),
937
- "aria-pressed": isActive,
938
- onClick: (e) => {
939
- e.preventDefault();
940
- e.stopPropagation();
941
- setSelectedTimeRange(timeRange);
942
- },
943
- children: timeRange === "ALL" ? labels.eventItemDetails.allTimeRange : timeRange
944
- },
945
- timeRange
946
- );
947
- }) })
948
- ]
949
- }
950
- )
951
- ] }) : null,
952
- selectedTab === "other" ? /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-4", children: otherContent != null ? otherContent : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-3", children: otherRows.map((row) => /* @__PURE__ */ jsxs(
953
- "div",
954
- {
955
- className: "flex items-center justify-between rounded-agg-xl bg-agg-secondary-hover px-4 py-3",
956
- children: [
957
- /* @__PURE__ */ jsx(Typography, { variant: "label", className: "text-agg-muted-foreground", children: row.label }),
958
- /* @__PURE__ */ jsx(Typography, { variant: "body", className: "text-right", children: row.value })
959
- ]
960
- },
961
- row.label
962
- )) }) }) : null
963
- ] })
964
- ]
965
- }
966
- )
967
- ] })
968
- }
969
- )
970
- ]
971
- }
972
- );
973
- };
974
- var MarketDetails = (props) => {
975
- var _a;
976
- const [uncontrolledIsOpened, setUncontrolledIsOpened] = useState(
977
- (_a = props.defaultIsOpened) != null ? _a : marketDetailsDefaultIsOpened
978
- );
979
- useEffect(() => {
980
- if (typeof props.isOpened !== "boolean")
981
- return;
982
- setUncontrolledIsOpened(props.isOpened);
983
- }, [props.isOpened]);
984
- const resolvedIsOpened = typeof props.isOpened === "boolean" ? props.isOpened : uncontrolledIsOpened;
985
- const handleOpenChange = (nextIsOpened) => {
986
- var _a2;
987
- if (typeof props.isOpened !== "boolean") {
988
- setUncontrolledIsOpened(nextIsOpened);
989
- }
990
- (_a2 = props.onOpenChange) == null ? void 0 : _a2.call(props, nextIsOpened);
991
- };
992
- const hasEventProp = "event" in props && !!props.event;
993
- const {
994
- event: fetchedEvent,
995
- error: eventError,
996
- isLoading: isFetchingEvent
997
- } = useEvent(hasEventProp ? void 0 : props.eventId, {
998
- enabled: !props.isLoading && !hasEventProp && !!props.eventId
999
- });
1000
- if (props.isLoading) {
1001
- return /* @__PURE__ */ jsx(
1002
- MarketDetailsLoadingState,
1003
- {
1004
- isOpened: resolvedIsOpened,
1005
- ariaLabel: props.ariaLabel,
1006
- classNames: props.classNames
1007
- }
1008
- );
1009
- }
1010
- if ("event" in props && props.event) {
1011
- return /* @__PURE__ */ jsx(
1012
- MarketDetailsContent,
1013
- __spreadProps(__spreadValues({}, props), {
1014
- isOpened: resolvedIsOpened,
1015
- onOpenChange: handleOpenChange,
1016
- event: props.event
1017
- })
1018
- );
1019
- }
1020
- if (isFetchingEvent) {
1021
- return /* @__PURE__ */ jsx(
1022
- MarketDetailsLoadingState,
1023
- {
1024
- isOpened: resolvedIsOpened,
1025
- ariaLabel: props.ariaLabel,
1026
- classNames: props.classNames
1027
- }
1028
- );
1029
- }
1030
- if (!fetchedEvent) {
1031
- if (isErrorWithStatus(eventError, 404)) {
1032
- return /* @__PURE__ */ jsx(MarketDetailsNotFoundState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
1033
- }
1034
- return /* @__PURE__ */ jsx(MarketDetailsUnavailableState, { ariaLabel: props.ariaLabel, classNames: props.classNames });
1035
- }
1036
- return /* @__PURE__ */ jsx(
1037
- MarketDetailsContent,
1038
- __spreadProps(__spreadValues({}, props), {
1039
- isOpened: resolvedIsOpened,
1040
- onOpenChange: handleOpenChange,
1041
- event: fetchedEvent
1042
- })
1043
- );
1044
- };
1045
- MarketDetails.displayName = "MarketDetails";
1046
-
1047
- export {
1048
- MarketDetails
1049
- };