@agg-market/ui 5.0.0 → 6.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 (517) hide show
  1. package/README.md +26 -26
  2. package/dist/auth.d.mts +1 -0
  3. package/dist/auth.d.ts +1 -0
  4. package/dist/{connect-button.js → auth.js} +6 -4
  5. package/dist/auth.mjs +8 -0
  6. package/dist/chunk-2ICOSP7N.mjs +1211 -0
  7. package/dist/chunk-5ZKPBMRK.mjs +2411 -0
  8. package/dist/{chunk-5K7VXAYM.mjs → chunk-ADGL6RFX.mjs} +2 -4
  9. package/dist/chunk-BXW3VIKV.mjs +90 -0
  10. package/dist/{chart.js → chunk-CN7GI2RJ.mjs} +250 -103
  11. package/dist/chunk-G6YKGVQR.mjs +769 -0
  12. package/dist/{chunk-PZTHM6WG.mjs → chunk-HI4EEDN5.mjs} +897 -357
  13. package/dist/{chunk-5ADMXO3Y.mjs → chunk-INRG3D4M.mjs} +5 -11
  14. package/dist/{chunk-QDMHLRDY.mjs → chunk-JE3Z52FD.mjs} +90 -38
  15. package/dist/chunk-KZOQW6NT.mjs +0 -0
  16. package/dist/chunk-LMOJKJOY.mjs +2616 -0
  17. package/dist/{chunk-YJA5VQW6.mjs → chunk-MHCHR65A.mjs} +2 -4
  18. package/dist/{chunk-IGPNIM2B.mjs → chunk-PASXFYKQ.mjs} +2 -4
  19. package/dist/chunk-UBBOLLOS.mjs +999 -0
  20. package/dist/events.d.mts +1 -0
  21. package/dist/events.d.ts +1 -0
  22. package/dist/{event-market-page.js → events.js} +4579 -4935
  23. package/dist/events.mjs +17 -0
  24. package/dist/index.d.mts +1 -79
  25. package/dist/index.d.ts +1 -79
  26. package/dist/index.js +6839 -6839
  27. package/dist/index.mjs +66 -170
  28. package/dist/modals.d.mts +1 -0
  29. package/dist/modals.d.ts +1 -0
  30. package/dist/{deposit-modal.js → modals.js} +1771 -6
  31. package/dist/modals.mjs +25 -0
  32. package/dist/pages.d.mts +1 -0
  33. package/dist/pages.d.ts +1 -0
  34. package/dist/{home-page.js → pages.js} +3868 -6
  35. package/dist/pages.mjs +16 -0
  36. package/dist/primitives.d.mts +1 -0
  37. package/dist/primitives.d.ts +1 -0
  38. package/dist/{market-details.js → primitives.js} +3302 -3729
  39. package/dist/{icon.mjs → primitives.mjs} +56 -9
  40. package/dist/trading.d.mts +1 -0
  41. package/dist/trading.d.ts +1 -0
  42. package/dist/{event-list.js → trading.js} +1426 -1467
  43. package/dist/trading.mjs +65 -0
  44. package/dist/types/auth/connect-button/connect-button.constants.d.mts +10 -0
  45. package/dist/types/auth/connect-button/connect-button.constants.d.ts +10 -0
  46. package/dist/{connect-button.d.mts → types/auth/connect-button/connect-button.types.d.mts} +5 -12
  47. package/dist/{connect-button.d.ts → types/auth/connect-button/connect-button.types.d.ts} +5 -12
  48. package/dist/types/auth/connect-button/index.d.mts +7 -0
  49. package/dist/types/auth/connect-button/index.d.ts +7 -0
  50. package/dist/types/auth/index.d.mts +1 -0
  51. package/dist/types/auth/index.d.ts +1 -0
  52. package/dist/types/constants.d.mts +1 -0
  53. package/dist/types/constants.d.ts +1 -0
  54. package/dist/types/deposit/deposit-modal.constants.d.mts +9 -0
  55. package/dist/types/deposit/deposit-modal.constants.d.ts +9 -0
  56. package/dist/{deposit-modal.d.mts → types/deposit/deposit-modal.types.d.mts} +3 -10
  57. package/dist/{deposit-modal.d.ts → types/deposit/deposit-modal.types.d.ts} +3 -10
  58. package/dist/types/deposit/index.d.mts +6 -0
  59. package/dist/types/deposit/index.d.ts +6 -0
  60. package/dist/types/deposit/steps/card-deposit.d.mts +7 -0
  61. package/dist/types/deposit/steps/card-deposit.d.ts +7 -0
  62. package/dist/types/deposit/steps/crypto-transfer.d.mts +7 -0
  63. package/dist/types/deposit/steps/crypto-transfer.d.ts +7 -0
  64. package/dist/types/deposit/steps/deposit-method.d.mts +7 -0
  65. package/dist/types/deposit/steps/deposit-method.d.ts +7 -0
  66. package/dist/types/deposit/steps/kalshi-deposit.d.mts +5 -0
  67. package/dist/types/deposit/steps/kalshi-deposit.d.ts +5 -0
  68. package/dist/types/deposit/steps/venue-selection.d.mts +7 -0
  69. package/dist/types/deposit/steps/venue-selection.d.ts +7 -0
  70. package/dist/types/events/index.d.mts +4 -0
  71. package/dist/types/events/index.d.ts +4 -0
  72. package/dist/types/events/item/event-list-item.constants.d.mts +1 -0
  73. package/dist/types/events/item/event-list-item.constants.d.ts +1 -0
  74. package/dist/types/events/item/event-list-item.types.d.mts +46 -0
  75. package/dist/types/events/item/event-list-item.types.d.ts +46 -0
  76. package/dist/types/events/item/event-list-item.utils.d.mts +23 -0
  77. package/dist/types/events/item/event-list-item.utils.d.ts +23 -0
  78. package/dist/types/events/item/index.d.mts +6 -0
  79. package/dist/types/events/item/index.d.ts +6 -0
  80. package/dist/types/events/item-details/event-list-item-details.constants.d.mts +10 -0
  81. package/dist/types/events/item-details/event-list-item-details.constants.d.ts +10 -0
  82. package/dist/types/events/item-details/event-list-item-details.types.d.mts +53 -0
  83. package/dist/types/events/item-details/event-list-item-details.types.d.ts +53 -0
  84. package/dist/types/events/item-details/event-list-item-details.utils.d.mts +26 -0
  85. package/dist/types/events/item-details/event-list-item-details.utils.d.ts +26 -0
  86. package/dist/types/events/item-details/index.d.mts +6 -0
  87. package/dist/types/events/item-details/index.d.ts +6 -0
  88. package/dist/types/events/list/event-list.constants.d.mts +3 -0
  89. package/dist/types/events/list/event-list.constants.d.ts +3 -0
  90. package/dist/types/events/list/event-list.types.d.mts +21 -0
  91. package/dist/types/events/list/event-list.types.d.ts +21 -0
  92. package/dist/types/events/list/event-list.utils.d.mts +6 -0
  93. package/dist/types/events/list/event-list.utils.d.ts +6 -0
  94. package/dist/types/events/list/index.d.mts +6 -0
  95. package/dist/types/events/list/index.d.ts +6 -0
  96. package/dist/types/events/market-details/index.d.mts +6 -0
  97. package/dist/types/events/market-details/index.d.ts +6 -0
  98. package/dist/types/events/market-details/market-details.constants.d.mts +9 -0
  99. package/dist/types/events/market-details/market-details.constants.d.ts +9 -0
  100. package/dist/types/events/market-details/market-details.types.d.mts +63 -0
  101. package/dist/types/events/market-details/market-details.types.d.ts +63 -0
  102. package/dist/types/events/market-details/market-details.utils.d.mts +46 -0
  103. package/dist/types/events/market-details/market-details.utils.d.ts +46 -0
  104. package/dist/types/index.d.mts +9 -0
  105. package/dist/types/index.d.ts +9 -0
  106. package/dist/types/modals/index.d.mts +4 -0
  107. package/dist/types/modals/index.d.ts +4 -0
  108. package/dist/types/onboarding/index.d.mts +11 -0
  109. package/dist/types/onboarding/index.d.ts +11 -0
  110. package/dist/types/onboarding/onboarding-modal.constants.d.mts +10 -0
  111. package/dist/types/onboarding/onboarding-modal.constants.d.ts +10 -0
  112. package/dist/types/onboarding/onboarding-modal.types.d.mts +55 -0
  113. package/dist/types/onboarding/onboarding-modal.types.d.ts +55 -0
  114. package/dist/types/onboarding/steps/connect-accounts.d.mts +5 -0
  115. package/dist/types/onboarding/steps/connect-accounts.d.ts +5 -0
  116. package/dist/types/onboarding/steps/connect-kalshi-modal.d.mts +5 -0
  117. package/dist/types/onboarding/steps/connect-kalshi-modal.d.ts +5 -0
  118. package/dist/types/onboarding/steps/connect-onchain-modal.d.mts +5 -0
  119. package/dist/types/onboarding/steps/connect-onchain-modal.d.ts +5 -0
  120. package/dist/types/onboarding/steps/how-it-works.d.mts +5 -0
  121. package/dist/types/onboarding/steps/how-it-works.d.ts +5 -0
  122. package/dist/types/onboarding/steps/profile-setup.d.mts +5 -0
  123. package/dist/types/onboarding/steps/profile-setup.d.ts +5 -0
  124. package/dist/types/pages/event-market/event-market.types.d.mts +42 -0
  125. package/dist/types/pages/event-market/event-market.types.d.ts +42 -0
  126. package/dist/types/pages/event-market/index.d.mts +6 -0
  127. package/dist/types/pages/event-market/index.d.ts +6 -0
  128. package/dist/types/pages/home/home.constants.d.mts +8 -0
  129. package/dist/types/pages/home/home.constants.d.ts +8 -0
  130. package/dist/{home-page.d.ts → types/pages/home/home.types.d.mts} +8 -18
  131. package/dist/{home-page.d.mts → types/pages/home/home.types.d.ts} +8 -18
  132. package/dist/types/pages/home/home.utils.d.mts +3 -0
  133. package/dist/types/pages/home/home.utils.d.ts +3 -0
  134. package/dist/types/pages/home/index.d.mts +6 -0
  135. package/dist/types/pages/home/index.d.ts +6 -0
  136. package/dist/types/pages/index.d.mts +3 -0
  137. package/dist/types/pages/index.d.ts +3 -0
  138. package/dist/types/pages/user-profile/components/activity-row.d.mts +10 -0
  139. package/dist/types/pages/user-profile/components/activity-row.d.ts +10 -0
  140. package/dist/types/pages/user-profile/components/balance-display.d.mts +12 -0
  141. package/dist/types/pages/user-profile/components/balance-display.d.ts +12 -0
  142. package/dist/types/pages/user-profile/components/balances-card.d.mts +12 -0
  143. package/dist/types/pages/user-profile/components/balances-card.d.ts +12 -0
  144. package/dist/types/pages/user-profile/components/default-avatar.d.mts +8 -0
  145. package/dist/types/pages/user-profile/components/default-avatar.d.ts +8 -0
  146. package/dist/types/pages/user-profile/components/empty-state.d.mts +10 -0
  147. package/dist/types/pages/user-profile/components/empty-state.d.ts +10 -0
  148. package/dist/types/pages/user-profile/components/position-row.d.mts +10 -0
  149. package/dist/types/pages/user-profile/components/position-row.d.ts +10 -0
  150. package/dist/types/pages/user-profile/components/positions-activity.d.mts +14 -0
  151. package/dist/types/pages/user-profile/components/positions-activity.d.ts +14 -0
  152. package/dist/types/pages/user-profile/components/user-info-card.d.mts +11 -0
  153. package/dist/types/pages/user-profile/components/user-info-card.d.ts +11 -0
  154. package/dist/types/pages/user-profile/index.d.mts +6 -0
  155. package/dist/types/pages/user-profile/index.d.ts +6 -0
  156. package/dist/types/pages/user-profile/user-profile.constants.d.mts +9 -0
  157. package/dist/types/pages/user-profile/user-profile.constants.d.ts +9 -0
  158. package/dist/{user-profile-page.d.ts → types/pages/user-profile/user-profile.types.d.mts} +12 -22
  159. package/dist/{user-profile-page.d.mts → types/pages/user-profile/user-profile.types.d.ts} +12 -22
  160. package/dist/types/primitives/badge/badge.constants.d.mts +4 -0
  161. package/dist/types/primitives/badge/badge.constants.d.ts +4 -0
  162. package/dist/types/primitives/badge/badge.types.d.mts +18 -0
  163. package/dist/types/primitives/badge/badge.types.d.ts +18 -0
  164. package/dist/types/primitives/badge/index.d.mts +7 -0
  165. package/dist/types/primitives/badge/index.d.ts +7 -0
  166. package/dist/types/primitives/button/button.constants.d.mts +6 -0
  167. package/dist/types/primitives/button/button.constants.d.ts +6 -0
  168. package/dist/types/primitives/button/button.types.d.mts +12 -0
  169. package/dist/types/primitives/button/button.types.d.ts +12 -0
  170. package/dist/types/primitives/button/index.d.mts +6 -0
  171. package/dist/types/primitives/button/index.d.ts +6 -0
  172. package/dist/types/primitives/card/card.types.d.mts +3 -0
  173. package/dist/types/primitives/card/card.types.d.ts +3 -0
  174. package/dist/types/primitives/card/index.d.mts +6 -0
  175. package/dist/types/primitives/card/index.d.ts +6 -0
  176. package/dist/{chart.d.mts → types/primitives/chart/index.d.mts} +7 -10
  177. package/dist/{chart.d.ts → types/primitives/chart/index.d.ts} +7 -10
  178. package/dist/types/primitives/hello-world.d.mts +4 -0
  179. package/dist/types/primitives/hello-world.d.ts +4 -0
  180. package/dist/types/primitives/icon/icon.constants.d.mts +2 -0
  181. package/dist/types/primitives/icon/icon.constants.d.ts +2 -0
  182. package/dist/types/primitives/icon/icon.types.d.mts +9 -0
  183. package/dist/types/primitives/icon/icon.types.d.ts +9 -0
  184. package/dist/types/primitives/icon/icon.utils.d.mts +2 -0
  185. package/dist/types/primitives/icon/icon.utils.d.ts +2 -0
  186. package/dist/types/primitives/icon/index.d.mts +46 -0
  187. package/dist/types/primitives/icon/index.d.ts +46 -0
  188. package/dist/types/primitives/icon/registry.d.mts +166 -0
  189. package/dist/types/primitives/icon/registry.d.ts +166 -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/check-badge.d.mts +5 -0
  201. package/dist/types/primitives/icon/svg/check-badge.d.ts +5 -0
  202. package/dist/types/primitives/icon/svg/check-circle.d.mts +5 -0
  203. package/dist/types/primitives/icon/svg/check-circle.d.ts +5 -0
  204. package/dist/types/primitives/icon/svg/chevron-down.d.mts +5 -0
  205. package/dist/types/primitives/icon/svg/chevron-down.d.ts +5 -0
  206. package/dist/types/primitives/icon/svg/chevron-left.d.mts +5 -0
  207. package/dist/types/primitives/icon/svg/chevron-left.d.ts +5 -0
  208. package/dist/types/primitives/icon/svg/chevron-right.d.mts +5 -0
  209. package/dist/types/primitives/icon/svg/chevron-right.d.ts +5 -0
  210. package/dist/types/primitives/icon/svg/chevron-up.d.mts +5 -0
  211. package/dist/types/primitives/icon/svg/chevron-up.d.ts +5 -0
  212. package/dist/types/primitives/icon/svg/close.d.mts +5 -0
  213. package/dist/types/primitives/icon/svg/close.d.ts +5 -0
  214. package/dist/types/primitives/icon/svg/copy.d.mts +5 -0
  215. package/dist/types/primitives/icon/svg/copy.d.ts +5 -0
  216. package/dist/types/primitives/icon/svg/create-account.d.mts +5 -0
  217. package/dist/types/primitives/icon/svg/create-account.d.ts +5 -0
  218. package/dist/types/primitives/icon/svg/credit-card.d.mts +5 -0
  219. package/dist/types/primitives/icon/svg/credit-card.d.ts +5 -0
  220. package/dist/types/primitives/icon/svg/disconnect.d.mts +5 -0
  221. package/dist/types/primitives/icon/svg/disconnect.d.ts +5 -0
  222. package/dist/types/primitives/icon/svg/discord.d.mts +5 -0
  223. package/dist/types/primitives/icon/svg/discord.d.ts +5 -0
  224. package/dist/types/primitives/icon/svg/document.d.mts +5 -0
  225. package/dist/types/primitives/icon/svg/document.d.ts +5 -0
  226. package/dist/types/primitives/icon/svg/dots-horizontal.d.mts +5 -0
  227. package/dist/types/primitives/icon/svg/dots-horizontal.d.ts +5 -0
  228. package/dist/types/primitives/icon/svg/download.d.mts +5 -0
  229. package/dist/types/primitives/icon/svg/download.d.ts +5 -0
  230. package/dist/types/primitives/icon/svg/email.d.mts +5 -0
  231. package/dist/types/primitives/icon/svg/email.d.ts +5 -0
  232. package/dist/types/primitives/icon/svg/external-link.d.mts +5 -0
  233. package/dist/types/primitives/icon/svg/external-link.d.ts +5 -0
  234. package/dist/types/primitives/icon/svg/info.d.mts +5 -0
  235. package/dist/types/primitives/icon/svg/info.d.ts +5 -0
  236. package/dist/types/primitives/icon/svg/link-accounts.d.mts +5 -0
  237. package/dist/types/primitives/icon/svg/link-accounts.d.ts +5 -0
  238. package/dist/types/primitives/icon/svg/pencil.d.mts +5 -0
  239. package/dist/types/primitives/icon/svg/pencil.d.ts +5 -0
  240. package/dist/types/primitives/icon/svg/play-square.d.mts +5 -0
  241. package/dist/types/primitives/icon/svg/play-square.d.ts +5 -0
  242. package/dist/types/primitives/icon/svg/profile.d.mts +5 -0
  243. package/dist/types/primitives/icon/svg/profile.d.ts +5 -0
  244. package/dist/types/primitives/icon/svg/revenue-alt.d.mts +5 -0
  245. package/dist/types/primitives/icon/svg/revenue-alt.d.ts +5 -0
  246. package/dist/types/primitives/icon/svg/search.d.mts +5 -0
  247. package/dist/types/primitives/icon/svg/search.d.ts +5 -0
  248. package/dist/types/primitives/icon/svg/shield-trust.d.mts +5 -0
  249. package/dist/types/primitives/icon/svg/shield-trust.d.ts +5 -0
  250. package/dist/types/primitives/icon/svg/stay-in-control.d.mts +5 -0
  251. package/dist/types/primitives/icon/svg/stay-in-control.d.ts +5 -0
  252. package/dist/types/primitives/icon/svg/telegram.d.mts +5 -0
  253. package/dist/types/primitives/icon/svg/telegram.d.ts +5 -0
  254. package/dist/types/primitives/icon/svg/triangle-down.d.mts +5 -0
  255. package/dist/types/primitives/icon/svg/triangle-down.d.ts +5 -0
  256. package/dist/types/primitives/icon/svg/triangle-up-filled.d.mts +5 -0
  257. package/dist/types/primitives/icon/svg/triangle-up-filled.d.ts +5 -0
  258. package/dist/types/primitives/icon/svg/triangle-up.d.mts +5 -0
  259. package/dist/types/primitives/icon/svg/triangle-up.d.ts +5 -0
  260. package/dist/types/primitives/icon/svg/twitter.d.mts +5 -0
  261. package/dist/types/primitives/icon/svg/twitter.d.ts +5 -0
  262. package/dist/types/primitives/icon/svg/upload.d.mts +5 -0
  263. package/dist/types/primitives/icon/svg/upload.d.ts +5 -0
  264. package/dist/types/primitives/icon/svg/wallet-avatar.d.mts +5 -0
  265. package/dist/types/primitives/icon/svg/wallet-avatar.d.ts +5 -0
  266. package/dist/types/primitives/icon/svg/wallet.d.mts +5 -0
  267. package/dist/types/primitives/icon/svg/wallet.d.ts +5 -0
  268. package/dist/types/primitives/icon/svg/warning-filled.d.mts +5 -0
  269. package/dist/types/primitives/icon/svg/warning-filled.d.ts +5 -0
  270. package/dist/types/primitives/icon/svg/warning.d.mts +5 -0
  271. package/dist/types/primitives/icon/svg/warning.d.ts +5 -0
  272. package/dist/types/primitives/icon/types.d.mts +5 -0
  273. package/dist/types/primitives/icon/types.d.ts +5 -0
  274. package/dist/types/primitives/index.d.mts +17 -0
  275. package/dist/types/primitives/index.d.ts +17 -0
  276. package/dist/types/primitives/loading-icon/index.d.mts +11 -0
  277. package/dist/types/primitives/loading-icon/index.d.ts +11 -0
  278. package/dist/types/primitives/modal/index.d.mts +10 -0
  279. package/dist/types/primitives/modal/index.d.ts +10 -0
  280. package/dist/types/primitives/modal/modal.types.d.mts +54 -0
  281. package/dist/types/primitives/modal/modal.types.d.ts +54 -0
  282. package/dist/{number-value.d.mts → types/primitives/number-value.d.mts} +3 -5
  283. package/dist/{number-value.d.ts → types/primitives/number-value.d.ts} +3 -5
  284. package/dist/types/primitives/search/index.d.mts +6 -0
  285. package/dist/types/primitives/search/index.d.ts +6 -0
  286. package/dist/types/primitives/search/search-empty-icon.d.mts +5 -0
  287. package/dist/types/primitives/search/search-empty-icon.d.ts +5 -0
  288. package/dist/types/primitives/search/search.types.d.mts +96 -0
  289. package/dist/types/primitives/search/search.types.d.ts +96 -0
  290. package/dist/{select.d.mts → types/primitives/select/index.d.mts} +3 -5
  291. package/dist/{select.d.ts → types/primitives/select/index.d.ts} +3 -5
  292. package/dist/types/primitives/skeleton/index.d.mts +7 -0
  293. package/dist/types/primitives/skeleton/index.d.ts +7 -0
  294. package/dist/types/primitives/skeleton/skeleton-block.d.mts +8 -0
  295. package/dist/types/primitives/skeleton/skeleton-block.d.ts +8 -0
  296. package/dist/{skeleton.d.mts → types/primitives/skeleton/skeleton.types.d.mts} +6 -9
  297. package/dist/{skeleton.d.ts → types/primitives/skeleton/skeleton.types.d.ts} +6 -9
  298. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.mts +5 -0
  299. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.ts +5 -0
  300. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.mts +9 -0
  301. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.ts +9 -0
  302. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.mts +5 -0
  303. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.ts +5 -0
  304. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.mts +12 -0
  305. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.ts +12 -0
  306. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.mts +5 -0
  307. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.ts +5 -0
  308. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.mts +5 -0
  309. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.ts +5 -0
  310. package/dist/{state-message.d.mts → types/primitives/state-message/index.d.mts} +2 -3
  311. package/dist/{state-message.d.ts → types/primitives/state-message/index.d.ts} +2 -3
  312. package/dist/{switch-button.d.mts → types/primitives/switch-button/index.d.mts} +4 -7
  313. package/dist/{switch-button.d.ts → types/primitives/switch-button/index.d.ts} +4 -7
  314. package/dist/types/primitives/tabs/index.d.mts +6 -0
  315. package/dist/types/primitives/tabs/index.d.ts +6 -0
  316. package/dist/types/primitives/tabs/tabs.types.d.mts +24 -0
  317. package/dist/types/primitives/tabs/tabs.types.d.ts +24 -0
  318. package/dist/types/primitives/tabs/tabs.utils.d.mts +14 -0
  319. package/dist/types/primitives/tabs/tabs.utils.d.ts +14 -0
  320. package/dist/types/primitives/typography/index.d.mts +7 -0
  321. package/dist/types/primitives/typography/index.d.ts +7 -0
  322. package/dist/types/primitives/typography/typography.constants.d.mts +3 -0
  323. package/dist/types/primitives/typography/typography.constants.d.ts +3 -0
  324. package/dist/types/primitives/typography/typography.types.d.mts +8 -0
  325. package/dist/types/primitives/typography/typography.types.d.ts +8 -0
  326. package/dist/types/primitives/venue-logo/index.d.mts +8 -0
  327. package/dist/types/primitives/venue-logo/index.d.ts +8 -0
  328. package/dist/types/primitives/venue-logo/logo-props.d.mts +10 -0
  329. package/dist/types/primitives/venue-logo/logo-props.d.ts +10 -0
  330. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.mts +5 -0
  331. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.ts +5 -0
  332. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.mts +5 -0
  333. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.ts +5 -0
  334. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.mts +5 -0
  335. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.ts +5 -0
  336. package/dist/types/primitives/venue-logo/svg/logo-probable.d.mts +5 -0
  337. package/dist/types/primitives/venue-logo/svg/logo-probable.d.ts +5 -0
  338. package/dist/types/primitives/venue-logo/venue-logo.constants.d.mts +9 -0
  339. package/dist/types/primitives/venue-logo/venue-logo.constants.d.ts +9 -0
  340. package/dist/types/primitives/venue-logo/venue-logo.types.d.mts +17 -0
  341. package/dist/types/primitives/venue-logo/venue-logo.types.d.ts +17 -0
  342. package/dist/types/profile/index.d.mts +6 -0
  343. package/dist/types/profile/index.d.ts +6 -0
  344. package/dist/types/profile/profile-modal.constants.d.mts +17 -0
  345. package/dist/types/profile/profile-modal.constants.d.ts +17 -0
  346. package/dist/{profile-modal.d.mts → types/profile/profile-modal.types.d.mts} +4 -11
  347. package/dist/{profile-modal.d.ts → types/profile/profile-modal.types.d.ts} +4 -11
  348. package/dist/types/profile/tabs/about-tab.d.mts +16 -0
  349. package/dist/types/profile/tabs/about-tab.d.ts +16 -0
  350. package/dist/types/profile/tabs/accounts-wallets-tab.d.mts +18 -0
  351. package/dist/types/profile/tabs/accounts-wallets-tab.d.ts +18 -0
  352. package/dist/types/shared/constants.d.mts +23 -0
  353. package/dist/types/shared/constants.d.ts +23 -0
  354. package/dist/types/shared/query-error.d.mts +2 -0
  355. package/dist/types/shared/query-error.d.ts +2 -0
  356. package/dist/types/shared/types.d.mts +1 -0
  357. package/dist/types/shared/types.d.ts +1 -0
  358. package/dist/types/shared/utils.d.mts +15 -0
  359. package/dist/types/shared/utils.d.ts +15 -0
  360. package/dist/types/trading/index.d.mts +4 -0
  361. package/dist/types/trading/index.d.ts +4 -0
  362. package/dist/{place-order.d.ts → types/trading/place-order/index.d.mts} +3 -7
  363. package/dist/{place-order.d.mts → types/trading/place-order/index.d.ts} +3 -7
  364. package/dist/{settlement.d.ts → types/trading/settlement/index.d.mts} +3 -7
  365. package/dist/{settlement.d.mts → types/trading/settlement/index.d.ts} +3 -7
  366. package/dist/{types-BImwqY4o.d.ts → types/trading/types.d.mts} +35 -38
  367. package/dist/{types-BImwqY4o.d.mts → types/trading/types.d.ts} +35 -38
  368. package/dist/types/trading/utils.d.mts +16 -0
  369. package/dist/types/trading/utils.d.ts +16 -0
  370. package/dist/types/withdraw/index.d.mts +6 -0
  371. package/dist/types/withdraw/index.d.ts +6 -0
  372. package/dist/types/withdraw/steps/kalshi-withdraw.d.mts +5 -0
  373. package/dist/types/withdraw/steps/kalshi-withdraw.d.ts +5 -0
  374. package/dist/types/withdraw/steps/venue-selection.d.mts +6 -0
  375. package/dist/types/withdraw/steps/venue-selection.d.ts +6 -0
  376. package/dist/types/withdraw/steps/withdraw-amount.d.mts +8 -0
  377. package/dist/types/withdraw/steps/withdraw-amount.d.ts +8 -0
  378. package/dist/types/withdraw/steps/withdraw-method.d.mts +7 -0
  379. package/dist/types/withdraw/steps/withdraw-method.d.ts +7 -0
  380. package/dist/types/withdraw/withdraw-modal.constants.d.mts +9 -0
  381. package/dist/types/withdraw/withdraw-modal.constants.d.ts +9 -0
  382. package/dist/{withdraw-modal.d.mts → types/withdraw/withdraw-modal.types.d.mts} +3 -10
  383. package/dist/{withdraw-modal.d.ts → types/withdraw/withdraw-modal.types.d.ts} +3 -10
  384. package/package.json +33 -283
  385. package/dist/badge.d.mts +0 -28
  386. package/dist/badge.d.ts +0 -28
  387. package/dist/badge.js +0 -110
  388. package/dist/badge.mjs +0 -9
  389. package/dist/button.d.mts +0 -20
  390. package/dist/button.d.ts +0 -20
  391. package/dist/button.js +0 -183
  392. package/dist/button.mjs +0 -8
  393. package/dist/card.d.mts +0 -10
  394. package/dist/card.d.ts +0 -10
  395. package/dist/card.js +0 -88
  396. package/dist/card.mjs +0 -7
  397. package/dist/chart.mjs +0 -8
  398. package/dist/chunk-34IRJYSU.mjs +0 -146
  399. package/dist/chunk-3QLOUBDJ.mjs +0 -483
  400. package/dist/chunk-3W7NBJLU.mjs +0 -371
  401. package/dist/chunk-4343LYSH.mjs +0 -45
  402. package/dist/chunk-4S3I6X7F.mjs +0 -855
  403. package/dist/chunk-4VUDTWH7.mjs +0 -42
  404. package/dist/chunk-6JG6I5AY.mjs +0 -654
  405. package/dist/chunk-BNDFQPHF.mjs +0 -9
  406. package/dist/chunk-CTYJVVHJ.mjs +0 -334
  407. package/dist/chunk-DHBHKIJR.mjs +0 -1049
  408. package/dist/chunk-ERGNR6UQ.mjs +0 -67
  409. package/dist/chunk-FO263M3V.mjs +0 -10
  410. package/dist/chunk-FO2QCB4Z.mjs +0 -35
  411. package/dist/chunk-GFBF2J3Y.mjs +0 -328
  412. package/dist/chunk-GJ4U5NCE.mjs +0 -134
  413. package/dist/chunk-K6IJ4WBM.mjs +0 -67
  414. package/dist/chunk-KAGYJ4XT.mjs +0 -126
  415. package/dist/chunk-KIYMVWL4.mjs +0 -280
  416. package/dist/chunk-LCZKSITC.mjs +0 -162
  417. package/dist/chunk-M4RJHRFT.mjs +0 -445
  418. package/dist/chunk-MJHKBCXQ.mjs +0 -379
  419. package/dist/chunk-MKVGQ7AS.mjs +0 -168
  420. package/dist/chunk-NDG43KGL.mjs +0 -44
  421. package/dist/chunk-NH2G3POM.mjs +0 -470
  422. package/dist/chunk-OBCHURW5.mjs +0 -64
  423. package/dist/chunk-OJVTGNIF.mjs +0 -230
  424. package/dist/chunk-PORVP72S.mjs +0 -277
  425. package/dist/chunk-Q6DGDBPV.mjs +0 -774
  426. package/dist/chunk-QLMVKLNJ.mjs +0 -669
  427. package/dist/chunk-S3H63TQ5.mjs +0 -537
  428. package/dist/chunk-T7TATHPD.mjs +0 -313
  429. package/dist/chunk-XUCS575S.mjs +0 -65
  430. package/dist/chunk-ZFMCCBP6.mjs +0 -25
  431. package/dist/connect-button.mjs +0 -14
  432. package/dist/deposit-modal.mjs +0 -15
  433. package/dist/event-list-item-details.d.mts +0 -11
  434. package/dist/event-list-item-details.d.ts +0 -11
  435. package/dist/event-list-item-details.js +0 -3711
  436. package/dist/event-list-item-details.mjs +0 -23
  437. package/dist/event-list-item-details.types-CMbXOrT-.d.ts +0 -53
  438. package/dist/event-list-item-details.types-DekJKeMD.d.mts +0 -53
  439. package/dist/event-list-item.d.mts +0 -10
  440. package/dist/event-list-item.d.ts +0 -10
  441. package/dist/event-list-item.js +0 -2821
  442. package/dist/event-list-item.mjs +0 -20
  443. package/dist/event-list-item.types-Y6IeJ4e4.d.mts +0 -46
  444. package/dist/event-list-item.types-Y6IeJ4e4.d.ts +0 -46
  445. package/dist/event-list.d.mts +0 -9
  446. package/dist/event-list.d.ts +0 -9
  447. package/dist/event-list.mjs +0 -23
  448. package/dist/event-list.types-CkAAUqwW.d.mts +0 -13
  449. package/dist/event-list.types-CkAAUqwW.d.ts +0 -13
  450. package/dist/event-market-page.d.mts +0 -52
  451. package/dist/event-market-page.d.ts +0 -52
  452. package/dist/event-market-page.mjs +0 -30
  453. package/dist/hello-world.d.mts +0 -8
  454. package/dist/hello-world.d.ts +0 -8
  455. package/dist/hello-world.js +0 -92
  456. package/dist/hello-world.mjs +0 -8
  457. package/dist/home-page.mjs +0 -24
  458. package/dist/icon.d.mts +0 -193
  459. package/dist/icon.d.ts +0 -193
  460. package/dist/icon.js +0 -1465
  461. package/dist/loading-icon.d.mts +0 -14
  462. package/dist/loading-icon.d.ts +0 -14
  463. package/dist/loading-icon.js +0 -112
  464. package/dist/loading-icon.mjs +0 -8
  465. package/dist/market-details.d.mts +0 -73
  466. package/dist/market-details.d.ts +0 -73
  467. package/dist/market-details.mjs +0 -24
  468. package/dist/modal.d.mts +0 -66
  469. package/dist/modal.d.ts +0 -66
  470. package/dist/modal.js +0 -321
  471. package/dist/modal.mjs +0 -9
  472. package/dist/number-value.js +0 -67
  473. package/dist/number-value.mjs +0 -7
  474. package/dist/onboarding-modal.d.mts +0 -88
  475. package/dist/onboarding-modal.d.ts +0 -88
  476. package/dist/onboarding-modal.js +0 -2836
  477. package/dist/onboarding-modal.mjs +0 -24
  478. package/dist/place-order.js +0 -3248
  479. package/dist/place-order.mjs +0 -18
  480. package/dist/profile-modal.js +0 -2447
  481. package/dist/profile-modal.mjs +0 -14
  482. package/dist/registry-DfSCFAdC.d.mts +0 -178
  483. package/dist/registry-DfSCFAdC.d.ts +0 -178
  484. package/dist/search.d.mts +0 -51
  485. package/dist/search.d.ts +0 -51
  486. package/dist/search.js +0 -1957
  487. package/dist/search.mjs +0 -13
  488. package/dist/select.js +0 -1552
  489. package/dist/select.mjs +0 -11
  490. package/dist/settlement.js +0 -2445
  491. package/dist/settlement.mjs +0 -15
  492. package/dist/skeleton.js +0 -490
  493. package/dist/skeleton.mjs +0 -10
  494. package/dist/state-message.js +0 -1629
  495. package/dist/state-message.mjs +0 -14
  496. package/dist/switch-button.js +0 -191
  497. package/dist/switch-button.mjs +0 -7
  498. package/dist/tabs.d.mts +0 -31
  499. package/dist/tabs.d.ts +0 -31
  500. package/dist/tabs.js +0 -2078
  501. package/dist/tabs.mjs +0 -12
  502. package/dist/types-BVj9ky9P.d.mts +0 -3
  503. package/dist/types-BVj9ky9P.d.ts +0 -3
  504. package/dist/typography.d.mts +0 -18
  505. package/dist/typography.d.ts +0 -18
  506. package/dist/typography.js +0 -93
  507. package/dist/typography.mjs +0 -9
  508. package/dist/user-profile-page.js +0 -3081
  509. package/dist/user-profile-page.mjs +0 -15
  510. package/dist/venue-logo.d.mts +0 -13
  511. package/dist/venue-logo.d.ts +0 -13
  512. package/dist/venue-logo.js +0 -323
  513. package/dist/venue-logo.mjs +0 -10
  514. package/dist/venue-logo.types-CGUc22ly.d.mts +0 -19
  515. package/dist/venue-logo.types-Dqr39S1-.d.ts +0 -19
  516. package/dist/withdraw-modal.js +0 -2449
  517. package/dist/withdraw-modal.mjs +0 -14
@@ -0,0 +1,2411 @@
1
+ import {
2
+ Modal
3
+ } from "./chunk-ADGL6RFX.mjs";
4
+ import {
5
+ Select
6
+ } from "./chunk-MHCHR65A.mjs";
7
+ import {
8
+ BankIcon,
9
+ BestPricesIcon,
10
+ BoltIcon,
11
+ Button,
12
+ CheckCircleIcon,
13
+ ChevronLeftIcon,
14
+ ChevronRightIcon,
15
+ CopyIcon,
16
+ CreateAccountIcon,
17
+ CreditCardIcon,
18
+ DocumentIcon,
19
+ ExternalLinkIcon,
20
+ Icon,
21
+ LinkAccountsIcon,
22
+ PlaySquareIcon,
23
+ ProfileIcon,
24
+ StayInControlIcon,
25
+ VenueLogo,
26
+ WalletIcon,
27
+ WarningFilledIcon,
28
+ WarningIcon,
29
+ __async,
30
+ cn,
31
+ formatAmountDisplay,
32
+ formatCompactUsd,
33
+ venueLogoLabels
34
+ } from "./chunk-HI4EEDN5.mjs";
35
+
36
+ // src/deposit/index.tsx
37
+ import { useState as useState3 } from "react";
38
+
39
+ // src/deposit/deposit-modal.constants.ts
40
+ var KALSHI_VENUE = "kalshi";
41
+ var KALSHI_DEPOSIT_URL_DEFAULT = "https://kalshi.com/account/deposit";
42
+
43
+ // src/deposit/steps/venue-selection.tsx
44
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
45
+ var VenueRow = ({ venue, onSelect }) => {
46
+ var _a;
47
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
48
+ const hasShortfall = venue.shortfall != null && venue.shortfall > 0;
49
+ return /* @__PURE__ */ jsxs(
50
+ "div",
51
+ {
52
+ className: cn(
53
+ "flex items-center gap-3 sm:gap-4",
54
+ "rounded-xl border border-separator",
55
+ "p-3 sm:p-4",
56
+ "hover:bg-secondary-hover transition-colors cursor-pointer"
57
+ ),
58
+ role: "button",
59
+ tabIndex: 0,
60
+ onClick: () => onSelect(venue.venue),
61
+ onKeyDown: (e) => {
62
+ if (e.key === "Enter" || e.key === " ") {
63
+ e.preventDefault();
64
+ onSelect(venue.venue);
65
+ }
66
+ },
67
+ children: [
68
+ /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(VenueLogo, { venue: venue.venue, size: "large", className: "rounded-lg" }) }),
69
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
70
+ /* @__PURE__ */ jsx("p", { className: "agg-type-body-strong text-agg-foreground", children: displayName }),
71
+ /* @__PURE__ */ jsxs("p", { className: "agg-type-label text-agg-muted-foreground", children: [
72
+ "Balance ",
73
+ formatCompactUsd(venue.balance)
74
+ ] })
75
+ ] }),
76
+ hasShortfall ? /* @__PURE__ */ jsxs("div", { className: "hidden sm:flex items-center gap-1.5 shrink-0", children: [
77
+ /* @__PURE__ */ jsx(WarningFilledIcon, { className: "h-4 w-4 text-agg-warning" }),
78
+ /* @__PURE__ */ jsxs("span", { className: "agg-type-label-strong whitespace-nowrap text-agg-warning", children: [
79
+ "Short ",
80
+ formatCompactUsd(venue.shortfall)
81
+ ] })
82
+ ] }) : null,
83
+ /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(
84
+ Button,
85
+ {
86
+ variant: "secondary",
87
+ size: "small",
88
+ suffix: /* @__PURE__ */ jsx(ChevronRightIcon, {}),
89
+ onClick: (e) => {
90
+ e.stopPropagation();
91
+ onSelect(venue.venue);
92
+ },
93
+ children: hasShortfall ? "Continue" : "Select"
94
+ }
95
+ ) })
96
+ ]
97
+ }
98
+ );
99
+ };
100
+ var VenueSelectionStep = ({
101
+ venues,
102
+ hasAnyShortfall,
103
+ onSelectVenue
104
+ }) => /* @__PURE__ */ jsxs(Fragment, { children: [
105
+ /* @__PURE__ */ jsx(Modal.Header, { title: "Deposit", hideBorder: true }),
106
+ /* @__PURE__ */ jsx(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
107
+ !hasAnyShortfall ? /* @__PURE__ */ jsx("p", { className: "agg-type-body text-agg-foreground", children: "Choose where to deposit funds:" }) : null,
108
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3", children: venues.map((venue) => /* @__PURE__ */ jsx(VenueRow, { venue, onSelect: onSelectVenue }, venue.venue)) })
109
+ ] }) })
110
+ ] });
111
+
112
+ // src/deposit/steps/deposit-method.tsx
113
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
114
+ var DepositMethodCard = ({
115
+ icon,
116
+ title,
117
+ description,
118
+ onContinue
119
+ }) => /* @__PURE__ */ jsxs2(
120
+ "div",
121
+ {
122
+ className: cn(
123
+ "flex items-center gap-3 sm:gap-4",
124
+ "rounded-xl border border-separator",
125
+ "p-3 sm:p-4",
126
+ "hover:bg-secondary-hover transition-colors cursor-pointer"
127
+ ),
128
+ role: "button",
129
+ tabIndex: 0,
130
+ onClick: onContinue,
131
+ onKeyDown: (e) => {
132
+ if (e.key === "Enter" || e.key === " ") {
133
+ e.preventDefault();
134
+ onContinue();
135
+ }
136
+ },
137
+ children: [
138
+ /* @__PURE__ */ jsx2("div", { className: "shrink-0 flex items-center justify-center h-10 w-10 rounded-lg bg-secondary-hover", children: icon }),
139
+ /* @__PURE__ */ jsxs2("div", { className: "flex-1 min-w-0", children: [
140
+ /* @__PURE__ */ jsx2("p", { className: "agg-type-body-strong text-agg-foreground", children: title }),
141
+ /* @__PURE__ */ jsx2("p", { className: "agg-type-label text-agg-muted-foreground", children: description })
142
+ ] }),
143
+ /* @__PURE__ */ jsx2("div", { className: "shrink-0", children: /* @__PURE__ */ jsx2(
144
+ Button,
145
+ {
146
+ variant: "secondary",
147
+ size: "small",
148
+ suffix: /* @__PURE__ */ jsx2(ChevronRightIcon, {}),
149
+ onClick: (e) => {
150
+ e.stopPropagation();
151
+ onContinue();
152
+ },
153
+ children: "Continue"
154
+ }
155
+ ) })
156
+ ]
157
+ }
158
+ );
159
+ var DepositMethodStep = ({
160
+ venue,
161
+ onBack,
162
+ onSelectMethod
163
+ }) => {
164
+ var _a;
165
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
166
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
167
+ /* @__PURE__ */ jsx2(
168
+ Modal.Header,
169
+ {
170
+ title: `Deposit to ${displayName}`,
171
+ hideBorder: true,
172
+ leftElement: /* @__PURE__ */ jsx2(
173
+ "button",
174
+ {
175
+ type: "button",
176
+ className: "mr-2 flex items-center justify-center text-agg-foreground transition-colors hover:cursor-pointer hover:text-agg-foreground/80",
177
+ onClick: onBack,
178
+ "aria-label": "Go back",
179
+ children: /* @__PURE__ */ jsx2(ChevronLeftIcon, { className: "h-6 w-6" })
180
+ }
181
+ )
182
+ }
183
+ ),
184
+ /* @__PURE__ */ jsx2(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-4", children: [
185
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
186
+ /* @__PURE__ */ jsx2(VenueLogo, { venue: venue.venue, size: "small", className: "rounded-sm" }),
187
+ /* @__PURE__ */ jsxs2("p", { className: "agg-type-label text-agg-muted-foreground", children: [
188
+ displayName,
189
+ " balance: ",
190
+ formatCompactUsd(venue.balance)
191
+ ] })
192
+ ] }),
193
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-3", children: [
194
+ /* @__PURE__ */ jsx2(
195
+ DepositMethodCard,
196
+ {
197
+ icon: /* @__PURE__ */ jsx2(BoltIcon, { className: "h-6 w-6 text-agg-foreground" }),
198
+ title: "Transfer Crypto",
199
+ description: "Send USDC from your blockchain wallet.",
200
+ onContinue: () => onSelectMethod("crypto")
201
+ }
202
+ ),
203
+ /* @__PURE__ */ jsx2(
204
+ DepositMethodCard,
205
+ {
206
+ icon: /* @__PURE__ */ jsx2(CreditCardIcon, { className: "h-6 w-6 text-agg-foreground" }),
207
+ title: "Deposit with Card",
208
+ description: "Buy USDC instantly with a debit or credit card.",
209
+ onContinue: () => onSelectMethod("card")
210
+ }
211
+ )
212
+ ] })
213
+ ] }) })
214
+ ] });
215
+ };
216
+
217
+ // src/deposit/steps/card-deposit.tsx
218
+ import { useCallback, useState } from "react";
219
+ import { Fragment as Fragment3, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
220
+ var CardDepositStep = ({
221
+ venue,
222
+ onBack,
223
+ onContinue
224
+ }) => {
225
+ var _a;
226
+ const [rawAmount, setRawAmount] = useState("");
227
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
228
+ const numericAmount = Number(rawAmount) || 0;
229
+ const isValid = numericAmount > 0;
230
+ const handleAmountChange = useCallback((e) => {
231
+ const v = e.target.value.replace(/[^0-9.]/g, "");
232
+ const parts = v.split(".");
233
+ const sanitized = parts.length > 2 ? `${parts[0]}.${parts.slice(1).join("")}` : v;
234
+ setRawAmount(sanitized);
235
+ }, []);
236
+ return /* @__PURE__ */ jsxs3(Fragment3, { children: [
237
+ /* @__PURE__ */ jsx3(
238
+ Modal.Header,
239
+ {
240
+ title: `Deposit to ${displayName}`,
241
+ hideBorder: true,
242
+ leftElement: /* @__PURE__ */ jsx3(
243
+ "button",
244
+ {
245
+ type: "button",
246
+ className: "mr-2 flex items-center justify-center text-agg-foreground transition-colors hover:cursor-pointer hover:text-agg-foreground/80",
247
+ onClick: onBack,
248
+ "aria-label": "Go back",
249
+ children: /* @__PURE__ */ jsx3(ChevronLeftIcon, { className: "h-6 w-6" })
250
+ }
251
+ )
252
+ }
253
+ ),
254
+ /* @__PURE__ */ jsx3(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-6", children: [
255
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
256
+ /* @__PURE__ */ jsx3(VenueLogo, { venue: venue.venue, size: "small", className: "rounded-sm" }),
257
+ /* @__PURE__ */ jsxs3("p", { className: "agg-type-label text-agg-muted-foreground", children: [
258
+ displayName,
259
+ " balance: ",
260
+ formatCompactUsd(venue.balance)
261
+ ] })
262
+ ] }),
263
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-3", children: [
264
+ /* @__PURE__ */ jsx3("div", { className: "shrink-0", children: /* @__PURE__ */ jsx3(
265
+ Select,
266
+ {
267
+ items: [{ value: "USD", label: "USD" }],
268
+ value: "USD",
269
+ onChange: () => {
270
+ },
271
+ ariaLabel: "Currency",
272
+ className: "w-auto"
273
+ }
274
+ ) }),
275
+ /* @__PURE__ */ jsx3("div", { className: "flex-1 min-w-0", children: /* @__PURE__ */ jsxs3("div", { className: "flex items-baseline", children: [
276
+ /* @__PURE__ */ jsx3("span", { className: "agg-type-display text-agg-foreground", children: "$" }),
277
+ /* @__PURE__ */ jsx3(
278
+ "input",
279
+ {
280
+ type: "text",
281
+ inputMode: "decimal",
282
+ "aria-label": "Amount",
283
+ className: cn(
284
+ "agg-type-display w-full bg-transparent outline-none",
285
+ isValid ? "text-agg-foreground" : "text-agg-muted-foreground"
286
+ ),
287
+ placeholder: "0",
288
+ value: rawAmount ? formatAmountDisplay(rawAmount) : "",
289
+ onChange: handleAmountChange
290
+ }
291
+ )
292
+ ] }) })
293
+ ] }),
294
+ /* @__PURE__ */ jsxs3(
295
+ "div",
296
+ {
297
+ className: cn(
298
+ "flex items-center gap-3",
299
+ "rounded-xl border border-separator",
300
+ "p-3 sm:p-4",
301
+ "hover:bg-secondary-hover transition-colors cursor-pointer"
302
+ ),
303
+ role: "button",
304
+ tabIndex: 0,
305
+ children: [
306
+ /* @__PURE__ */ jsxs3("div", { className: "flex-1 min-w-0", children: [
307
+ /* @__PURE__ */ jsx3("p", { className: "agg-type-body-strong text-agg-foreground", children: "Provider" }),
308
+ /* @__PURE__ */ jsx3("p", { className: "agg-type-label text-agg-muted-foreground", children: "Auto-picked for you" })
309
+ ] }),
310
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 shrink-0", children: [
311
+ /* @__PURE__ */ jsx3("span", { className: "agg-type-label-strong text-agg-foreground", children: "Swapped" }),
312
+ /* @__PURE__ */ jsx3(ChevronRightIcon, { className: "h-4 w-4 text-agg-foreground" })
313
+ ] })
314
+ ]
315
+ }
316
+ ),
317
+ /* @__PURE__ */ jsx3(
318
+ Button,
319
+ {
320
+ variant: "primary",
321
+ size: "large",
322
+ className: "w-full",
323
+ disabled: !isValid,
324
+ onClick: () => onContinue(numericAmount),
325
+ children: "Continue"
326
+ }
327
+ )
328
+ ] }) })
329
+ ] });
330
+ };
331
+
332
+ // src/deposit/steps/crypto-transfer.tsx
333
+ import { useCallback as useCallback2, useMemo, useState as useState2 } from "react";
334
+
335
+ // src/shared/constants.ts
336
+ var USDC = {
337
+ value: "USDC",
338
+ label: "USDC",
339
+ iconUrl: "https://assets.snagsolutions.io/public/web/icons/usdc.svg"
340
+ };
341
+ var SUPPORTED_NETWORKS = [
342
+ {
343
+ value: "base",
344
+ label: "Base",
345
+ iconUrl: "https://assets.snagsolutions.io/public/web/icons/chains/base/colored.svg",
346
+ tokens: [USDC]
347
+ },
348
+ {
349
+ value: "mainnet",
350
+ label: "Ethereum Mainnet",
351
+ iconUrl: "https://assets.snagsolutions.io/public/web/icons/chains/eth/colored.svg",
352
+ tokens: [USDC]
353
+ },
354
+ {
355
+ value: "polygon",
356
+ label: "Polygon Mainnet",
357
+ iconUrl: "https://assets.snagsolutions.io/public/web/icons/chains/polygon/colored.svg",
358
+ tokens: [USDC]
359
+ },
360
+ {
361
+ value: "solana",
362
+ label: "Solana",
363
+ iconUrl: "https://assets.snagsolutions.io/public/web/icons/chains/solana/dark.svg",
364
+ tokens: [USDC]
365
+ },
366
+ {
367
+ value: "zksync",
368
+ label: "zkSync Era",
369
+ iconUrl: "https://assets.snagsolutions.io/public/web/icons/chains/zksync/colored.svg",
370
+ tokens: [USDC]
371
+ }
372
+ ];
373
+ var getTokensForNetwork = (networkValue) => {
374
+ var _a;
375
+ const network = SUPPORTED_NETWORKS.find((n) => n.value === networkValue);
376
+ return (_a = network == null ? void 0 : network.tokens) != null ? _a : [];
377
+ };
378
+
379
+ // src/deposit/steps/crypto-transfer.tsx
380
+ import { Fragment as Fragment4, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
381
+ var CryptoTransferStep = ({
382
+ venue,
383
+ onBack,
384
+ onDone
385
+ }) => {
386
+ var _a, _b, _c, _d, _e;
387
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
388
+ const defaultNetwork = (_c = (_b = SUPPORTED_NETWORKS[0]) == null ? void 0 : _b.value) != null ? _c : "";
389
+ const [selectedNetwork, setSelectedNetwork] = useState2(defaultNetwork);
390
+ const tokenItems = useMemo(() => {
391
+ const tokens = getTokensForNetwork(selectedNetwork);
392
+ return tokens.map((t) => ({
393
+ value: t.value,
394
+ label: t.label,
395
+ iconUrl: t.iconUrl
396
+ }));
397
+ }, [selectedNetwork]);
398
+ const [selectedToken, setSelectedToken] = useState2((_e = (_d = tokenItems[0]) == null ? void 0 : _d.value) != null ? _e : "");
399
+ const networkItems = useMemo(
400
+ () => SUPPORTED_NETWORKS.map((n) => ({
401
+ value: n.value,
402
+ label: n.label,
403
+ iconUrl: n.iconUrl
404
+ })),
405
+ []
406
+ );
407
+ const handleNetworkChange = useCallback2((networkValue) => {
408
+ var _a2, _b2;
409
+ setSelectedNetwork(networkValue);
410
+ const tokens = getTokensForNetwork(networkValue);
411
+ setSelectedToken((_b2 = (_a2 = tokens[0]) == null ? void 0 : _a2.value) != null ? _b2 : "");
412
+ }, []);
413
+ const depositAddress = "82nbtQamxV3KPZtyRMXjrQ4xwQJMRcXn2PYmpfQyq5UK";
414
+ const handleCopyAddress = useCallback2(() => {
415
+ void navigator.clipboard.writeText(depositAddress);
416
+ }, [depositAddress]);
417
+ return /* @__PURE__ */ jsxs4(Fragment4, { children: [
418
+ /* @__PURE__ */ jsx4(
419
+ Modal.Header,
420
+ {
421
+ title: `Deposit to ${displayName}`,
422
+ hideBorder: true,
423
+ leftElement: /* @__PURE__ */ jsx4(
424
+ "button",
425
+ {
426
+ type: "button",
427
+ className: "mr-2 flex items-center justify-center text-agg-foreground transition-colors hover:cursor-pointer hover:text-agg-foreground/80",
428
+ onClick: onBack,
429
+ "aria-label": "Go back",
430
+ children: /* @__PURE__ */ jsx4(ChevronLeftIcon, { className: "h-6 w-6" })
431
+ }
432
+ )
433
+ }
434
+ ),
435
+ /* @__PURE__ */ jsx4(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-7", children: [
436
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-5", children: [
437
+ /* @__PURE__ */ jsxs4("div", { className: "flex gap-6", children: [
438
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
439
+ /* @__PURE__ */ jsx4("p", { className: "agg-type-label-strong text-agg-foreground", children: "Supported token" }),
440
+ /* @__PURE__ */ jsx4(
441
+ Select,
442
+ {
443
+ items: tokenItems,
444
+ value: selectedToken,
445
+ onChange: setSelectedToken,
446
+ ariaLabel: "Supported token"
447
+ }
448
+ )
449
+ ] }),
450
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-1 flex-col gap-2 min-w-0", children: [
451
+ /* @__PURE__ */ jsx4("p", { className: "agg-type-label-strong text-agg-foreground", children: "Supported network" }),
452
+ /* @__PURE__ */ jsx4(
453
+ Select,
454
+ {
455
+ items: networkItems,
456
+ value: selectedNetwork,
457
+ onChange: handleNetworkChange,
458
+ ariaLabel: "Supported network"
459
+ }
460
+ )
461
+ ] })
462
+ ] }),
463
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-2", children: [
464
+ /* @__PURE__ */ jsx4("p", { className: "agg-type-label-strong text-agg-foreground", children: "Your deposit address" }),
465
+ /* @__PURE__ */ jsxs4(
466
+ "div",
467
+ {
468
+ className: cn(
469
+ "flex items-center gap-2",
470
+ "rounded border border-separator bg-secondary",
471
+ "h-10 px-3"
472
+ ),
473
+ children: [
474
+ /* @__PURE__ */ jsx4("p", { className: "agg-type-body flex-1 min-w-0 truncate text-agg-foreground", children: depositAddress }),
475
+ /* @__PURE__ */ jsx4(
476
+ "button",
477
+ {
478
+ type: "button",
479
+ className: "shrink-0 text-agg-muted-foreground transition-colors hover:text-agg-foreground",
480
+ onClick: handleCopyAddress,
481
+ "aria-label": "Copy deposit address",
482
+ children: /* @__PURE__ */ jsx4(CopyIcon, { className: "h-4 w-4" })
483
+ }
484
+ )
485
+ ]
486
+ }
487
+ )
488
+ ] })
489
+ ] }),
490
+ /* @__PURE__ */ jsx4(Button, { variant: "secondary", size: "large", className: "w-full", onClick: onDone, children: "Done" })
491
+ ] }) })
492
+ ] });
493
+ };
494
+
495
+ // src/deposit/steps/kalshi-deposit.tsx
496
+ import { Fragment as Fragment5, jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
497
+ var KalshiStepCard = ({
498
+ step,
499
+ title,
500
+ description,
501
+ children
502
+ }) => /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-2 rounded-xl bg-secondary-hover p-4", children: [
503
+ /* @__PURE__ */ jsxs5("p", { className: "agg-type-caption-caps text-agg-muted-foreground", children: [
504
+ "Step ",
505
+ step
506
+ ] }),
507
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-1", children: [
508
+ /* @__PURE__ */ jsx5("p", { className: "agg-type-label-strong text-agg-foreground", children: title }),
509
+ /* @__PURE__ */ jsx5("p", { className: "agg-type-label text-agg-foreground", children: description })
510
+ ] }),
511
+ children
512
+ ] });
513
+ var KalshiDepositStep = ({ depositUrl, onDone }) => /* @__PURE__ */ jsxs5(Fragment5, { children: [
514
+ /* @__PURE__ */ jsx5(Modal.Header, { title: "", hideBorder: true }),
515
+ /* @__PURE__ */ jsx5(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs5("div", { className: "flex flex-col items-center gap-8", children: [
516
+ /* @__PURE__ */ jsx5(
517
+ VenueLogo,
518
+ {
519
+ venue: "kalshi",
520
+ size: "large",
521
+ className: "h-[60px] w-[60px] rounded-lg"
522
+ }
523
+ ),
524
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-col items-center gap-4 text-center", children: [
525
+ /* @__PURE__ */ jsx5("h2", { className: "agg-type-heading text-agg-foreground", children: "Fund Your Kalshi Account" }),
526
+ /* @__PURE__ */ jsx5("p", { className: "agg-type-body text-agg-foreground", children: "To trade on Kalshi you'll need to add funds to your Kalshi balance first. You can do this on Kalshi's site." })
527
+ ] }),
528
+ /* @__PURE__ */ jsxs5("div", { className: "flex w-full flex-col gap-4", children: [
529
+ /* @__PURE__ */ jsx5(
530
+ KalshiStepCard,
531
+ {
532
+ step: 1,
533
+ title: "Open Kalshi Deposit Page",
534
+ description: "Sign in to your Kalshi account and go to Deposit (Add Funds) from your account menu.",
535
+ children: /* @__PURE__ */ jsx5("div", { className: "mt-1", children: /* @__PURE__ */ jsx5(
536
+ Button,
537
+ {
538
+ variant: "secondary",
539
+ size: "small",
540
+ suffix: /* @__PURE__ */ jsx5(ExternalLinkIcon, { className: "h-3.5 w-3.5" }),
541
+ onClick: () => {
542
+ window.open(depositUrl, "_blank", "noopener,noreferrer");
543
+ },
544
+ children: "Open Kalshi"
545
+ }
546
+ ) })
547
+ }
548
+ ),
549
+ /* @__PURE__ */ jsx5(
550
+ KalshiStepCard,
551
+ {
552
+ step: 2,
553
+ title: "Choose a Funding Method",
554
+ description: "Select a deposit method: Bank transfer (ACH), Debit card, Wire, or USDC (crypto)."
555
+ }
556
+ ),
557
+ /* @__PURE__ */ jsx5(
558
+ KalshiStepCard,
559
+ {
560
+ step: 3,
561
+ title: "Complete Your Deposit",
562
+ description: "Follow the on-screen instructions to confirm your deposit. Funds may arrive instantly (card/crypto) or within a few business days (ACH/wire)."
563
+ }
564
+ )
565
+ ] }),
566
+ /* @__PURE__ */ jsx5(Button, { variant: "secondary", size: "large", onClick: onDone, children: "Done" })
567
+ ] }) })
568
+ ] });
569
+
570
+ // src/deposit/index.tsx
571
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
572
+ var DepositModal = ({
573
+ open,
574
+ onOpenChange,
575
+ venues,
576
+ onSelectVenue,
577
+ onSelectDepositMethod,
578
+ onContinueCardDeposit,
579
+ onDoneCryptoTransfer,
580
+ onDoneKalshi,
581
+ kalshiDepositUrl = KALSHI_DEPOSIT_URL_DEFAULT
582
+ }) => {
583
+ const [step, setStep] = useState3("venues");
584
+ const [selectedVenue, setSelectedVenue] = useState3(null);
585
+ const hasAnyShortfall = venues.some((v) => v.shortfall != null && v.shortfall > 0);
586
+ const handleSelectVenue = (venueSlug) => {
587
+ onSelectVenue(venueSlug);
588
+ if (venueSlug === KALSHI_VENUE) {
589
+ setStep("kalshi");
590
+ return;
591
+ }
592
+ const venueData = venues.find((v) => v.venue === venueSlug);
593
+ if (venueData) {
594
+ setSelectedVenue(venueData);
595
+ setStep("method");
596
+ }
597
+ };
598
+ const handleBackToVenues = () => {
599
+ setStep("venues");
600
+ setSelectedVenue(null);
601
+ };
602
+ const handleBackToMethod = () => {
603
+ setStep("method");
604
+ };
605
+ const handleSelectMethod = (method) => {
606
+ if (!selectedVenue)
607
+ return;
608
+ if (method === "card") {
609
+ setStep("card-deposit");
610
+ } else {
611
+ setStep("crypto-transfer");
612
+ onSelectDepositMethod == null ? void 0 : onSelectDepositMethod(selectedVenue.venue, method);
613
+ }
614
+ };
615
+ const handleContinueCardDeposit = (amount) => {
616
+ if (selectedVenue) {
617
+ onContinueCardDeposit == null ? void 0 : onContinueCardDeposit(selectedVenue.venue, amount);
618
+ }
619
+ };
620
+ const handleDoneCryptoTransfer = () => {
621
+ if (selectedVenue) {
622
+ onDoneCryptoTransfer == null ? void 0 : onDoneCryptoTransfer(selectedVenue.venue);
623
+ }
624
+ };
625
+ const handleDoneKalshi = () => {
626
+ onDoneKalshi == null ? void 0 : onDoneKalshi();
627
+ onOpenChange(false);
628
+ };
629
+ const handleOpenChange = (isOpen) => {
630
+ if (!isOpen) {
631
+ setStep("venues");
632
+ setSelectedVenue(null);
633
+ }
634
+ onOpenChange(isOpen);
635
+ };
636
+ return /* @__PURE__ */ jsx6(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs6(Modal.Container, { maxWidth: "600px", "aria-label": "Deposit", children: [
637
+ step === "venues" ? /* @__PURE__ */ jsx6(
638
+ VenueSelectionStep,
639
+ {
640
+ venues,
641
+ hasAnyShortfall,
642
+ onSelectVenue: handleSelectVenue
643
+ }
644
+ ) : null,
645
+ step === "method" && selectedVenue ? /* @__PURE__ */ jsx6(
646
+ DepositMethodStep,
647
+ {
648
+ venue: selectedVenue,
649
+ onBack: handleBackToVenues,
650
+ onSelectMethod: handleSelectMethod
651
+ }
652
+ ) : null,
653
+ step === "card-deposit" && selectedVenue ? /* @__PURE__ */ jsx6(
654
+ CardDepositStep,
655
+ {
656
+ venue: selectedVenue,
657
+ onBack: handleBackToMethod,
658
+ onContinue: handleContinueCardDeposit
659
+ }
660
+ ) : null,
661
+ step === "crypto-transfer" && selectedVenue ? /* @__PURE__ */ jsx6(
662
+ CryptoTransferStep,
663
+ {
664
+ venue: selectedVenue,
665
+ onBack: handleBackToMethod,
666
+ onDone: handleDoneCryptoTransfer
667
+ }
668
+ ) : null,
669
+ step === "kalshi" ? /* @__PURE__ */ jsx6(KalshiDepositStep, { depositUrl: kalshiDepositUrl, onDone: handleDoneKalshi }) : null
670
+ ] }) });
671
+ };
672
+ DepositModal.displayName = "DepositModal";
673
+
674
+ // src/withdraw/index.tsx
675
+ import { useState as useState5 } from "react";
676
+
677
+ // src/withdraw/withdraw-modal.constants.ts
678
+ var KALSHI_VENUE2 = "kalshi";
679
+ var KALSHI_WITHDRAW_URL_DEFAULT = "https://kalshi.com/account/withdraw";
680
+
681
+ // src/withdraw/steps/venue-selection.tsx
682
+ import { Fragment as Fragment6, jsx as jsx7, jsxs as jsxs7 } from "react/jsx-runtime";
683
+ var VenueRow2 = ({ venue, onSelect }) => {
684
+ var _a, _b;
685
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
686
+ const isDisabled = venue.disabled === true;
687
+ return /* @__PURE__ */ jsxs7(
688
+ "div",
689
+ {
690
+ className: cn(
691
+ "flex items-center gap-3 sm:gap-4",
692
+ "rounded-xl border border-separator",
693
+ "p-3 sm:p-4",
694
+ "transition-colors",
695
+ isDisabled ? "opacity-50 cursor-not-allowed" : "hover:bg-secondary-hover cursor-pointer"
696
+ ),
697
+ role: "button",
698
+ tabIndex: isDisabled ? -1 : 0,
699
+ "aria-disabled": isDisabled,
700
+ onClick: () => {
701
+ if (!isDisabled)
702
+ onSelect(venue.venue);
703
+ },
704
+ onKeyDown: (e) => {
705
+ if (!isDisabled && (e.key === "Enter" || e.key === " ")) {
706
+ e.preventDefault();
707
+ onSelect(venue.venue);
708
+ }
709
+ },
710
+ children: [
711
+ /* @__PURE__ */ jsx7("div", { className: "shrink-0", children: /* @__PURE__ */ jsx7(VenueLogo, { venue: venue.venue, size: "large", className: "rounded-lg" }) }),
712
+ /* @__PURE__ */ jsxs7("div", { className: "flex-1 min-w-0", children: [
713
+ /* @__PURE__ */ jsx7("p", { className: "agg-type-body-strong text-agg-foreground", children: displayName }),
714
+ /* @__PURE__ */ jsxs7("p", { className: "agg-type-label text-agg-muted-foreground", children: [
715
+ "Balance ",
716
+ formatCompactUsd(venue.balance)
717
+ ] })
718
+ ] }),
719
+ isDisabled ? /* @__PURE__ */ jsx7("div", { className: "shrink-0", children: /* @__PURE__ */ jsx7("span", { className: "agg-type-label text-agg-muted-foreground", children: (_b = venue.disabledReason) != null ? _b : "Unavailable" }) }) : /* @__PURE__ */ jsx7("div", { className: "shrink-0", children: /* @__PURE__ */ jsx7(
720
+ Button,
721
+ {
722
+ variant: "secondary",
723
+ size: "small",
724
+ suffix: /* @__PURE__ */ jsx7(ChevronRightIcon, {}),
725
+ onClick: (e) => {
726
+ e.stopPropagation();
727
+ onSelect(venue.venue);
728
+ },
729
+ children: "Select"
730
+ }
731
+ ) })
732
+ ]
733
+ }
734
+ );
735
+ };
736
+ var VenueSelectionStep2 = ({
737
+ venues,
738
+ onSelectVenue
739
+ }) => /* @__PURE__ */ jsxs7(Fragment6, { children: [
740
+ /* @__PURE__ */ jsx7(Modal.Header, { title: "Withdraw", hideBorder: true }),
741
+ /* @__PURE__ */ jsx7(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-4", children: [
742
+ /* @__PURE__ */ jsx7("p", { className: "agg-type-body text-agg-foreground", children: "Choose where to withdraw funds from:" }),
743
+ /* @__PURE__ */ jsx7("div", { className: "flex flex-col gap-3", children: venues.map((venue) => /* @__PURE__ */ jsx7(VenueRow2, { venue, onSelect: onSelectVenue }, venue.venue)) })
744
+ ] }) })
745
+ ] });
746
+
747
+ // src/withdraw/steps/withdraw-method.tsx
748
+ import { Fragment as Fragment7, jsx as jsx8, jsxs as jsxs8 } from "react/jsx-runtime";
749
+ var WithdrawMethodCard = ({
750
+ icon,
751
+ title,
752
+ description,
753
+ onContinue
754
+ }) => /* @__PURE__ */ jsxs8(
755
+ "div",
756
+ {
757
+ className: cn(
758
+ "flex items-center gap-3 sm:gap-4",
759
+ "rounded-xl border border-separator",
760
+ "p-3 sm:p-4",
761
+ "hover:bg-secondary-hover transition-colors cursor-pointer"
762
+ ),
763
+ role: "button",
764
+ tabIndex: 0,
765
+ onClick: onContinue,
766
+ onKeyDown: (e) => {
767
+ if (e.key === "Enter" || e.key === " ") {
768
+ e.preventDefault();
769
+ onContinue();
770
+ }
771
+ },
772
+ children: [
773
+ /* @__PURE__ */ jsx8("div", { className: "shrink-0 flex items-center justify-center h-10 w-10 rounded-lg bg-secondary-hover", children: icon }),
774
+ /* @__PURE__ */ jsxs8("div", { className: "flex-1 min-w-0", children: [
775
+ /* @__PURE__ */ jsx8("p", { className: "agg-type-body-strong text-agg-foreground", children: title }),
776
+ /* @__PURE__ */ jsx8("p", { className: "agg-type-label text-agg-muted-foreground", children: description })
777
+ ] }),
778
+ /* @__PURE__ */ jsx8("div", { className: "shrink-0", children: /* @__PURE__ */ jsx8(
779
+ Button,
780
+ {
781
+ variant: "secondary",
782
+ size: "small",
783
+ suffix: /* @__PURE__ */ jsx8(ChevronRightIcon, {}),
784
+ onClick: (e) => {
785
+ e.stopPropagation();
786
+ onContinue();
787
+ },
788
+ children: "Continue"
789
+ }
790
+ ) })
791
+ ]
792
+ }
793
+ );
794
+ var WithdrawMethodStep = ({
795
+ venue,
796
+ onBack,
797
+ onSelectMethod
798
+ }) => {
799
+ var _a;
800
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
801
+ return /* @__PURE__ */ jsxs8(Fragment7, { children: [
802
+ /* @__PURE__ */ jsx8(
803
+ Modal.Header,
804
+ {
805
+ title: `Withdraw from ${displayName}`,
806
+ hideBorder: true,
807
+ leftElement: /* @__PURE__ */ jsx8(
808
+ "button",
809
+ {
810
+ type: "button",
811
+ className: "mr-2 flex items-center justify-center text-agg-foreground transition-colors hover:cursor-pointer hover:text-agg-foreground/80",
812
+ onClick: onBack,
813
+ "aria-label": "Go back",
814
+ children: /* @__PURE__ */ jsx8(ChevronLeftIcon, { className: "h-6 w-6" })
815
+ }
816
+ )
817
+ }
818
+ ),
819
+ /* @__PURE__ */ jsx8(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-4", children: [
820
+ /* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-2", children: [
821
+ /* @__PURE__ */ jsx8(VenueLogo, { venue: venue.venue, size: "small", className: "rounded-sm" }),
822
+ /* @__PURE__ */ jsxs8("p", { className: "agg-type-label text-agg-muted-foreground", children: [
823
+ displayName,
824
+ " balance: ",
825
+ formatCompactUsd(venue.balance)
826
+ ] })
827
+ ] }),
828
+ /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-3", children: [
829
+ /* @__PURE__ */ jsx8(
830
+ WithdrawMethodCard,
831
+ {
832
+ icon: /* @__PURE__ */ jsx8(WalletIcon, { className: "h-6 w-6 text-agg-foreground" }),
833
+ title: "Withdraw to Wallet",
834
+ description: "Send funds to your crypto wallet as USDC.",
835
+ onContinue: () => onSelectMethod("wallet")
836
+ }
837
+ ),
838
+ /* @__PURE__ */ jsx8(
839
+ WithdrawMethodCard,
840
+ {
841
+ icon: /* @__PURE__ */ jsx8(BankIcon, { className: "h-6 w-6 text-agg-foreground" }),
842
+ title: "Withdraw to Bank",
843
+ description: "Transfer funds to your linked bank account.",
844
+ onContinue: () => onSelectMethod("bank")
845
+ }
846
+ )
847
+ ] })
848
+ ] }) })
849
+ ] });
850
+ };
851
+
852
+ // src/withdraw/steps/withdraw-amount.tsx
853
+ import { useCallback as useCallback3, useState as useState4 } from "react";
854
+ import { Fragment as Fragment8, jsx as jsx9, jsxs as jsxs9 } from "react/jsx-runtime";
855
+ var WithdrawAmountStep = ({
856
+ venue,
857
+ method,
858
+ onBack,
859
+ onContinue
860
+ }) => {
861
+ var _a;
862
+ const [rawAmount, setRawAmount] = useState4("");
863
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
864
+ const numericAmount = Number(rawAmount) || 0;
865
+ const isValid = numericAmount > 0 && numericAmount <= venue.balance;
866
+ const exceedsBalance = numericAmount > venue.balance;
867
+ const methodLabel = method === "wallet" ? "Wallet" : "Bank";
868
+ const handleAmountChange = useCallback3((e) => {
869
+ const v = e.target.value.replace(/[^0-9.]/g, "");
870
+ const parts = v.split(".");
871
+ const sanitized = parts.length > 2 ? `${parts[0]}.${parts.slice(1).join("")}` : v;
872
+ setRawAmount(sanitized);
873
+ }, []);
874
+ const handleMax = useCallback3(() => {
875
+ setRawAmount(venue.balance.toString());
876
+ }, [venue.balance]);
877
+ return /* @__PURE__ */ jsxs9(Fragment8, { children: [
878
+ /* @__PURE__ */ jsx9(
879
+ Modal.Header,
880
+ {
881
+ title: `Withdraw to ${methodLabel}`,
882
+ hideBorder: true,
883
+ leftElement: /* @__PURE__ */ jsx9(
884
+ "button",
885
+ {
886
+ type: "button",
887
+ className: "mr-2 flex items-center justify-center text-agg-foreground transition-colors hover:cursor-pointer hover:text-agg-foreground/80",
888
+ onClick: onBack,
889
+ "aria-label": "Go back",
890
+ children: /* @__PURE__ */ jsx9(ChevronLeftIcon, { className: "h-6 w-6" })
891
+ }
892
+ )
893
+ }
894
+ ),
895
+ /* @__PURE__ */ jsx9(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs9("div", { className: "flex flex-col gap-6", children: [
896
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center justify-between", children: [
897
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-center gap-2", children: [
898
+ /* @__PURE__ */ jsx9(VenueLogo, { venue: venue.venue, size: "small", className: "rounded-sm" }),
899
+ /* @__PURE__ */ jsxs9("p", { className: "agg-type-label text-agg-muted-foreground", children: [
900
+ displayName,
901
+ " balance: ",
902
+ formatCompactUsd(venue.balance)
903
+ ] })
904
+ ] }),
905
+ /* @__PURE__ */ jsx9(
906
+ "button",
907
+ {
908
+ type: "button",
909
+ className: "agg-type-label-strong text-agg-primary transition-colors hover:text-agg-primary/80",
910
+ onClick: handleMax,
911
+ children: "Max"
912
+ }
913
+ )
914
+ ] }),
915
+ /* @__PURE__ */ jsxs9("div", { className: "flex-1 min-w-0", children: [
916
+ /* @__PURE__ */ jsxs9("div", { className: "flex items-baseline", children: [
917
+ /* @__PURE__ */ jsx9("span", { className: "agg-type-display text-agg-foreground", children: "$" }),
918
+ /* @__PURE__ */ jsx9(
919
+ "input",
920
+ {
921
+ type: "text",
922
+ inputMode: "decimal",
923
+ "aria-label": "Amount",
924
+ className: cn(
925
+ "agg-type-display w-full bg-transparent outline-none",
926
+ exceedsBalance ? "text-agg-error" : numericAmount > 0 ? "text-agg-foreground" : "text-agg-muted-foreground"
927
+ ),
928
+ placeholder: "0",
929
+ value: rawAmount ? formatAmountDisplay(rawAmount) : "",
930
+ onChange: handleAmountChange
931
+ }
932
+ )
933
+ ] }),
934
+ exceedsBalance ? /* @__PURE__ */ jsx9("p", { className: "agg-type-label mt-2 text-agg-error", children: "Amount exceeds available balance" }) : null
935
+ ] }),
936
+ /* @__PURE__ */ jsx9(
937
+ Button,
938
+ {
939
+ variant: "primary",
940
+ size: "large",
941
+ className: "w-full",
942
+ disabled: !isValid,
943
+ onClick: () => onContinue(numericAmount),
944
+ children: "Continue"
945
+ }
946
+ )
947
+ ] }) })
948
+ ] });
949
+ };
950
+
951
+ // src/withdraw/steps/kalshi-withdraw.tsx
952
+ import { Fragment as Fragment9, jsx as jsx10, jsxs as jsxs10 } from "react/jsx-runtime";
953
+ var KalshiStepCard2 = ({
954
+ step,
955
+ title,
956
+ description,
957
+ children
958
+ }) => /* @__PURE__ */ jsxs10("div", { className: "flex flex-col gap-2 rounded-xl bg-secondary-hover p-4", children: [
959
+ /* @__PURE__ */ jsxs10("p", { className: "agg-type-caption-caps text-agg-muted-foreground", children: [
960
+ "Step ",
961
+ step
962
+ ] }),
963
+ /* @__PURE__ */ jsxs10("div", { className: "flex flex-col gap-1", children: [
964
+ /* @__PURE__ */ jsx10("p", { className: "agg-type-label-strong text-agg-foreground", children: title }),
965
+ /* @__PURE__ */ jsx10("p", { className: "agg-type-label text-agg-foreground", children: description })
966
+ ] }),
967
+ children
968
+ ] });
969
+ var KalshiWithdrawStep = ({
970
+ withdrawUrl,
971
+ onDone
972
+ }) => /* @__PURE__ */ jsxs10(Fragment9, { children: [
973
+ /* @__PURE__ */ jsx10(Modal.Header, { title: "", hideBorder: true }),
974
+ /* @__PURE__ */ jsx10(Modal.Body, { classNames: { root: "px-5 pt-0 pb-6 sm:px-8 sm:pt-0 sm:pb-8" }, children: /* @__PURE__ */ jsxs10("div", { className: "flex flex-col items-center gap-8", children: [
975
+ /* @__PURE__ */ jsx10(
976
+ VenueLogo,
977
+ {
978
+ venue: "kalshi",
979
+ size: "large",
980
+ className: "h-[60px] w-[60px] rounded-lg"
981
+ }
982
+ ),
983
+ /* @__PURE__ */ jsxs10("div", { className: "flex flex-col items-center gap-4 text-center", children: [
984
+ /* @__PURE__ */ jsx10("h2", { className: "agg-type-heading text-agg-foreground", children: "Withdraw from Kalshi" }),
985
+ /* @__PURE__ */ jsx10("p", { className: "agg-type-body text-agg-foreground", children: "To withdraw from Kalshi you'll need to initiate the withdrawal from your Kalshi account directly on Kalshi's site." })
986
+ ] }),
987
+ /* @__PURE__ */ jsxs10("div", { className: "flex w-full flex-col gap-4", children: [
988
+ /* @__PURE__ */ jsx10(
989
+ KalshiStepCard2,
990
+ {
991
+ step: 1,
992
+ title: "Open Kalshi Withdraw Page",
993
+ description: "Sign in to your Kalshi account and go to Withdraw from your account menu.",
994
+ children: /* @__PURE__ */ jsx10("div", { className: "mt-1", children: /* @__PURE__ */ jsx10(
995
+ Button,
996
+ {
997
+ variant: "secondary",
998
+ size: "small",
999
+ suffix: /* @__PURE__ */ jsx10(ExternalLinkIcon, { className: "h-3.5 w-3.5" }),
1000
+ onClick: () => {
1001
+ window.open(withdrawUrl, "_blank", "noopener,noreferrer");
1002
+ },
1003
+ children: "Open Kalshi"
1004
+ }
1005
+ ) })
1006
+ }
1007
+ ),
1008
+ /* @__PURE__ */ jsx10(
1009
+ KalshiStepCard2,
1010
+ {
1011
+ step: 2,
1012
+ title: "Choose a Withdrawal Method",
1013
+ description: "Select a withdrawal method: Bank transfer (ACH), Wire, or USDC (crypto)."
1014
+ }
1015
+ ),
1016
+ /* @__PURE__ */ jsx10(
1017
+ KalshiStepCard2,
1018
+ {
1019
+ step: 3,
1020
+ title: "Complete Your Withdrawal",
1021
+ description: "Follow the on-screen instructions to confirm your withdrawal. Funds may take a few business days to arrive."
1022
+ }
1023
+ )
1024
+ ] }),
1025
+ /* @__PURE__ */ jsx10(Button, { variant: "secondary", size: "large", onClick: onDone, children: "Done" })
1026
+ ] }) })
1027
+ ] });
1028
+
1029
+ // src/withdraw/index.tsx
1030
+ import { jsx as jsx11, jsxs as jsxs11 } from "react/jsx-runtime";
1031
+ var WithdrawModal = ({
1032
+ open,
1033
+ onOpenChange,
1034
+ venues,
1035
+ onSelectVenue,
1036
+ onSelectWithdrawMethod,
1037
+ onContinueWalletWithdraw,
1038
+ onContinueBankWithdraw,
1039
+ onDoneKalshi,
1040
+ kalshiWithdrawUrl = KALSHI_WITHDRAW_URL_DEFAULT
1041
+ }) => {
1042
+ const [step, setStep] = useState5("venues");
1043
+ const [selectedVenue, setSelectedVenue] = useState5(null);
1044
+ const [selectedMethod, setSelectedMethod] = useState5(null);
1045
+ const handleSelectVenue = (venueSlug) => {
1046
+ onSelectVenue(venueSlug);
1047
+ if (venueSlug === KALSHI_VENUE2) {
1048
+ setStep("kalshi");
1049
+ return;
1050
+ }
1051
+ const venueData = venues.find((v) => v.venue === venueSlug);
1052
+ if (venueData) {
1053
+ setSelectedVenue(venueData);
1054
+ setStep("method");
1055
+ }
1056
+ };
1057
+ const handleBackToVenues = () => {
1058
+ setStep("venues");
1059
+ setSelectedVenue(null);
1060
+ setSelectedMethod(null);
1061
+ };
1062
+ const handleBackToMethod = () => {
1063
+ setStep("method");
1064
+ setSelectedMethod(null);
1065
+ };
1066
+ const handleSelectMethod = (method) => {
1067
+ if (!selectedVenue)
1068
+ return;
1069
+ setSelectedMethod(method);
1070
+ setStep("withdraw-amount");
1071
+ onSelectWithdrawMethod == null ? void 0 : onSelectWithdrawMethod(selectedVenue.venue, method);
1072
+ };
1073
+ const handleContinueWithdraw = (amount) => {
1074
+ if (!selectedVenue || !selectedMethod)
1075
+ return;
1076
+ if (selectedMethod === "wallet") {
1077
+ onContinueWalletWithdraw == null ? void 0 : onContinueWalletWithdraw(selectedVenue.venue, amount);
1078
+ } else {
1079
+ onContinueBankWithdraw == null ? void 0 : onContinueBankWithdraw(selectedVenue.venue, amount);
1080
+ }
1081
+ };
1082
+ const handleDoneKalshi = () => {
1083
+ onDoneKalshi == null ? void 0 : onDoneKalshi();
1084
+ onOpenChange(false);
1085
+ };
1086
+ const handleOpenChange = (isOpen) => {
1087
+ if (!isOpen) {
1088
+ setStep("venues");
1089
+ setSelectedVenue(null);
1090
+ setSelectedMethod(null);
1091
+ }
1092
+ onOpenChange(isOpen);
1093
+ };
1094
+ return /* @__PURE__ */ jsx11(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs11(Modal.Container, { maxWidth: "600px", "aria-label": "Withdraw", children: [
1095
+ step === "venues" ? /* @__PURE__ */ jsx11(VenueSelectionStep2, { venues, onSelectVenue: handleSelectVenue }) : null,
1096
+ step === "method" && selectedVenue ? /* @__PURE__ */ jsx11(
1097
+ WithdrawMethodStep,
1098
+ {
1099
+ venue: selectedVenue,
1100
+ onBack: handleBackToVenues,
1101
+ onSelectMethod: handleSelectMethod
1102
+ }
1103
+ ) : null,
1104
+ step === "withdraw-amount" && selectedVenue && selectedMethod ? /* @__PURE__ */ jsx11(
1105
+ WithdrawAmountStep,
1106
+ {
1107
+ venue: selectedVenue,
1108
+ method: selectedMethod,
1109
+ onBack: handleBackToMethod,
1110
+ onContinue: handleContinueWithdraw
1111
+ }
1112
+ ) : null,
1113
+ step === "kalshi" ? /* @__PURE__ */ jsx11(KalshiWithdrawStep, { withdrawUrl: kalshiWithdrawUrl, onDone: handleDoneKalshi }) : null
1114
+ ] }) });
1115
+ };
1116
+ WithdrawModal.displayName = "WithdrawModal";
1117
+
1118
+ // src/onboarding/index.tsx
1119
+ import { useCallback as useCallback8, useEffect, useState as useState10 } from "react";
1120
+ import { useLabels as useLabels6 } from "@agg-market/hooks";
1121
+ import * as Dialog3 from "@radix-ui/react-dialog";
1122
+
1123
+ // src/onboarding/onboarding-modal.constants.ts
1124
+ var HOW_IT_WORKS_FEATURE_KEYS = [
1125
+ "createAccount",
1126
+ "linkAccounts",
1127
+ "bestPrices",
1128
+ "stayInControl"
1129
+ ];
1130
+ var ONBOARDING_STEPS = {
1131
+ HOW_IT_WORKS: 0,
1132
+ PROFILE_SETUP: 1,
1133
+ CONNECT_ACCOUNTS: 2
1134
+ };
1135
+ var ONCHAIN_VENUES = [
1136
+ "polymarket",
1137
+ "opinion",
1138
+ "probable"
1139
+ ];
1140
+
1141
+ // src/onboarding/steps/how-it-works.tsx
1142
+ import { useCallback as useCallback4, useRef, useState as useState6 } from "react";
1143
+ import { useLabels } from "@agg-market/hooks";
1144
+ import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
1145
+ var defaultIcons = {
1146
+ createAccount: /* @__PURE__ */ jsx12(CreateAccountIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" }),
1147
+ linkAccounts: /* @__PURE__ */ jsx12(LinkAccountsIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" }),
1148
+ bestPrices: /* @__PURE__ */ jsx12(BestPricesIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" }),
1149
+ stayInControl: /* @__PURE__ */ jsx12(StayInControlIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" })
1150
+ };
1151
+ var HowItWorksStep = ({ onContinue, icons }) => {
1152
+ const labels = useLabels();
1153
+ const scrollRef = useRef(null);
1154
+ const [showTopGradient, setShowTopGradient] = useState6(false);
1155
+ const [showBottomGradient, setShowBottomGradient] = useState6(true);
1156
+ const handleScroll = useCallback4(() => {
1157
+ const el = scrollRef.current;
1158
+ if (!el)
1159
+ return;
1160
+ setShowTopGradient(el.scrollTop > 0);
1161
+ setShowBottomGradient(el.scrollTop + el.clientHeight < el.scrollHeight - 1);
1162
+ }, []);
1163
+ return /* @__PURE__ */ jsxs12("div", { className: "flex flex-col gap-6 h-[600px] sm:h-auto", children: [
1164
+ /* @__PURE__ */ jsx12("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.howItWorks.title }),
1165
+ /* @__PURE__ */ jsxs12("div", { className: "relative flex-1 min-h-0 sm:flex-initial", children: [
1166
+ /* @__PURE__ */ jsx12(
1167
+ "div",
1168
+ {
1169
+ ref: scrollRef,
1170
+ onScroll: handleScroll,
1171
+ className: "flex flex-col gap-4 overflow-y-auto sm:overflow-visible h-full",
1172
+ children: HOW_IT_WORKS_FEATURE_KEYS.map((featureKey) => {
1173
+ var _a;
1174
+ const icon = (_a = icons == null ? void 0 : icons[featureKey]) != null ? _a : defaultIcons[featureKey];
1175
+ const feature = labels.onboarding.howItWorks.features[featureKey];
1176
+ return /* @__PURE__ */ jsxs12(
1177
+ "div",
1178
+ {
1179
+ className: cn(
1180
+ "flex items-center gap-4 py-4 px-5 sm:px-4",
1181
+ "rounded-agg-md",
1182
+ "bg-agg-secondary-hover"
1183
+ ),
1184
+ children: [
1185
+ /* @__PURE__ */ jsxs12("div", { className: "flex flex-col flex-1 min-w-0 gap-[6px]", children: [
1186
+ /* @__PURE__ */ jsx12("p", { className: "text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: feature.title }),
1187
+ /* @__PURE__ */ jsx12("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: feature.description })
1188
+ ] }),
1189
+ icon ? /* @__PURE__ */ jsx12("div", { className: "hidden shrink-0 items-center justify-center text-agg-muted-foreground sm:flex", children: icon }) : null
1190
+ ]
1191
+ },
1192
+ featureKey
1193
+ );
1194
+ })
1195
+ }
1196
+ ),
1197
+ /* @__PURE__ */ jsx12(
1198
+ "div",
1199
+ {
1200
+ className: cn(
1201
+ "pointer-events-none absolute inset-x-0 top-0 h-20",
1202
+ "bg-gradient-to-b from-agg-secondary to-transparent",
1203
+ "sm:hidden transition-opacity",
1204
+ showTopGradient ? "opacity-100" : "opacity-0"
1205
+ )
1206
+ }
1207
+ ),
1208
+ /* @__PURE__ */ jsx12(
1209
+ "div",
1210
+ {
1211
+ className: cn(
1212
+ "pointer-events-none absolute inset-x-0 bottom-0 h-20",
1213
+ "bg-gradient-to-t from-agg-secondary to-transparent",
1214
+ "sm:hidden transition-opacity",
1215
+ showBottomGradient ? "opacity-100" : "opacity-0"
1216
+ )
1217
+ }
1218
+ )
1219
+ ] }),
1220
+ /* @__PURE__ */ jsx12(Button, { variant: "primary", size: "large", className: "w-full", onClick: onContinue, children: labels.onboarding.howItWorks.continue })
1221
+ ] });
1222
+ };
1223
+ HowItWorksStep.displayName = "HowItWorksStep";
1224
+
1225
+ // src/onboarding/steps/profile-setup.tsx
1226
+ import { useCallback as useCallback5, useRef as useRef2, useState as useState7 } from "react";
1227
+ import { useLabels as useLabels2 } from "@agg-market/hooks";
1228
+ import { jsx as jsx13, jsxs as jsxs13 } from "react/jsx-runtime";
1229
+ var ProfileSetupStep = ({ onContinue }) => {
1230
+ const labels = useLabels2();
1231
+ const [username, setUsername] = useState7("");
1232
+ const [avatarFile, setAvatarFile] = useState7();
1233
+ const [avatarPreview, setAvatarPreview] = useState7();
1234
+ const fileInputRef = useRef2(null);
1235
+ const handleAvatarClick = useCallback5(() => {
1236
+ var _a;
1237
+ (_a = fileInputRef.current) == null ? void 0 : _a.click();
1238
+ }, []);
1239
+ const handleFileChange = useCallback5((e) => {
1240
+ var _a;
1241
+ const file = (_a = e.target.files) == null ? void 0 : _a[0];
1242
+ if (!file)
1243
+ return;
1244
+ setAvatarFile(file);
1245
+ const reader = new FileReader();
1246
+ reader.onload = (event) => {
1247
+ var _a2;
1248
+ setAvatarPreview((_a2 = event.target) == null ? void 0 : _a2.result);
1249
+ };
1250
+ reader.readAsDataURL(file);
1251
+ }, []);
1252
+ const handleContinue = useCallback5(() => {
1253
+ onContinue({
1254
+ username,
1255
+ avatarFile,
1256
+ avatarPreview
1257
+ });
1258
+ }, [username, avatarFile, avatarPreview, onContinue]);
1259
+ return /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-7", children: [
1260
+ /* @__PURE__ */ jsx13("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.profileSetup.title }),
1261
+ /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-5 items-center w-full", children: [
1262
+ /* @__PURE__ */ jsxs13("div", { className: "flex justify-center", children: [
1263
+ /* @__PURE__ */ jsx13(
1264
+ "button",
1265
+ {
1266
+ type: "button",
1267
+ onClick: handleAvatarClick,
1268
+ className: cn(
1269
+ "relative flex items-center justify-center",
1270
+ "h-[80px] w-[80px]",
1271
+ "rounded-agg-full",
1272
+ "border border-dashed border-agg-separator",
1273
+ "bg-agg-secondary-hover",
1274
+ "hover:bg-agg-tertiary",
1275
+ "transition-colors cursor-pointer",
1276
+ "overflow-hidden"
1277
+ ),
1278
+ "aria-label": labels.onboarding.profileSetup.uploadProfilePictureAria,
1279
+ children: avatarPreview ? /* @__PURE__ */ jsx13(
1280
+ "img",
1281
+ {
1282
+ src: avatarPreview,
1283
+ alt: labels.onboarding.profileSetup.profilePreviewAlt,
1284
+ className: "h-full w-full object-cover"
1285
+ }
1286
+ ) : /* @__PURE__ */ jsx13(ProfileIcon, { className: "h-7 w-7 text-agg-muted-foreground" })
1287
+ }
1288
+ ),
1289
+ /* @__PURE__ */ jsx13(
1290
+ "input",
1291
+ {
1292
+ ref: fileInputRef,
1293
+ type: "file",
1294
+ accept: "image/*",
1295
+ onChange: handleFileChange,
1296
+ className: "hidden",
1297
+ "aria-hidden": "true"
1298
+ }
1299
+ )
1300
+ ] }),
1301
+ /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-2 w-full", children: [
1302
+ /* @__PURE__ */ jsx13(
1303
+ "label",
1304
+ {
1305
+ htmlFor: "onboarding-username",
1306
+ className: "text-agg-sm font-agg-bold text-agg-foreground",
1307
+ children: labels.onboarding.profileSetup.usernameLabel
1308
+ }
1309
+ ),
1310
+ /* @__PURE__ */ jsx13(
1311
+ "input",
1312
+ {
1313
+ id: "onboarding-username",
1314
+ type: "text",
1315
+ value: username,
1316
+ onChange: (e) => setUsername(e.target.value),
1317
+ placeholder: labels.onboarding.profileSetup.usernamePlaceholder,
1318
+ className: cn(
1319
+ "w-full px-3 py-2.5",
1320
+ "rounded-[4px]",
1321
+ "border border-agg-separator",
1322
+ "bg-agg-secondary text-agg-foreground",
1323
+ "placeholder:text-agg-muted-foreground",
1324
+ "outline-none",
1325
+ "hover:bg-agg-secondary-hover",
1326
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
1327
+ "transition-colors",
1328
+ "text-agg-sm sm:text-agg-base"
1329
+ )
1330
+ }
1331
+ )
1332
+ ] })
1333
+ ] }),
1334
+ /* @__PURE__ */ jsx13(Button, { variant: "primary", size: "large", className: "w-full", onClick: handleContinue, children: labels.onboarding.profileSetup.continue })
1335
+ ] });
1336
+ };
1337
+ ProfileSetupStep.displayName = "ProfileSetupStep";
1338
+
1339
+ // src/onboarding/steps/connect-accounts.tsx
1340
+ import { useLabels as useLabels3 } from "@agg-market/hooks";
1341
+ import { jsx as jsx14, jsxs as jsxs14 } from "react/jsx-runtime";
1342
+ var OnchainVenueLogos = () => {
1343
+ return /* @__PURE__ */ jsx14("div", { className: "flex gap-1 sm:gap-0 sm:-space-x-5", children: ONCHAIN_VENUES.map((venue, index) => /* @__PURE__ */ jsx14("div", { style: { zIndex: ONCHAIN_VENUES.length - index }, children: /* @__PURE__ */ jsx14(VenueLogo, { venue, variant: "logo", size: "medium", className: "sm:h-8 sm:w-8" }) }, venue)) });
1344
+ };
1345
+ var VenueCard = ({
1346
+ logos,
1347
+ title,
1348
+ mobileTitle,
1349
+ description,
1350
+ mobileDescription,
1351
+ onConnect,
1352
+ connected = false
1353
+ }) => {
1354
+ const labels = useLabels3();
1355
+ const action = connected ? /* @__PURE__ */ jsx14(CheckCircleIcon, { className: "h-6 w-6 text-agg-success" }) : /* @__PURE__ */ jsx14(
1356
+ Button,
1357
+ {
1358
+ variant: "tertiary",
1359
+ size: "large",
1360
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
1361
+ onClick: onConnect,
1362
+ children: labels.onboarding.connectAccounts.connect
1363
+ }
1364
+ );
1365
+ const mobileAction = connected ? /* @__PURE__ */ jsx14(CheckCircleIcon, { className: "h-6 w-6 text-agg-success" }) : /* @__PURE__ */ jsx14(
1366
+ Button,
1367
+ {
1368
+ variant: "tertiary",
1369
+ size: "medium",
1370
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
1371
+ onClick: onConnect,
1372
+ suffix: /* @__PURE__ */ jsx14(ChevronRightIcon, { className: "h-4 w-4" }),
1373
+ children: labels.onboarding.connectAccounts.connectAccount
1374
+ }
1375
+ );
1376
+ return /* @__PURE__ */ jsxs14(
1377
+ "div",
1378
+ {
1379
+ className: cn(
1380
+ "rounded-agg-md p-5 transition-colors",
1381
+ connected ? "bg-agg-success/5" : "bg-agg-secondary-hover hover:bg-agg-tertiary"
1382
+ ),
1383
+ children: [
1384
+ /* @__PURE__ */ jsxs14("div", { className: "hidden sm:flex items-center justify-between", children: [
1385
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-5", children: [
1386
+ /* @__PURE__ */ jsx14("div", { className: "shrink-0", children: logos }),
1387
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-[2px]", children: [
1388
+ /* @__PURE__ */ jsx14("p", { className: "text-agg-base font-agg-bold text-agg-foreground", children: title }),
1389
+ /* @__PURE__ */ jsx14("p", { className: "text-agg-sm text-agg-foreground", children: description })
1390
+ ] })
1391
+ ] }),
1392
+ /* @__PURE__ */ jsx14("div", { className: "shrink-0", children: action })
1393
+ ] }),
1394
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-3 sm:hidden", children: [
1395
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-3", children: [
1396
+ /* @__PURE__ */ jsx14("div", { className: "shrink-0", children: logos }),
1397
+ /* @__PURE__ */ jsx14("p", { className: "text-agg-lg font-agg-bold text-agg-foreground", children: mobileTitle != null ? mobileTitle : title })
1398
+ ] }),
1399
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-col items-start gap-2", children: [
1400
+ /* @__PURE__ */ jsx14("p", { className: "text-agg-base text-agg-foreground", children: mobileDescription != null ? mobileDescription : description }),
1401
+ mobileAction
1402
+ ] })
1403
+ ] })
1404
+ ]
1405
+ }
1406
+ );
1407
+ };
1408
+ var ConnectAccountsStep = ({
1409
+ onConnectOnchain,
1410
+ onConnectKalshi,
1411
+ onContinue,
1412
+ connectedOnchain = false,
1413
+ connectedKalshi = false
1414
+ }) => {
1415
+ const labels = useLabels3();
1416
+ const canContinue = connectedOnchain || connectedKalshi;
1417
+ return /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-6", children: [
1418
+ /* @__PURE__ */ jsx14("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectAccounts.title }),
1419
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-col gap-4", children: [
1420
+ /* @__PURE__ */ jsx14(
1421
+ VenueCard,
1422
+ {
1423
+ logos: /* @__PURE__ */ jsx14(OnchainVenueLogos, {}),
1424
+ title: labels.onboarding.connectAccounts.onchainTitle,
1425
+ mobileTitle: labels.onboarding.connectAccounts.onchainMobileTitle(
1426
+ ONCHAIN_VENUES.length - 1
1427
+ ),
1428
+ description: labels.onboarding.connectAccounts.onchainDescription,
1429
+ mobileDescription: labels.onboarding.connectAccounts.onchainMobileDescription,
1430
+ onConnect: onConnectOnchain,
1431
+ connected: connectedOnchain
1432
+ }
1433
+ ),
1434
+ /* @__PURE__ */ jsx14(
1435
+ VenueCard,
1436
+ {
1437
+ logos: /* @__PURE__ */ jsx14("div", { className: "sm:flex sm:w-14 sm:items-center sm:justify-center", children: /* @__PURE__ */ jsx14(
1438
+ VenueLogo,
1439
+ {
1440
+ venue: "kalshi",
1441
+ variant: "logo",
1442
+ size: "large",
1443
+ className: "h-6 w-6 sm:h-9 sm:w-9"
1444
+ }
1445
+ ) }),
1446
+ title: labels.onboarding.connectAccounts.kalshiTitle,
1447
+ mobileTitle: labels.onboarding.connectAccounts.kalshiMobileTitle,
1448
+ description: labels.onboarding.connectAccounts.kalshiDescription,
1449
+ mobileDescription: labels.onboarding.connectAccounts.kalshiMobileDescription,
1450
+ onConnect: onConnectKalshi,
1451
+ connected: connectedKalshi
1452
+ }
1453
+ )
1454
+ ] }),
1455
+ /* @__PURE__ */ jsx14(
1456
+ Button,
1457
+ {
1458
+ variant: "primary",
1459
+ size: "large",
1460
+ className: "w-full",
1461
+ onClick: onContinue,
1462
+ disabled: !canContinue,
1463
+ children: labels.onboarding.connectAccounts.continue
1464
+ }
1465
+ )
1466
+ ] });
1467
+ };
1468
+ ConnectAccountsStep.displayName = "ConnectAccountsStep";
1469
+
1470
+ // src/onboarding/steps/connect-kalshi-modal.tsx
1471
+ import { useCallback as useCallback6, useState as useState8 } from "react";
1472
+ import { useLabels as useLabels4 } from "@agg-market/hooks";
1473
+ import * as Dialog from "@radix-ui/react-dialog";
1474
+ import { jsx as jsx15, jsxs as jsxs15 } from "react/jsx-runtime";
1475
+ var ConnectKalshiModal = ({
1476
+ open,
1477
+ onOpenChange,
1478
+ onVerify
1479
+ }) => {
1480
+ const labels = useLabels4();
1481
+ const [apiKeyId, setApiKeyId] = useState8("");
1482
+ const [privateKey, setPrivateKey] = useState8("");
1483
+ const [verifying, setVerifying] = useState8(false);
1484
+ const [error, setError] = useState8();
1485
+ const canVerify = apiKeyId.trim().length > 0 && privateKey.trim().length > 0;
1486
+ const handleCancel = useCallback6(() => {
1487
+ onOpenChange(false);
1488
+ }, [onOpenChange]);
1489
+ const handleVerify = useCallback6(() => __async(void 0, null, function* () {
1490
+ if (!canVerify || verifying)
1491
+ return;
1492
+ setVerifying(true);
1493
+ setError(void 0);
1494
+ try {
1495
+ const credentials = {
1496
+ apiKeyId: apiKeyId.trim(),
1497
+ privateKey: privateKey.trim()
1498
+ };
1499
+ yield onVerify(credentials);
1500
+ setApiKeyId("");
1501
+ setPrivateKey("");
1502
+ onOpenChange(false);
1503
+ } catch (err) {
1504
+ setError(
1505
+ err instanceof Error ? err.message : labels.onboarding.connectKalshiModal.fallbackError
1506
+ );
1507
+ } finally {
1508
+ setVerifying(false);
1509
+ }
1510
+ }), [
1511
+ apiKeyId,
1512
+ canVerify,
1513
+ labels.onboarding.connectKalshiModal.fallbackError,
1514
+ onOpenChange,
1515
+ onVerify,
1516
+ privateKey,
1517
+ verifying
1518
+ ]);
1519
+ const handleOpenChange = useCallback6(
1520
+ (value) => {
1521
+ if (value) {
1522
+ setApiKeyId("");
1523
+ setPrivateKey("");
1524
+ setError(void 0);
1525
+ setVerifying(false);
1526
+ }
1527
+ onOpenChange(value);
1528
+ },
1529
+ [onOpenChange]
1530
+ );
1531
+ return /* @__PURE__ */ jsx15(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs15(
1532
+ Modal.Container,
1533
+ {
1534
+ maxWidth: "600px",
1535
+ "aria-label": labels.onboarding.connectKalshiModal.ariaLabel,
1536
+ classNames: { container: "!rounded-agg-lg" },
1537
+ children: [
1538
+ /* @__PURE__ */ jsx15(Dialog.Title, { className: "sr-only", children: labels.onboarding.connectKalshiModal.title }),
1539
+ /* @__PURE__ */ jsx15(
1540
+ Modal.Header,
1541
+ {
1542
+ hideClose: false,
1543
+ hideBorder: true,
1544
+ classNames: {
1545
+ root: "!min-h-0",
1546
+ container: "!py-[18px] !px-8"
1547
+ }
1548
+ }
1549
+ ),
1550
+ /* @__PURE__ */ jsx15(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-8 items-center", children: [
1551
+ /* @__PURE__ */ jsx15(
1552
+ VenueLogo,
1553
+ {
1554
+ venue: "kalshi",
1555
+ variant: "logo",
1556
+ size: "large",
1557
+ className: "h-[60px] w-[60px]"
1558
+ }
1559
+ ),
1560
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-4 items-center text-center", children: [
1561
+ /* @__PURE__ */ jsx15("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectKalshiModal.title }),
1562
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: labels.onboarding.connectKalshiModal.description })
1563
+ ] }),
1564
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-4 w-full", children: [
1565
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
1566
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1", children: [
1567
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepOne.label }),
1568
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepOne.title })
1569
+ ] }),
1570
+ /* @__PURE__ */ jsxs15("div", { className: "space-y-0 text-agg-sm leading-agg-5 text-agg-foreground", children: [
1571
+ /* @__PURE__ */ jsx15("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.signIn }),
1572
+ /* @__PURE__ */ jsxs15("p", { children: [
1573
+ labels.onboarding.connectKalshiModal.stepOne.instructions.goToProfilePrefix,
1574
+ " ",
1575
+ /* @__PURE__ */ jsx15("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileText }),
1576
+ labels.onboarding.connectKalshiModal.stepOne.instructions.goToProfileSeparator,
1577
+ " ",
1578
+ /* @__PURE__ */ jsx15("span", { className: "text-agg-foreground underline", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileUrl })
1579
+ ] }),
1580
+ /* @__PURE__ */ jsxs15("p", { children: [
1581
+ labels.onboarding.connectKalshiModal.stepOne.instructions.clickCreateKeyPrefix,
1582
+ " ",
1583
+ /* @__PURE__ */ jsx15("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKeyText }),
1584
+ labels.onboarding.connectKalshiModal.stepOne.instructions.clickCreateKeySuffix
1585
+ ] }),
1586
+ /* @__PURE__ */ jsxs15("p", { children: [
1587
+ labels.onboarding.connectKalshiModal.stepOne.instructions.selectPermissionsPrefix,
1588
+ " ",
1589
+ /* @__PURE__ */ jsx15("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.readWriteText }),
1590
+ labels.onboarding.connectKalshiModal.stepOne.instructions.selectPermissionsSuffix
1591
+ ] }),
1592
+ /* @__PURE__ */ jsx15("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKey })
1593
+ ] }),
1594
+ /* @__PURE__ */ jsxs15("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: [
1595
+ labels.onboarding.connectKalshiModal.stepOne.footerLineOne,
1596
+ /* @__PURE__ */ jsx15("br", {}),
1597
+ labels.onboarding.connectKalshiModal.stepOne.footerLineTwo
1598
+ ] })
1599
+ ] }),
1600
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
1601
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-1", children: [
1602
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.label }),
1603
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.title })
1604
+ ] }),
1605
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.description }),
1606
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-2", children: [
1607
+ /* @__PURE__ */ jsx15(
1608
+ "label",
1609
+ {
1610
+ htmlFor: "kalshi-api-key-id",
1611
+ className: "text-agg-sm font-agg-bold text-agg-foreground",
1612
+ children: labels.onboarding.connectKalshiModal.stepTwo.apiKeyIdLabel
1613
+ }
1614
+ ),
1615
+ /* @__PURE__ */ jsx15(
1616
+ "input",
1617
+ {
1618
+ id: "kalshi-api-key-id",
1619
+ type: "text",
1620
+ value: apiKeyId,
1621
+ onChange: (e) => setApiKeyId(e.target.value),
1622
+ placeholder: labels.onboarding.connectKalshiModal.stepTwo.apiKeyIdPlaceholder,
1623
+ className: cn(
1624
+ "w-full px-3 py-2.5 h-10",
1625
+ "rounded border border-agg-separator",
1626
+ "bg-agg-secondary text-agg-base text-agg-foreground",
1627
+ "placeholder:text-agg-muted-foreground",
1628
+ "outline-none",
1629
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
1630
+ "transition-colors"
1631
+ )
1632
+ }
1633
+ )
1634
+ ] }),
1635
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-2", children: [
1636
+ /* @__PURE__ */ jsx15(
1637
+ "label",
1638
+ {
1639
+ htmlFor: "kalshi-private-key",
1640
+ className: "text-agg-sm font-agg-bold text-agg-foreground",
1641
+ children: labels.onboarding.connectKalshiModal.stepTwo.privateKeyLabel
1642
+ }
1643
+ ),
1644
+ /* @__PURE__ */ jsx15(
1645
+ "textarea",
1646
+ {
1647
+ id: "kalshi-private-key",
1648
+ value: privateKey,
1649
+ onChange: (e) => setPrivateKey(e.target.value),
1650
+ placeholder: labels.onboarding.connectKalshiModal.stepTwo.privateKeyPlaceholder,
1651
+ rows: 3,
1652
+ className: cn(
1653
+ "w-full px-3 py-2.5",
1654
+ "rounded border border-agg-separator",
1655
+ "bg-agg-secondary text-agg-base text-agg-foreground",
1656
+ "placeholder:text-agg-muted-foreground",
1657
+ "outline-none resize-none",
1658
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
1659
+ "transition-colors"
1660
+ )
1661
+ }
1662
+ )
1663
+ ] })
1664
+ ] })
1665
+ ] }),
1666
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between w-full", children: [
1667
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-base text-agg-foreground", children: labels.onboarding.connectKalshiModal.help.label }),
1668
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3", children: [
1669
+ /* @__PURE__ */ jsxs15(
1670
+ "a",
1671
+ {
1672
+ href: "#",
1673
+ className: "flex items-center gap-2 text-agg-base font-agg-bold text-agg-primary hover:text-agg-primary-hover",
1674
+ children: [
1675
+ /* @__PURE__ */ jsx15(DocumentIcon, { className: "h-4 w-4" }),
1676
+ labels.onboarding.connectKalshiModal.help.docsLinkLabel
1677
+ ]
1678
+ }
1679
+ ),
1680
+ /* @__PURE__ */ jsx15("span", { className: "h-3 w-px bg-agg-separator" }),
1681
+ /* @__PURE__ */ jsxs15(
1682
+ "a",
1683
+ {
1684
+ href: "#",
1685
+ className: "flex items-center gap-2 text-agg-base font-agg-bold text-agg-primary hover:text-agg-primary-hover",
1686
+ children: [
1687
+ /* @__PURE__ */ jsx15(PlaySquareIcon, { className: "h-4 w-4" }),
1688
+ labels.onboarding.connectKalshiModal.help.tutorialLinkLabel
1689
+ ]
1690
+ }
1691
+ )
1692
+ ] })
1693
+ ] }),
1694
+ /* @__PURE__ */ jsxs15("div", { className: "flex flex-col gap-5 items-center", children: [
1695
+ error ? /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-2", children: [
1696
+ /* @__PURE__ */ jsx15(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
1697
+ /* @__PURE__ */ jsx15("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
1698
+ ] }) : null,
1699
+ /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-3 justify-center", children: [
1700
+ /* @__PURE__ */ jsx15(Button, { variant: "secondary", size: "large", onClick: handleCancel, children: labels.onboarding.connectKalshiModal.actions.cancel }),
1701
+ /* @__PURE__ */ jsx15(
1702
+ Button,
1703
+ {
1704
+ variant: "primary",
1705
+ size: "large",
1706
+ onClick: handleVerify,
1707
+ disabled: !canVerify,
1708
+ isLoading: verifying,
1709
+ children: labels.onboarding.connectKalshiModal.actions.verifyConnection
1710
+ }
1711
+ )
1712
+ ] })
1713
+ ] })
1714
+ ] }) })
1715
+ ]
1716
+ }
1717
+ ) });
1718
+ };
1719
+ ConnectKalshiModal.displayName = "ConnectKalshiModal";
1720
+
1721
+ // src/onboarding/steps/connect-onchain-modal.tsx
1722
+ import { useCallback as useCallback7, useState as useState9 } from "react";
1723
+ import { useLabels as useLabels5 } from "@agg-market/hooks";
1724
+ import * as Dialog2 from "@radix-ui/react-dialog";
1725
+ import { jsx as jsx16, jsxs as jsxs16 } from "react/jsx-runtime";
1726
+ var ConnectOnchainModal = ({
1727
+ open,
1728
+ onOpenChange,
1729
+ onConnect
1730
+ }) => {
1731
+ const labels = useLabels5();
1732
+ const [connecting, setConnecting] = useState9(false);
1733
+ const [error, setError] = useState9();
1734
+ const handleCancel = useCallback7(() => {
1735
+ onOpenChange(false);
1736
+ }, [onOpenChange]);
1737
+ const handleConnect = useCallback7(() => __async(void 0, null, function* () {
1738
+ if (connecting)
1739
+ return;
1740
+ setConnecting(true);
1741
+ setError(void 0);
1742
+ try {
1743
+ yield onConnect();
1744
+ onOpenChange(false);
1745
+ } catch (err) {
1746
+ setError(
1747
+ err instanceof Error ? err.message : labels.onboarding.connectOnchainModal.fallbackError
1748
+ );
1749
+ } finally {
1750
+ setConnecting(false);
1751
+ }
1752
+ }), [connecting, labels.onboarding.connectOnchainModal.fallbackError, onConnect, onOpenChange]);
1753
+ const handleOpenChange = useCallback7(
1754
+ (value) => {
1755
+ if (value) {
1756
+ setError(void 0);
1757
+ setConnecting(false);
1758
+ }
1759
+ onOpenChange(value);
1760
+ },
1761
+ [onOpenChange]
1762
+ );
1763
+ return /* @__PURE__ */ jsx16(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs16(
1764
+ Modal.Container,
1765
+ {
1766
+ maxWidth: "600px",
1767
+ "aria-label": labels.onboarding.connectOnchainModal.ariaLabel,
1768
+ classNames: { container: "!rounded-agg-lg" },
1769
+ children: [
1770
+ /* @__PURE__ */ jsx16(Dialog2.Title, { className: "sr-only", children: labels.onboarding.connectOnchainModal.title }),
1771
+ /* @__PURE__ */ jsx16(
1772
+ Modal.Header,
1773
+ {
1774
+ hideClose: false,
1775
+ hideBorder: true,
1776
+ classNames: {
1777
+ root: "!min-h-0",
1778
+ container: "!py-[18px] !px-8"
1779
+ }
1780
+ }
1781
+ ),
1782
+ /* @__PURE__ */ jsx16(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-8 items-center", children: [
1783
+ /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-4 items-center text-center", children: [
1784
+ /* @__PURE__ */ jsx16("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectOnchainModal.title }),
1785
+ /* @__PURE__ */ jsx16("p", { className: "text-agg-base text-center leading-agg-6 text-agg-foreground whitespace-pre-line", children: labels.onboarding.connectOnchainModal.description })
1786
+ ] }),
1787
+ /* @__PURE__ */ jsxs16("div", { className: "flex w-full flex-col items-center gap-4 rounded-agg-xl bg-agg-secondary-hover p-6", children: [
1788
+ /* @__PURE__ */ jsx16("p", { className: "text-agg-sm font-agg-bold uppercase leading-agg-5 text-agg-muted-foreground", children: labels.onboarding.connectOnchainModal.supportedVenuesLabel }),
1789
+ /* @__PURE__ */ jsx16("div", { className: "flex flex-wrap items-center justify-center gap-x-4 gap-y-3", children: ONCHAIN_VENUES.map((venue, index) => /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-[6px]", children: [
1790
+ index > 0 && /* @__PURE__ */ jsx16("span", { className: "mr-2.5 h-3 w-px bg-agg-separator" }),
1791
+ /* @__PURE__ */ jsx16(VenueLogo, { venue, size: "medium" }),
1792
+ /* @__PURE__ */ jsx16("span", { className: "text-agg-base text-agg-foreground", children: labels.venues[venue] })
1793
+ ] }, venue)) })
1794
+ ] }),
1795
+ /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-6 items-center", children: [
1796
+ /* @__PURE__ */ jsxs16("div", { className: "flex flex-col gap-3 items-center", children: [
1797
+ error ? /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-2", children: [
1798
+ /* @__PURE__ */ jsx16(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
1799
+ /* @__PURE__ */ jsx16("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
1800
+ ] }) : null,
1801
+ /* @__PURE__ */ jsx16(
1802
+ Button,
1803
+ {
1804
+ variant: "primary",
1805
+ size: "large",
1806
+ onClick: handleConnect,
1807
+ isLoading: connecting,
1808
+ children: labels.onboarding.connectOnchainModal.connect
1809
+ }
1810
+ )
1811
+ ] }),
1812
+ /* @__PURE__ */ jsx16(
1813
+ Button,
1814
+ {
1815
+ variant: "tertiary",
1816
+ size: "medium",
1817
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
1818
+ onClick: handleCancel,
1819
+ children: labels.onboarding.connectOnchainModal.cancel
1820
+ }
1821
+ )
1822
+ ] })
1823
+ ] }) })
1824
+ ]
1825
+ }
1826
+ ) });
1827
+ };
1828
+ ConnectOnchainModal.displayName = "ConnectOnchainModal";
1829
+
1830
+ // src/onboarding/index.tsx
1831
+ import { Fragment as Fragment10, jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
1832
+ var OnboardingModal = ({
1833
+ open,
1834
+ onOpenChange,
1835
+ onProfileSubmit,
1836
+ onConnectOnchain,
1837
+ onConnectKalshi,
1838
+ onComplete,
1839
+ howItWorksIcons,
1840
+ connectedOnchain = false,
1841
+ connectedKalshi = false
1842
+ }) => {
1843
+ var _a;
1844
+ const labels = useLabels6();
1845
+ const [step, setStep] = useState10(ONBOARDING_STEPS.HOW_IT_WORKS);
1846
+ const stepLabels = {
1847
+ [ONBOARDING_STEPS.HOW_IT_WORKS]: labels.onboarding.modal.stepHowItWorks,
1848
+ [ONBOARDING_STEPS.PROFILE_SETUP]: labels.onboarding.modal.stepProfileSetup,
1849
+ [ONBOARDING_STEPS.CONNECT_ACCOUNTS]: labels.onboarding.modal.stepConnectAccounts
1850
+ };
1851
+ const resolvedTitle = (_a = stepLabels[step]) != null ? _a : labels.onboarding.modal.title;
1852
+ const [kalshiModalOpen, setKalshiModalOpen] = useState10(false);
1853
+ const [kalshiConnected, setKalshiConnected] = useState10(false);
1854
+ const [onchainModalOpen, setOnchainModalOpen] = useState10(false);
1855
+ const [onchainConnected, setOnchainConnected] = useState10(false);
1856
+ useEffect(() => {
1857
+ if (open) {
1858
+ setStep(ONBOARDING_STEPS.HOW_IT_WORKS);
1859
+ setKalshiConnected(false);
1860
+ setOnchainConnected(false);
1861
+ }
1862
+ }, [open]);
1863
+ const handleHowItWorksContinue = useCallback8(() => {
1864
+ setStep(ONBOARDING_STEPS.PROFILE_SETUP);
1865
+ }, []);
1866
+ const handleProfileContinue = useCallback8(
1867
+ (data) => {
1868
+ onProfileSubmit == null ? void 0 : onProfileSubmit(data);
1869
+ setStep(ONBOARDING_STEPS.CONNECT_ACCOUNTS);
1870
+ },
1871
+ [onProfileSubmit]
1872
+ );
1873
+ const handleConnectContinue = useCallback8(() => {
1874
+ onComplete == null ? void 0 : onComplete();
1875
+ }, [onComplete]);
1876
+ const handleOpenOnchainModal = useCallback8(() => {
1877
+ setOnchainModalOpen(true);
1878
+ }, []);
1879
+ const handleOnchainConnect = useCallback8(() => __async(void 0, null, function* () {
1880
+ yield onConnectOnchain == null ? void 0 : onConnectOnchain();
1881
+ setOnchainConnected(true);
1882
+ }), [onConnectOnchain]);
1883
+ const handleOpenKalshiModal = useCallback8(() => {
1884
+ setKalshiModalOpen(true);
1885
+ }, []);
1886
+ const handleKalshiVerify = useCallback8(
1887
+ (credentials) => __async(void 0, null, function* () {
1888
+ yield onConnectKalshi == null ? void 0 : onConnectKalshi(credentials);
1889
+ setKalshiConnected(true);
1890
+ }),
1891
+ [onConnectKalshi]
1892
+ );
1893
+ return /* @__PURE__ */ jsxs17(Fragment10, { children: [
1894
+ /* @__PURE__ */ jsx17(Modal, { open, onOpenChange, children: /* @__PURE__ */ jsxs17(
1895
+ Modal.Container,
1896
+ {
1897
+ maxWidth: "600px",
1898
+ "aria-label": resolvedTitle,
1899
+ classNames: { container: "!rounded-agg-lg" },
1900
+ children: [
1901
+ /* @__PURE__ */ jsx17(Dialog3.Title, { className: "sr-only", children: resolvedTitle }),
1902
+ /* @__PURE__ */ jsxs17(Modal.Body, { classNames: { root: "px-5 py-6 sm:px-10 sm:py-8" }, children: [
1903
+ step === ONBOARDING_STEPS.HOW_IT_WORKS && /* @__PURE__ */ jsx17(HowItWorksStep, { onContinue: handleHowItWorksContinue, icons: howItWorksIcons }),
1904
+ step === ONBOARDING_STEPS.PROFILE_SETUP && /* @__PURE__ */ jsx17(ProfileSetupStep, { onContinue: handleProfileContinue }),
1905
+ step === ONBOARDING_STEPS.CONNECT_ACCOUNTS && /* @__PURE__ */ jsx17(
1906
+ ConnectAccountsStep,
1907
+ {
1908
+ onConnectOnchain: handleOpenOnchainModal,
1909
+ onConnectKalshi: handleOpenKalshiModal,
1910
+ onContinue: handleConnectContinue,
1911
+ connectedOnchain: connectedOnchain || onchainConnected,
1912
+ connectedKalshi: connectedKalshi || kalshiConnected
1913
+ }
1914
+ )
1915
+ ] })
1916
+ ]
1917
+ }
1918
+ ) }),
1919
+ /* @__PURE__ */ jsx17(
1920
+ ConnectOnchainModal,
1921
+ {
1922
+ open: onchainModalOpen,
1923
+ onOpenChange: setOnchainModalOpen,
1924
+ onConnect: handleOnchainConnect
1925
+ }
1926
+ ),
1927
+ /* @__PURE__ */ jsx17(
1928
+ ConnectKalshiModal,
1929
+ {
1930
+ open: kalshiModalOpen,
1931
+ onOpenChange: setKalshiModalOpen,
1932
+ onVerify: handleKalshiVerify
1933
+ }
1934
+ )
1935
+ ] });
1936
+ };
1937
+ OnboardingModal.displayName = "OnboardingModal";
1938
+
1939
+ // src/profile/index.tsx
1940
+ import { useState as useState11, useEffect as useEffect2, useCallback as useCallback10 } from "react";
1941
+
1942
+ // src/profile/profile-modal.constants.ts
1943
+ var PROFILE_TAB_KEYS = {
1944
+ ABOUT: "about",
1945
+ ACCOUNTS_WALLETS: "accounts-wallets"
1946
+ };
1947
+ var PROFILE_TAB_ITEMS = [
1948
+ { value: PROFILE_TAB_KEYS.ABOUT, label: "About", icon: "profile" },
1949
+ { value: PROFILE_TAB_KEYS.ACCOUNTS_WALLETS, label: "Accounts & wallets", icon: "wallet" }
1950
+ ];
1951
+
1952
+ // src/profile/tabs/about-tab.tsx
1953
+ import { useCallback as useCallback9, useRef as useRef3 } from "react";
1954
+ import { useLabels as useLabels7 } from "@agg-market/hooks";
1955
+ import { jsx as jsx18, jsxs as jsxs18 } from "react/jsx-runtime";
1956
+ var AboutTab = ({
1957
+ avatarPreview,
1958
+ onDeleteProfile,
1959
+ draftUsername,
1960
+ onDraftUsernameChange,
1961
+ onDraftAvatarChange,
1962
+ draftAvatarPreview
1963
+ }) => {
1964
+ const labels = useLabels7();
1965
+ const fileInputRef = useRef3(null);
1966
+ const handleAvatarClick = useCallback9(() => {
1967
+ var _a;
1968
+ (_a = fileInputRef.current) == null ? void 0 : _a.click();
1969
+ }, []);
1970
+ const handleFileChange = useCallback9(
1971
+ (e) => {
1972
+ var _a;
1973
+ const file = (_a = e.target.files) == null ? void 0 : _a[0];
1974
+ if (!file)
1975
+ return;
1976
+ const reader = new FileReader();
1977
+ reader.onload = (event) => {
1978
+ var _a2;
1979
+ onDraftAvatarChange(file, (_a2 = event.target) == null ? void 0 : _a2.result);
1980
+ };
1981
+ reader.readAsDataURL(file);
1982
+ },
1983
+ [onDraftAvatarChange]
1984
+ );
1985
+ const resolvedPreview = draftAvatarPreview != null ? draftAvatarPreview : avatarPreview;
1986
+ return /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-8", children: [
1987
+ /* @__PURE__ */ jsxs18("div", { className: "flex justify-center", children: [
1988
+ /* @__PURE__ */ jsx18(
1989
+ "button",
1990
+ {
1991
+ type: "button",
1992
+ onClick: handleAvatarClick,
1993
+ className: cn(
1994
+ "relative flex items-center justify-center",
1995
+ "h-[80px] w-[80px]",
1996
+ "rounded-agg-full",
1997
+ "border-2 border-dashed border-agg-separator",
1998
+ "bg-agg-secondary",
1999
+ "hover:border-agg-muted-foreground hover:bg-agg-secondary-hover",
2000
+ "transition-colors cursor-pointer",
2001
+ "overflow-hidden"
2002
+ ),
2003
+ "aria-label": labels.onboarding.profileSetup.uploadProfilePictureAria,
2004
+ children: resolvedPreview ? /* @__PURE__ */ jsx18(
2005
+ "img",
2006
+ {
2007
+ src: resolvedPreview,
2008
+ alt: labels.onboarding.profileSetup.profilePreviewAlt,
2009
+ className: "h-full w-full object-cover"
2010
+ }
2011
+ ) : /* @__PURE__ */ jsx18(ProfileIcon, { className: "h-8 w-8 text-agg-muted-foreground" })
2012
+ }
2013
+ ),
2014
+ /* @__PURE__ */ jsx18(
2015
+ "input",
2016
+ {
2017
+ ref: fileInputRef,
2018
+ type: "file",
2019
+ accept: "image/*",
2020
+ onChange: handleFileChange,
2021
+ className: "hidden",
2022
+ "aria-hidden": "true"
2023
+ }
2024
+ )
2025
+ ] }),
2026
+ /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-2", children: [
2027
+ /* @__PURE__ */ jsx18(
2028
+ "label",
2029
+ {
2030
+ htmlFor: "profile-username",
2031
+ className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground",
2032
+ children: "Username"
2033
+ }
2034
+ ),
2035
+ /* @__PURE__ */ jsx18(
2036
+ "input",
2037
+ {
2038
+ id: "profile-username",
2039
+ type: "text",
2040
+ placeholder: "e.g. CryptoJohn",
2041
+ value: draftUsername,
2042
+ onChange: (e) => onDraftUsernameChange(e.target.value),
2043
+ className: cn(
2044
+ "w-full px-4 py-3",
2045
+ "rounded-agg-xl",
2046
+ "border border-agg-separator",
2047
+ "bg-agg-secondary text-agg-foreground",
2048
+ "placeholder:text-agg-muted-foreground",
2049
+ "outline-none",
2050
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
2051
+ "transition-colors",
2052
+ "text-agg-sm sm:text-agg-base"
2053
+ )
2054
+ }
2055
+ )
2056
+ ] }),
2057
+ /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-4", children: [
2058
+ /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-1", children: [
2059
+ /* @__PURE__ */ jsx18("span", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: "Delete your profile" }),
2060
+ /* @__PURE__ */ jsx18("span", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: "This will permanently delete your account and all of its data. You will not be able to reactivate this account." })
2061
+ ] }),
2062
+ /* @__PURE__ */ jsx18(
2063
+ "button",
2064
+ {
2065
+ type: "button",
2066
+ onClick: onDeleteProfile,
2067
+ className: cn(
2068
+ "self-start cursor-pointer",
2069
+ "rounded-agg-full border border-[#e5455f]",
2070
+ "h-8 px-4",
2071
+ "text-agg-sm font-agg-bold leading-agg-5 text-[#e5455f]",
2072
+ "bg-agg-secondary hover:bg-[#e5455f]/10",
2073
+ "transition-colors"
2074
+ ),
2075
+ children: "Delete Profile"
2076
+ }
2077
+ )
2078
+ ] })
2079
+ ] });
2080
+ };
2081
+ AboutTab.displayName = "AboutTab";
2082
+
2083
+ // src/profile/tabs/accounts-wallets-tab.tsx
2084
+ import { jsx as jsx19, jsxs as jsxs19 } from "react/jsx-runtime";
2085
+ var SectionTitle = ({ children }) => /* @__PURE__ */ jsx19("h3", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children });
2086
+ var AccountRow = ({ children, className }) => /* @__PURE__ */ jsx19(
2087
+ "div",
2088
+ {
2089
+ className: cn(
2090
+ "flex items-center justify-between",
2091
+ "rounded-agg-lg border border-agg-separator bg-agg-secondary",
2092
+ "px-5 py-3",
2093
+ className
2094
+ ),
2095
+ children
2096
+ }
2097
+ );
2098
+ var ConnectTextButton = ({ onClick }) => /* @__PURE__ */ jsx19(
2099
+ "button",
2100
+ {
2101
+ type: "button",
2102
+ onClick,
2103
+ className: "shrink-0 cursor-pointer text-agg-sm font-agg-bold leading-agg-5 text-agg-primary whitespace-nowrap",
2104
+ children: "Connect"
2105
+ }
2106
+ );
2107
+ var DisconnectTextButton = ({ onClick }) => /* @__PURE__ */ jsx19(
2108
+ "button",
2109
+ {
2110
+ type: "button",
2111
+ onClick,
2112
+ className: "shrink-0 cursor-pointer text-agg-sm font-agg-bold leading-agg-5 text-agg-muted-foreground whitespace-nowrap",
2113
+ children: "Disconnect"
2114
+ }
2115
+ );
2116
+ var AccountsWalletsTab = ({
2117
+ exchanges,
2118
+ socialAccounts,
2119
+ email,
2120
+ onDisconnectExchange,
2121
+ onConnectTwitter,
2122
+ onDisconnectTwitter,
2123
+ onConnectDiscord,
2124
+ onDisconnectDiscord,
2125
+ onConnectTelegram,
2126
+ onDisconnectTelegram,
2127
+ onConnectEmail
2128
+ }) => {
2129
+ const twitter = socialAccounts == null ? void 0 : socialAccounts.twitter;
2130
+ const discord = socialAccounts == null ? void 0 : socialAccounts.discord;
2131
+ const telegram = socialAccounts == null ? void 0 : socialAccounts.telegram;
2132
+ return /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-8", children: [
2133
+ /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-3", children: [
2134
+ /* @__PURE__ */ jsx19(SectionTitle, { children: "Exchanges" }),
2135
+ exchanges.length === 0 ? /* @__PURE__ */ jsx19("p", { className: "text-agg-sm leading-agg-5 text-agg-muted-foreground", children: "No exchange accounts connected." }) : /* @__PURE__ */ jsx19("div", { className: "flex flex-col gap-2", children: exchanges.map((account) => {
2136
+ var _a;
2137
+ const displayName = (_a = venueLogoLabels[account.venue]) != null ? _a : account.venue;
2138
+ return /* @__PURE__ */ jsxs19(AccountRow, { children: [
2139
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3 min-w-0", children: [
2140
+ /* @__PURE__ */ jsx19(VenueLogo, { venue: account.venue, size: "small" }),
2141
+ /* @__PURE__ */ jsx19("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: displayName }),
2142
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-2 min-w-0", children: [
2143
+ /* @__PURE__ */ jsx19("span", { className: "truncate text-agg-base font-agg-normal leading-6 text-agg-foreground", children: account.displayAddress }),
2144
+ account.verified ? /* @__PURE__ */ jsx19(
2145
+ Icon,
2146
+ {
2147
+ name: "check-badge",
2148
+ size: "small",
2149
+ color: "var(--agg-color-primary, #536dfe)"
2150
+ }
2151
+ ) : null
2152
+ ] })
2153
+ ] }),
2154
+ /* @__PURE__ */ jsx19(DisconnectTextButton, { onClick: () => onDisconnectExchange(account.venue) })
2155
+ ] }, account.venue);
2156
+ }) })
2157
+ ] }),
2158
+ /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-3", children: [
2159
+ /* @__PURE__ */ jsx19(SectionTitle, { children: "Social Accounts" }),
2160
+ /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-2", children: [
2161
+ /* @__PURE__ */ jsxs19(AccountRow, { children: [
2162
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3", children: [
2163
+ /* @__PURE__ */ jsx19("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-agg-foreground", children: /* @__PURE__ */ jsx19(Icon, { name: "twitter", size: "small", color: "currentColor" }) }),
2164
+ /* @__PURE__ */ jsx19("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: "X (Twitter)" })
2165
+ ] }),
2166
+ (twitter == null ? void 0 : twitter.connected) ? /* @__PURE__ */ jsx19(DisconnectTextButton, { onClick: onDisconnectTwitter }) : /* @__PURE__ */ jsx19(ConnectTextButton, { onClick: onConnectTwitter })
2167
+ ] }),
2168
+ /* @__PURE__ */ jsxs19(AccountRow, { children: [
2169
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3", children: [
2170
+ /* @__PURE__ */ jsx19("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-[#5865F2]", children: /* @__PURE__ */ jsx19(Icon, { name: "discord", size: "small", color: "currentColor" }) }),
2171
+ /* @__PURE__ */ jsx19("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: "Discord" })
2172
+ ] }),
2173
+ (discord == null ? void 0 : discord.connected) ? /* @__PURE__ */ jsx19(DisconnectTextButton, { onClick: onDisconnectDiscord }) : /* @__PURE__ */ jsx19(ConnectTextButton, { onClick: onConnectDiscord })
2174
+ ] }),
2175
+ /* @__PURE__ */ jsxs19(AccountRow, { children: [
2176
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3", children: [
2177
+ /* @__PURE__ */ jsx19("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-[#26A5E4]", children: /* @__PURE__ */ jsx19(Icon, { name: "telegram", size: "small", color: "currentColor" }) }),
2178
+ /* @__PURE__ */ jsx19("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: "Telegram" })
2179
+ ] }),
2180
+ (telegram == null ? void 0 : telegram.connected) ? /* @__PURE__ */ jsx19(DisconnectTextButton, { onClick: onDisconnectTelegram }) : /* @__PURE__ */ jsx19(ConnectTextButton, { onClick: onConnectTelegram })
2181
+ ] })
2182
+ ] })
2183
+ ] }),
2184
+ /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-3", children: [
2185
+ /* @__PURE__ */ jsx19(SectionTitle, { children: "Email Address" }),
2186
+ /* @__PURE__ */ jsxs19(
2187
+ "button",
2188
+ {
2189
+ type: "button",
2190
+ onClick: onConnectEmail,
2191
+ className: cn(
2192
+ "flex items-center justify-between",
2193
+ "rounded-agg-lg border border-agg-separator bg-agg-secondary",
2194
+ "px-5 py-3",
2195
+ "cursor-pointer hover:bg-agg-secondary-hover"
2196
+ ),
2197
+ children: [
2198
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3", children: [
2199
+ /* @__PURE__ */ jsx19("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-agg-foreground", children: /* @__PURE__ */ jsx19(Icon, { name: "email", size: "small", color: "currentColor" }) }),
2200
+ /* @__PURE__ */ jsx19("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: email != null ? email : "Connect email" })
2201
+ ] }),
2202
+ /* @__PURE__ */ jsx19(Icon, { name: "chevron-right", size: "small", color: "currentColor" })
2203
+ ]
2204
+ }
2205
+ )
2206
+ ] })
2207
+ ] });
2208
+ };
2209
+ AccountsWalletsTab.displayName = "AccountsWalletsTab";
2210
+
2211
+ // src/profile/index.tsx
2212
+ import { jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
2213
+ var ProfileModal = ({
2214
+ open,
2215
+ onOpenChange,
2216
+ username,
2217
+ avatarPreview,
2218
+ onSave,
2219
+ onDeleteProfile,
2220
+ exchanges,
2221
+ socialAccounts,
2222
+ email,
2223
+ onDisconnectExchange,
2224
+ onConnectTwitter,
2225
+ onDisconnectTwitter,
2226
+ onConnectDiscord,
2227
+ onDisconnectDiscord,
2228
+ onConnectTelegram,
2229
+ onDisconnectTelegram,
2230
+ onConnectEmail
2231
+ }) => {
2232
+ const [activeTab, setActiveTab] = useState11(PROFILE_TAB_KEYS.ABOUT);
2233
+ const [draftUsername, setDraftUsername] = useState11(username != null ? username : "");
2234
+ const [draftAvatarFile, setDraftAvatarFile] = useState11();
2235
+ const [draftAvatarPreview, setDraftAvatarPreview] = useState11();
2236
+ const [isSaving, setIsSaving] = useState11(false);
2237
+ useEffect2(() => {
2238
+ setDraftUsername(username != null ? username : "");
2239
+ }, [username]);
2240
+ const handleOpenChange = useCallback10(
2241
+ (isOpen) => {
2242
+ if (!isOpen) {
2243
+ setActiveTab(PROFILE_TAB_KEYS.ABOUT);
2244
+ setIsSaving(false);
2245
+ setDraftUsername(username != null ? username : "");
2246
+ setDraftAvatarFile(void 0);
2247
+ setDraftAvatarPreview(void 0);
2248
+ }
2249
+ onOpenChange(isOpen);
2250
+ },
2251
+ [
2252
+ onOpenChange,
2253
+ username,
2254
+ setActiveTab,
2255
+ setIsSaving,
2256
+ setDraftUsername,
2257
+ setDraftAvatarFile,
2258
+ setDraftAvatarPreview
2259
+ ]
2260
+ );
2261
+ const handleDraftAvatarChange = useCallback10(
2262
+ (file, preview) => {
2263
+ setDraftAvatarFile(file);
2264
+ setDraftAvatarPreview(preview);
2265
+ },
2266
+ []
2267
+ );
2268
+ const hasChanges = draftUsername !== (username != null ? username : "") || draftAvatarFile !== void 0;
2269
+ const handleSave = useCallback10(() => {
2270
+ setIsSaving(true);
2271
+ onSave({
2272
+ username: draftUsername || void 0,
2273
+ avatarFile: draftAvatarFile,
2274
+ avatarPreview: draftAvatarPreview
2275
+ });
2276
+ setTimeout(() => {
2277
+ setIsSaving(false);
2278
+ onOpenChange(false);
2279
+ }, 500);
2280
+ }, [draftUsername, draftAvatarFile, draftAvatarPreview, onSave, onOpenChange]);
2281
+ const handleCancel = useCallback10(() => {
2282
+ handleOpenChange(false);
2283
+ }, [handleOpenChange]);
2284
+ return /* @__PURE__ */ jsx20(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs20(Modal.Container, { maxWidth: "800px", "aria-label": "Edit Profile", children: [
2285
+ /* @__PURE__ */ jsx20(Modal.Header, { title: "Edit Profile" }),
2286
+ /* @__PURE__ */ jsx20(Modal.Body, { children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col sm:flex-row sm:gap-10", children: [
2287
+ /* @__PURE__ */ jsxs20("div", { className: "shrink-0", children: [
2288
+ /* @__PURE__ */ jsx20("div", { className: "flex gap-2 sm:hidden mb-6", children: PROFILE_TAB_ITEMS.map((tab) => {
2289
+ const isActive = activeTab === tab.value;
2290
+ return /* @__PURE__ */ jsxs20(
2291
+ "button",
2292
+ {
2293
+ type: "button",
2294
+ onClick: () => setActiveTab(tab.value),
2295
+ className: cn(
2296
+ "flex items-center gap-3 px-4 py-3 rounded-agg-lg",
2297
+ "text-agg-sm leading-agg-5 font-agg-sans",
2298
+ "transition-colors cursor-pointer",
2299
+ "border-b-2",
2300
+ isActive ? "font-agg-normal text-agg-foreground bg-agg-secondary-hover border-agg-primary" : "font-agg-normal text-agg-foreground border-transparent"
2301
+ ),
2302
+ children: [
2303
+ /* @__PURE__ */ jsx20(Icon, { name: tab.icon, size: "small", color: "currentColor" }),
2304
+ /* @__PURE__ */ jsx20("span", { className: "whitespace-nowrap", children: tab.label })
2305
+ ]
2306
+ },
2307
+ tab.value
2308
+ );
2309
+ }) }),
2310
+ /* @__PURE__ */ jsx20(
2311
+ "nav",
2312
+ {
2313
+ className: cn(
2314
+ "hidden sm:flex sm:flex-col",
2315
+ "w-[240px]",
2316
+ "overflow-hidden rounded-agg-lg",
2317
+ "border border-agg-separator",
2318
+ "bg-agg-secondary",
2319
+ "py-3"
2320
+ ),
2321
+ role: "tablist",
2322
+ "aria-label": "Profile sections",
2323
+ children: PROFILE_TAB_ITEMS.map((tab) => {
2324
+ const isActive = activeTab === tab.value;
2325
+ return /* @__PURE__ */ jsxs20(
2326
+ "button",
2327
+ {
2328
+ type: "button",
2329
+ role: "tab",
2330
+ "aria-selected": isActive,
2331
+ onClick: () => setActiveTab(tab.value),
2332
+ className: cn(
2333
+ "relative flex items-center gap-3",
2334
+ "h-[49px] px-6 py-4",
2335
+ "text-agg-sm leading-agg-5 font-agg-sans",
2336
+ "transition-colors cursor-pointer",
2337
+ isActive ? "font-agg-normal text-agg-foreground bg-agg-secondary-hover" : "font-agg-normal text-agg-foreground"
2338
+ ),
2339
+ children: [
2340
+ isActive ? /* @__PURE__ */ jsx20("div", { className: "absolute left-0 top-0 bottom-0 w-1 bg-agg-primary" }) : null,
2341
+ /* @__PURE__ */ jsx20(Icon, { name: tab.icon, size: "small", color: "currentColor" }),
2342
+ /* @__PURE__ */ jsx20("span", { className: "shrink-0 whitespace-nowrap", children: tab.label })
2343
+ ]
2344
+ },
2345
+ tab.value
2346
+ );
2347
+ })
2348
+ }
2349
+ )
2350
+ ] }),
2351
+ /* @__PURE__ */ jsxs20("div", { className: "min-w-0 flex-1", children: [
2352
+ activeTab === PROFILE_TAB_KEYS.ABOUT ? /* @__PURE__ */ jsx20(
2353
+ AboutTab,
2354
+ {
2355
+ username,
2356
+ avatarPreview,
2357
+ onDeleteProfile,
2358
+ draftUsername,
2359
+ onDraftUsernameChange: setDraftUsername,
2360
+ draftAvatarFile,
2361
+ onDraftAvatarChange: handleDraftAvatarChange,
2362
+ draftAvatarPreview
2363
+ }
2364
+ ) : null,
2365
+ activeTab === PROFILE_TAB_KEYS.ACCOUNTS_WALLETS ? /* @__PURE__ */ jsx20(
2366
+ AccountsWalletsTab,
2367
+ {
2368
+ exchanges,
2369
+ socialAccounts,
2370
+ email,
2371
+ onDisconnectExchange,
2372
+ onConnectTwitter,
2373
+ onDisconnectTwitter,
2374
+ onConnectDiscord,
2375
+ onDisconnectDiscord,
2376
+ onConnectTelegram,
2377
+ onDisconnectTelegram,
2378
+ onConnectEmail
2379
+ }
2380
+ ) : null
2381
+ ] })
2382
+ ] }) }),
2383
+ /* @__PURE__ */ jsxs20(Modal.Footer, { children: [
2384
+ /* @__PURE__ */ jsx20(Button, { variant: "secondary", size: "large", onClick: handleCancel, className: "min-w-[120px]", children: "Cancel" }),
2385
+ /* @__PURE__ */ jsx20(
2386
+ Button,
2387
+ {
2388
+ variant: "primary",
2389
+ size: "large",
2390
+ disabled: !hasChanges,
2391
+ isLoading: isSaving,
2392
+ onClick: handleSave,
2393
+ children: "Save Changes"
2394
+ }
2395
+ )
2396
+ ] })
2397
+ ] }) });
2398
+ };
2399
+ ProfileModal.displayName = "ProfileModal";
2400
+
2401
+ export {
2402
+ DepositModal,
2403
+ WithdrawModal,
2404
+ HowItWorksStep,
2405
+ ProfileSetupStep,
2406
+ ConnectAccountsStep,
2407
+ ConnectKalshiModal,
2408
+ ConnectOnchainModal,
2409
+ OnboardingModal,
2410
+ ProfileModal
2411
+ };