@agg-market/ui 5.0.0 → 7.0.0

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