@agg-market/ui 4.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (516) hide show
  1. package/README.md +26 -26
  2. package/dist/auth.d.mts +1 -0
  3. package/dist/auth.d.ts +1 -0
  4. package/dist/{connect-button.js → auth.js} +6 -4
  5. package/dist/auth.mjs +8 -0
  6. package/dist/chunk-2ICOSP7N.mjs +1211 -0
  7. package/dist/chunk-5ZKPBMRK.mjs +2411 -0
  8. package/dist/{chunk-5K7VXAYM.mjs → chunk-ADGL6RFX.mjs} +2 -4
  9. package/dist/chunk-BXW3VIKV.mjs +90 -0
  10. package/dist/{chart.js → chunk-CN7GI2RJ.mjs} +250 -103
  11. package/dist/chunk-G6YKGVQR.mjs +769 -0
  12. package/dist/{chunk-PZTHM6WG.mjs → chunk-HI4EEDN5.mjs} +897 -357
  13. package/dist/{chunk-5ADMXO3Y.mjs → chunk-INRG3D4M.mjs} +5 -11
  14. package/dist/{chunk-DCORNTCY.mjs → chunk-JE3Z52FD.mjs} +85 -64
  15. package/dist/chunk-KZOQW6NT.mjs +0 -0
  16. package/dist/chunk-LMOJKJOY.mjs +2616 -0
  17. package/dist/{chunk-YJA5VQW6.mjs → chunk-MHCHR65A.mjs} +2 -4
  18. package/dist/{chunk-IGPNIM2B.mjs → chunk-PASXFYKQ.mjs} +2 -4
  19. package/dist/chunk-UBBOLLOS.mjs +999 -0
  20. package/dist/events.d.mts +1 -0
  21. package/dist/events.d.ts +1 -0
  22. package/dist/{event-market-page.js → events.js} +5128 -5274
  23. package/dist/events.mjs +17 -0
  24. package/dist/index.d.mts +1 -78
  25. package/dist/index.d.ts +1 -78
  26. package/dist/index.js +8738 -8534
  27. package/dist/index.mjs +68 -167
  28. package/dist/modals.d.mts +1 -0
  29. package/dist/modals.d.ts +1 -0
  30. package/dist/{deposit-modal.js → modals.js} +1771 -6
  31. package/dist/modals.mjs +25 -0
  32. package/dist/pages.d.mts +1 -0
  33. package/dist/pages.d.ts +1 -0
  34. package/dist/pages.js +7928 -0
  35. package/dist/pages.mjs +16 -0
  36. package/dist/primitives.d.mts +1 -0
  37. package/dist/primitives.d.ts +1 -0
  38. package/dist/{market-details.js → primitives.js} +2980 -3153
  39. package/dist/{icon.mjs → primitives.mjs} +56 -9
  40. package/dist/styles.css +1 -1
  41. package/dist/tailwind.css +1 -1
  42. package/dist/trading.d.mts +1 -0
  43. package/dist/trading.d.ts +1 -0
  44. package/dist/{place-order.js → trading.js} +1907 -1394
  45. package/dist/trading.mjs +65 -0
  46. package/dist/types/auth/connect-button/connect-button.constants.d.mts +10 -0
  47. package/dist/types/auth/connect-button/connect-button.constants.d.ts +10 -0
  48. package/dist/{connect-button.d.mts → types/auth/connect-button/connect-button.types.d.mts} +5 -12
  49. package/dist/{connect-button.d.ts → types/auth/connect-button/connect-button.types.d.ts} +5 -12
  50. package/dist/types/auth/connect-button/index.d.mts +7 -0
  51. package/dist/types/auth/connect-button/index.d.ts +7 -0
  52. package/dist/types/auth/index.d.mts +1 -0
  53. package/dist/types/auth/index.d.ts +1 -0
  54. package/dist/types/constants.d.mts +1 -0
  55. package/dist/types/constants.d.ts +1 -0
  56. package/dist/types/deposit/deposit-modal.constants.d.mts +9 -0
  57. package/dist/types/deposit/deposit-modal.constants.d.ts +9 -0
  58. package/dist/{deposit-modal.d.mts → types/deposit/deposit-modal.types.d.mts} +3 -10
  59. package/dist/{deposit-modal.d.ts → types/deposit/deposit-modal.types.d.ts} +3 -10
  60. package/dist/types/deposit/index.d.mts +6 -0
  61. package/dist/types/deposit/index.d.ts +6 -0
  62. package/dist/types/deposit/steps/card-deposit.d.mts +7 -0
  63. package/dist/types/deposit/steps/card-deposit.d.ts +7 -0
  64. package/dist/types/deposit/steps/crypto-transfer.d.mts +7 -0
  65. package/dist/types/deposit/steps/crypto-transfer.d.ts +7 -0
  66. package/dist/types/deposit/steps/deposit-method.d.mts +7 -0
  67. package/dist/types/deposit/steps/deposit-method.d.ts +7 -0
  68. package/dist/types/deposit/steps/kalshi-deposit.d.mts +5 -0
  69. package/dist/types/deposit/steps/kalshi-deposit.d.ts +5 -0
  70. package/dist/types/deposit/steps/venue-selection.d.mts +7 -0
  71. package/dist/types/deposit/steps/venue-selection.d.ts +7 -0
  72. package/dist/types/events/index.d.mts +4 -0
  73. package/dist/types/events/index.d.ts +4 -0
  74. package/dist/types/events/item/event-list-item.constants.d.mts +1 -0
  75. package/dist/types/events/item/event-list-item.constants.d.ts +1 -0
  76. package/dist/types/events/item/event-list-item.types.d.mts +46 -0
  77. package/dist/types/events/item/event-list-item.types.d.ts +46 -0
  78. package/dist/types/events/item/event-list-item.utils.d.mts +23 -0
  79. package/dist/types/events/item/event-list-item.utils.d.ts +23 -0
  80. package/dist/types/events/item/index.d.mts +6 -0
  81. package/dist/types/events/item/index.d.ts +6 -0
  82. package/dist/types/events/item-details/event-list-item-details.constants.d.mts +10 -0
  83. package/dist/types/events/item-details/event-list-item-details.constants.d.ts +10 -0
  84. package/dist/types/events/item-details/event-list-item-details.types.d.mts +53 -0
  85. package/dist/types/events/item-details/event-list-item-details.types.d.ts +53 -0
  86. package/dist/types/events/item-details/event-list-item-details.utils.d.mts +26 -0
  87. package/dist/types/events/item-details/event-list-item-details.utils.d.ts +26 -0
  88. package/dist/types/events/item-details/index.d.mts +6 -0
  89. package/dist/types/events/item-details/index.d.ts +6 -0
  90. package/dist/types/events/list/event-list.constants.d.mts +3 -0
  91. package/dist/types/events/list/event-list.constants.d.ts +3 -0
  92. package/dist/types/events/list/event-list.types.d.mts +21 -0
  93. package/dist/types/events/list/event-list.types.d.ts +21 -0
  94. package/dist/types/events/list/event-list.utils.d.mts +6 -0
  95. package/dist/types/events/list/event-list.utils.d.ts +6 -0
  96. package/dist/types/events/list/index.d.mts +6 -0
  97. package/dist/types/events/list/index.d.ts +6 -0
  98. package/dist/types/events/market-details/index.d.mts +6 -0
  99. package/dist/types/events/market-details/index.d.ts +6 -0
  100. package/dist/types/events/market-details/market-details.constants.d.mts +9 -0
  101. package/dist/types/events/market-details/market-details.constants.d.ts +9 -0
  102. package/dist/types/events/market-details/market-details.types.d.mts +63 -0
  103. package/dist/types/events/market-details/market-details.types.d.ts +63 -0
  104. package/dist/types/events/market-details/market-details.utils.d.mts +46 -0
  105. package/dist/types/events/market-details/market-details.utils.d.ts +46 -0
  106. package/dist/types/index.d.mts +9 -0
  107. package/dist/types/index.d.ts +9 -0
  108. package/dist/types/modals/index.d.mts +4 -0
  109. package/dist/types/modals/index.d.ts +4 -0
  110. package/dist/types/onboarding/index.d.mts +11 -0
  111. package/dist/types/onboarding/index.d.ts +11 -0
  112. package/dist/types/onboarding/onboarding-modal.constants.d.mts +10 -0
  113. package/dist/types/onboarding/onboarding-modal.constants.d.ts +10 -0
  114. package/dist/types/onboarding/onboarding-modal.types.d.mts +55 -0
  115. package/dist/types/onboarding/onboarding-modal.types.d.ts +55 -0
  116. package/dist/types/onboarding/steps/connect-accounts.d.mts +5 -0
  117. package/dist/types/onboarding/steps/connect-accounts.d.ts +5 -0
  118. package/dist/types/onboarding/steps/connect-kalshi-modal.d.mts +5 -0
  119. package/dist/types/onboarding/steps/connect-kalshi-modal.d.ts +5 -0
  120. package/dist/types/onboarding/steps/connect-onchain-modal.d.mts +5 -0
  121. package/dist/types/onboarding/steps/connect-onchain-modal.d.ts +5 -0
  122. package/dist/types/onboarding/steps/how-it-works.d.mts +5 -0
  123. package/dist/types/onboarding/steps/how-it-works.d.ts +5 -0
  124. package/dist/types/onboarding/steps/profile-setup.d.mts +5 -0
  125. package/dist/types/onboarding/steps/profile-setup.d.ts +5 -0
  126. package/dist/types/pages/event-market/event-market.types.d.mts +42 -0
  127. package/dist/types/pages/event-market/event-market.types.d.ts +42 -0
  128. package/dist/types/pages/event-market/index.d.mts +6 -0
  129. package/dist/types/pages/event-market/index.d.ts +6 -0
  130. package/dist/types/pages/home/home.constants.d.mts +8 -0
  131. package/dist/types/pages/home/home.constants.d.ts +8 -0
  132. package/dist/{home-page.d.ts → types/pages/home/home.types.d.mts} +8 -18
  133. package/dist/{home-page.d.mts → types/pages/home/home.types.d.ts} +8 -18
  134. package/dist/types/pages/home/home.utils.d.mts +3 -0
  135. package/dist/types/pages/home/home.utils.d.ts +3 -0
  136. package/dist/types/pages/home/index.d.mts +6 -0
  137. package/dist/types/pages/home/index.d.ts +6 -0
  138. package/dist/types/pages/index.d.mts +3 -0
  139. package/dist/types/pages/index.d.ts +3 -0
  140. package/dist/types/pages/user-profile/components/activity-row.d.mts +10 -0
  141. package/dist/types/pages/user-profile/components/activity-row.d.ts +10 -0
  142. package/dist/types/pages/user-profile/components/balance-display.d.mts +12 -0
  143. package/dist/types/pages/user-profile/components/balance-display.d.ts +12 -0
  144. package/dist/types/pages/user-profile/components/balances-card.d.mts +12 -0
  145. package/dist/types/pages/user-profile/components/balances-card.d.ts +12 -0
  146. package/dist/types/pages/user-profile/components/default-avatar.d.mts +8 -0
  147. package/dist/types/pages/user-profile/components/default-avatar.d.ts +8 -0
  148. package/dist/types/pages/user-profile/components/empty-state.d.mts +10 -0
  149. package/dist/types/pages/user-profile/components/empty-state.d.ts +10 -0
  150. package/dist/types/pages/user-profile/components/position-row.d.mts +10 -0
  151. package/dist/types/pages/user-profile/components/position-row.d.ts +10 -0
  152. package/dist/types/pages/user-profile/components/positions-activity.d.mts +14 -0
  153. package/dist/types/pages/user-profile/components/positions-activity.d.ts +14 -0
  154. package/dist/types/pages/user-profile/components/user-info-card.d.mts +11 -0
  155. package/dist/types/pages/user-profile/components/user-info-card.d.ts +11 -0
  156. package/dist/types/pages/user-profile/index.d.mts +6 -0
  157. package/dist/types/pages/user-profile/index.d.ts +6 -0
  158. package/dist/types/pages/user-profile/user-profile.constants.d.mts +9 -0
  159. package/dist/types/pages/user-profile/user-profile.constants.d.ts +9 -0
  160. package/dist/{user-profile-page.d.ts → types/pages/user-profile/user-profile.types.d.mts} +12 -22
  161. package/dist/{user-profile-page.d.mts → types/pages/user-profile/user-profile.types.d.ts} +12 -22
  162. package/dist/types/primitives/badge/badge.constants.d.mts +4 -0
  163. package/dist/types/primitives/badge/badge.constants.d.ts +4 -0
  164. package/dist/types/primitives/badge/badge.types.d.mts +18 -0
  165. package/dist/types/primitives/badge/badge.types.d.ts +18 -0
  166. package/dist/types/primitives/badge/index.d.mts +7 -0
  167. package/dist/types/primitives/badge/index.d.ts +7 -0
  168. package/dist/types/primitives/button/button.constants.d.mts +6 -0
  169. package/dist/types/primitives/button/button.constants.d.ts +6 -0
  170. package/dist/types/primitives/button/button.types.d.mts +12 -0
  171. package/dist/types/primitives/button/button.types.d.ts +12 -0
  172. package/dist/types/primitives/button/index.d.mts +6 -0
  173. package/dist/types/primitives/button/index.d.ts +6 -0
  174. package/dist/types/primitives/card/card.types.d.mts +3 -0
  175. package/dist/types/primitives/card/card.types.d.ts +3 -0
  176. package/dist/types/primitives/card/index.d.mts +6 -0
  177. package/dist/types/primitives/card/index.d.ts +6 -0
  178. package/dist/{chart.d.mts → types/primitives/chart/index.d.mts} +7 -10
  179. package/dist/{chart.d.ts → types/primitives/chart/index.d.ts} +7 -10
  180. package/dist/types/primitives/hello-world.d.mts +4 -0
  181. package/dist/types/primitives/hello-world.d.ts +4 -0
  182. package/dist/types/primitives/icon/icon.constants.d.mts +2 -0
  183. package/dist/types/primitives/icon/icon.constants.d.ts +2 -0
  184. package/dist/types/primitives/icon/icon.types.d.mts +9 -0
  185. package/dist/types/primitives/icon/icon.types.d.ts +9 -0
  186. package/dist/types/primitives/icon/icon.utils.d.mts +2 -0
  187. package/dist/types/primitives/icon/icon.utils.d.ts +2 -0
  188. package/dist/types/primitives/icon/index.d.mts +46 -0
  189. package/dist/types/primitives/icon/index.d.ts +46 -0
  190. package/dist/types/primitives/icon/registry.d.mts +166 -0
  191. package/dist/types/primitives/icon/registry.d.ts +166 -0
  192. package/dist/types/primitives/icon/svg/arrow-trend-up.d.mts +5 -0
  193. package/dist/types/primitives/icon/svg/arrow-trend-up.d.ts +5 -0
  194. package/dist/types/primitives/icon/svg/arrows-to-dot.d.mts +5 -0
  195. package/dist/types/primitives/icon/svg/arrows-to-dot.d.ts +5 -0
  196. package/dist/types/primitives/icon/svg/bank.d.mts +5 -0
  197. package/dist/types/primitives/icon/svg/bank.d.ts +5 -0
  198. package/dist/types/primitives/icon/svg/best-prices.d.mts +5 -0
  199. package/dist/types/primitives/icon/svg/best-prices.d.ts +5 -0
  200. package/dist/types/primitives/icon/svg/bolt.d.mts +5 -0
  201. package/dist/types/primitives/icon/svg/bolt.d.ts +5 -0
  202. package/dist/types/primitives/icon/svg/check-badge.d.mts +5 -0
  203. package/dist/types/primitives/icon/svg/check-badge.d.ts +5 -0
  204. package/dist/types/primitives/icon/svg/check-circle.d.mts +5 -0
  205. package/dist/types/primitives/icon/svg/check-circle.d.ts +5 -0
  206. package/dist/types/primitives/icon/svg/chevron-down.d.mts +5 -0
  207. package/dist/types/primitives/icon/svg/chevron-down.d.ts +5 -0
  208. package/dist/types/primitives/icon/svg/chevron-left.d.mts +5 -0
  209. package/dist/types/primitives/icon/svg/chevron-left.d.ts +5 -0
  210. package/dist/types/primitives/icon/svg/chevron-right.d.mts +5 -0
  211. package/dist/types/primitives/icon/svg/chevron-right.d.ts +5 -0
  212. package/dist/types/primitives/icon/svg/chevron-up.d.mts +5 -0
  213. package/dist/types/primitives/icon/svg/chevron-up.d.ts +5 -0
  214. package/dist/types/primitives/icon/svg/close.d.mts +5 -0
  215. package/dist/types/primitives/icon/svg/close.d.ts +5 -0
  216. package/dist/types/primitives/icon/svg/copy.d.mts +5 -0
  217. package/dist/types/primitives/icon/svg/copy.d.ts +5 -0
  218. package/dist/types/primitives/icon/svg/create-account.d.mts +5 -0
  219. package/dist/types/primitives/icon/svg/create-account.d.ts +5 -0
  220. package/dist/types/primitives/icon/svg/credit-card.d.mts +5 -0
  221. package/dist/types/primitives/icon/svg/credit-card.d.ts +5 -0
  222. package/dist/types/primitives/icon/svg/disconnect.d.mts +5 -0
  223. package/dist/types/primitives/icon/svg/disconnect.d.ts +5 -0
  224. package/dist/types/primitives/icon/svg/discord.d.mts +5 -0
  225. package/dist/types/primitives/icon/svg/discord.d.ts +5 -0
  226. package/dist/types/primitives/icon/svg/document.d.mts +5 -0
  227. package/dist/types/primitives/icon/svg/document.d.ts +5 -0
  228. package/dist/types/primitives/icon/svg/dots-horizontal.d.mts +5 -0
  229. package/dist/types/primitives/icon/svg/dots-horizontal.d.ts +5 -0
  230. package/dist/types/primitives/icon/svg/download.d.mts +5 -0
  231. package/dist/types/primitives/icon/svg/download.d.ts +5 -0
  232. package/dist/types/primitives/icon/svg/email.d.mts +5 -0
  233. package/dist/types/primitives/icon/svg/email.d.ts +5 -0
  234. package/dist/types/primitives/icon/svg/external-link.d.mts +5 -0
  235. package/dist/types/primitives/icon/svg/external-link.d.ts +5 -0
  236. package/dist/types/primitives/icon/svg/info.d.mts +5 -0
  237. package/dist/types/primitives/icon/svg/info.d.ts +5 -0
  238. package/dist/types/primitives/icon/svg/link-accounts.d.mts +5 -0
  239. package/dist/types/primitives/icon/svg/link-accounts.d.ts +5 -0
  240. package/dist/types/primitives/icon/svg/pencil.d.mts +5 -0
  241. package/dist/types/primitives/icon/svg/pencil.d.ts +5 -0
  242. package/dist/types/primitives/icon/svg/play-square.d.mts +5 -0
  243. package/dist/types/primitives/icon/svg/play-square.d.ts +5 -0
  244. package/dist/types/primitives/icon/svg/profile.d.mts +5 -0
  245. package/dist/types/primitives/icon/svg/profile.d.ts +5 -0
  246. package/dist/types/primitives/icon/svg/revenue-alt.d.mts +5 -0
  247. package/dist/types/primitives/icon/svg/revenue-alt.d.ts +5 -0
  248. package/dist/types/primitives/icon/svg/search.d.mts +5 -0
  249. package/dist/types/primitives/icon/svg/search.d.ts +5 -0
  250. package/dist/types/primitives/icon/svg/shield-trust.d.mts +5 -0
  251. package/dist/types/primitives/icon/svg/shield-trust.d.ts +5 -0
  252. package/dist/types/primitives/icon/svg/stay-in-control.d.mts +5 -0
  253. package/dist/types/primitives/icon/svg/stay-in-control.d.ts +5 -0
  254. package/dist/types/primitives/icon/svg/telegram.d.mts +5 -0
  255. package/dist/types/primitives/icon/svg/telegram.d.ts +5 -0
  256. package/dist/types/primitives/icon/svg/triangle-down.d.mts +5 -0
  257. package/dist/types/primitives/icon/svg/triangle-down.d.ts +5 -0
  258. package/dist/types/primitives/icon/svg/triangle-up-filled.d.mts +5 -0
  259. package/dist/types/primitives/icon/svg/triangle-up-filled.d.ts +5 -0
  260. package/dist/types/primitives/icon/svg/triangle-up.d.mts +5 -0
  261. package/dist/types/primitives/icon/svg/triangle-up.d.ts +5 -0
  262. package/dist/types/primitives/icon/svg/twitter.d.mts +5 -0
  263. package/dist/types/primitives/icon/svg/twitter.d.ts +5 -0
  264. package/dist/types/primitives/icon/svg/upload.d.mts +5 -0
  265. package/dist/types/primitives/icon/svg/upload.d.ts +5 -0
  266. package/dist/types/primitives/icon/svg/wallet-avatar.d.mts +5 -0
  267. package/dist/types/primitives/icon/svg/wallet-avatar.d.ts +5 -0
  268. package/dist/types/primitives/icon/svg/wallet.d.mts +5 -0
  269. package/dist/types/primitives/icon/svg/wallet.d.ts +5 -0
  270. package/dist/types/primitives/icon/svg/warning-filled.d.mts +5 -0
  271. package/dist/types/primitives/icon/svg/warning-filled.d.ts +5 -0
  272. package/dist/types/primitives/icon/svg/warning.d.mts +5 -0
  273. package/dist/types/primitives/icon/svg/warning.d.ts +5 -0
  274. package/dist/types/primitives/icon/types.d.mts +5 -0
  275. package/dist/types/primitives/icon/types.d.ts +5 -0
  276. package/dist/types/primitives/index.d.mts +17 -0
  277. package/dist/types/primitives/index.d.ts +17 -0
  278. package/dist/types/primitives/loading-icon/index.d.mts +11 -0
  279. package/dist/types/primitives/loading-icon/index.d.ts +11 -0
  280. package/dist/types/primitives/modal/index.d.mts +10 -0
  281. package/dist/types/primitives/modal/index.d.ts +10 -0
  282. package/dist/types/primitives/modal/modal.types.d.mts +54 -0
  283. package/dist/types/primitives/modal/modal.types.d.ts +54 -0
  284. package/dist/{number-value.d.mts → types/primitives/number-value.d.mts} +3 -5
  285. package/dist/{number-value.d.ts → types/primitives/number-value.d.ts} +3 -5
  286. package/dist/types/primitives/search/index.d.mts +6 -0
  287. package/dist/types/primitives/search/index.d.ts +6 -0
  288. package/dist/types/primitives/search/search-empty-icon.d.mts +5 -0
  289. package/dist/types/primitives/search/search-empty-icon.d.ts +5 -0
  290. package/dist/types/primitives/search/search.types.d.mts +96 -0
  291. package/dist/types/primitives/search/search.types.d.ts +96 -0
  292. package/dist/{select.d.mts → types/primitives/select/index.d.mts} +3 -5
  293. package/dist/{select.d.ts → types/primitives/select/index.d.ts} +3 -5
  294. package/dist/types/primitives/skeleton/index.d.mts +7 -0
  295. package/dist/types/primitives/skeleton/index.d.ts +7 -0
  296. package/dist/types/primitives/skeleton/skeleton-block.d.mts +8 -0
  297. package/dist/types/primitives/skeleton/skeleton-block.d.ts +8 -0
  298. package/dist/{skeleton.d.mts → types/primitives/skeleton/skeleton.types.d.mts} +6 -9
  299. package/dist/{skeleton.d.ts → types/primitives/skeleton/skeleton.types.d.ts} +6 -9
  300. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.mts +5 -0
  301. package/dist/types/primitives/skeleton/views/event-list-item-details-skeleton-view.d.ts +5 -0
  302. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.mts +9 -0
  303. package/dist/types/primitives/skeleton/views/event-list-item-skeleton-view.d.ts +9 -0
  304. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.mts +5 -0
  305. package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.ts +5 -0
  306. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.mts +12 -0
  307. package/dist/types/primitives/skeleton/views/market-details-skeleton-view.d.ts +12 -0
  308. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.mts +5 -0
  309. package/dist/types/primitives/skeleton/views/place-order-skeleton-view.d.ts +5 -0
  310. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.mts +5 -0
  311. package/dist/types/primitives/skeleton/views/settlement-skeleton-view.d.ts +5 -0
  312. package/dist/types/primitives/state-message/index.d.mts +15 -0
  313. package/dist/types/primitives/state-message/index.d.ts +15 -0
  314. package/dist/{switch-button.d.mts → types/primitives/switch-button/index.d.mts} +4 -7
  315. package/dist/{switch-button.d.ts → types/primitives/switch-button/index.d.ts} +4 -7
  316. package/dist/types/primitives/tabs/index.d.mts +6 -0
  317. package/dist/types/primitives/tabs/index.d.ts +6 -0
  318. package/dist/types/primitives/tabs/tabs.types.d.mts +24 -0
  319. package/dist/types/primitives/tabs/tabs.types.d.ts +24 -0
  320. package/dist/types/primitives/tabs/tabs.utils.d.mts +14 -0
  321. package/dist/types/primitives/tabs/tabs.utils.d.ts +14 -0
  322. package/dist/types/primitives/typography/index.d.mts +7 -0
  323. package/dist/types/primitives/typography/index.d.ts +7 -0
  324. package/dist/types/primitives/typography/typography.constants.d.mts +3 -0
  325. package/dist/types/primitives/typography/typography.constants.d.ts +3 -0
  326. package/dist/types/primitives/typography/typography.types.d.mts +8 -0
  327. package/dist/types/primitives/typography/typography.types.d.ts +8 -0
  328. package/dist/types/primitives/venue-logo/index.d.mts +8 -0
  329. package/dist/types/primitives/venue-logo/index.d.ts +8 -0
  330. package/dist/types/primitives/venue-logo/logo-props.d.mts +10 -0
  331. package/dist/types/primitives/venue-logo/logo-props.d.ts +10 -0
  332. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.mts +5 -0
  333. package/dist/types/primitives/venue-logo/svg/logo-kalshi.d.ts +5 -0
  334. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.mts +5 -0
  335. package/dist/types/primitives/venue-logo/svg/logo-opinion.d.ts +5 -0
  336. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.mts +5 -0
  337. package/dist/types/primitives/venue-logo/svg/logo-polymarket.d.ts +5 -0
  338. package/dist/types/primitives/venue-logo/svg/logo-probable.d.mts +5 -0
  339. package/dist/types/primitives/venue-logo/svg/logo-probable.d.ts +5 -0
  340. package/dist/types/primitives/venue-logo/venue-logo.constants.d.mts +9 -0
  341. package/dist/types/primitives/venue-logo/venue-logo.constants.d.ts +9 -0
  342. package/dist/types/primitives/venue-logo/venue-logo.types.d.mts +17 -0
  343. package/dist/types/primitives/venue-logo/venue-logo.types.d.ts +17 -0
  344. package/dist/types/profile/index.d.mts +6 -0
  345. package/dist/types/profile/index.d.ts +6 -0
  346. package/dist/types/profile/profile-modal.constants.d.mts +17 -0
  347. package/dist/types/profile/profile-modal.constants.d.ts +17 -0
  348. package/dist/{profile-modal.d.mts → types/profile/profile-modal.types.d.mts} +4 -11
  349. package/dist/{profile-modal.d.ts → types/profile/profile-modal.types.d.ts} +4 -11
  350. package/dist/types/profile/tabs/about-tab.d.mts +16 -0
  351. package/dist/types/profile/tabs/about-tab.d.ts +16 -0
  352. package/dist/types/profile/tabs/accounts-wallets-tab.d.mts +18 -0
  353. package/dist/types/profile/tabs/accounts-wallets-tab.d.ts +18 -0
  354. package/dist/types/shared/constants.d.mts +23 -0
  355. package/dist/types/shared/constants.d.ts +23 -0
  356. package/dist/types/shared/query-error.d.mts +2 -0
  357. package/dist/types/shared/query-error.d.ts +2 -0
  358. package/dist/types/shared/types.d.mts +1 -0
  359. package/dist/types/shared/types.d.ts +1 -0
  360. package/dist/types/shared/utils.d.mts +15 -0
  361. package/dist/types/shared/utils.d.ts +15 -0
  362. package/dist/types/trading/index.d.mts +4 -0
  363. package/dist/types/trading/index.d.ts +4 -0
  364. package/dist/{place-order.d.ts → types/trading/place-order/index.d.mts} +3 -7
  365. package/dist/{place-order.d.mts → types/trading/place-order/index.d.ts} +3 -7
  366. package/dist/{settlement.d.ts → types/trading/settlement/index.d.mts} +3 -7
  367. package/dist/{settlement.d.mts → types/trading/settlement/index.d.ts} +3 -7
  368. package/dist/{types-DkGlbmXq.d.ts → types/trading/types.d.mts} +35 -38
  369. package/dist/{types-DkGlbmXq.d.mts → types/trading/types.d.ts} +35 -38
  370. package/dist/types/trading/utils.d.mts +16 -0
  371. package/dist/types/trading/utils.d.ts +16 -0
  372. package/dist/types/withdraw/index.d.mts +6 -0
  373. package/dist/types/withdraw/index.d.ts +6 -0
  374. package/dist/types/withdraw/steps/kalshi-withdraw.d.mts +5 -0
  375. package/dist/types/withdraw/steps/kalshi-withdraw.d.ts +5 -0
  376. package/dist/types/withdraw/steps/venue-selection.d.mts +6 -0
  377. package/dist/types/withdraw/steps/venue-selection.d.ts +6 -0
  378. package/dist/types/withdraw/steps/withdraw-amount.d.mts +8 -0
  379. package/dist/types/withdraw/steps/withdraw-amount.d.ts +8 -0
  380. package/dist/types/withdraw/steps/withdraw-method.d.mts +7 -0
  381. package/dist/types/withdraw/steps/withdraw-method.d.ts +7 -0
  382. package/dist/types/withdraw/withdraw-modal.constants.d.mts +9 -0
  383. package/dist/types/withdraw/withdraw-modal.constants.d.ts +9 -0
  384. package/dist/{withdraw-modal.d.mts → types/withdraw/withdraw-modal.types.d.mts} +3 -10
  385. package/dist/{withdraw-modal.d.ts → types/withdraw/withdraw-modal.types.d.ts} +3 -10
  386. package/package.json +35 -273
  387. package/dist/badge.d.mts +0 -28
  388. package/dist/badge.d.ts +0 -28
  389. package/dist/badge.js +0 -110
  390. package/dist/badge.mjs +0 -9
  391. package/dist/button.d.mts +0 -20
  392. package/dist/button.d.ts +0 -20
  393. package/dist/button.js +0 -183
  394. package/dist/button.mjs +0 -8
  395. package/dist/card.d.mts +0 -10
  396. package/dist/card.d.ts +0 -10
  397. package/dist/card.js +0 -88
  398. package/dist/card.mjs +0 -7
  399. package/dist/chart.mjs +0 -8
  400. package/dist/chunk-3QLOUBDJ.mjs +0 -483
  401. package/dist/chunk-3W7NBJLU.mjs +0 -371
  402. package/dist/chunk-4S3I6X7F.mjs +0 -855
  403. package/dist/chunk-4VUDTWH7.mjs +0 -42
  404. package/dist/chunk-6JG6I5AY.mjs +0 -654
  405. package/dist/chunk-BNDFQPHF.mjs +0 -9
  406. package/dist/chunk-ERGNR6UQ.mjs +0 -67
  407. package/dist/chunk-FO263M3V.mjs +0 -10
  408. package/dist/chunk-FO2QCB4Z.mjs +0 -35
  409. package/dist/chunk-GJ4U5NCE.mjs +0 -134
  410. package/dist/chunk-GNSPZ53C.mjs +0 -991
  411. package/dist/chunk-HOXTJ742.mjs +0 -146
  412. package/dist/chunk-JNH64AKR.mjs +0 -720
  413. package/dist/chunk-K6IJ4WBM.mjs +0 -67
  414. package/dist/chunk-KAGYJ4XT.mjs +0 -126
  415. package/dist/chunk-LA3FBBSJ.mjs +0 -311
  416. package/dist/chunk-LCZKSITC.mjs +0 -162
  417. package/dist/chunk-M4RJHRFT.mjs +0 -445
  418. package/dist/chunk-MBHTXNHX.mjs +0 -289
  419. package/dist/chunk-MJHKBCXQ.mjs +0 -379
  420. package/dist/chunk-NDG43KGL.mjs +0 -44
  421. package/dist/chunk-NH2G3POM.mjs +0 -470
  422. package/dist/chunk-OBCHURW5.mjs +0 -64
  423. package/dist/chunk-OH56VUYK.mjs +0 -321
  424. package/dist/chunk-OJVTGNIF.mjs +0 -230
  425. package/dist/chunk-P2PJBO5C.mjs +0 -280
  426. package/dist/chunk-PORVP72S.mjs +0 -277
  427. package/dist/chunk-QLMVKLNJ.mjs +0 -669
  428. package/dist/chunk-QM7CGMFG.mjs +0 -156
  429. package/dist/chunk-S3H63TQ5.mjs +0 -537
  430. package/dist/chunk-ZFMCCBP6.mjs +0 -25
  431. package/dist/connect-button.mjs +0 -14
  432. package/dist/deposit-modal.mjs +0 -15
  433. package/dist/event-list-item-details.d.mts +0 -11
  434. package/dist/event-list-item-details.d.ts +0 -11
  435. package/dist/event-list-item-details.js +0 -2254
  436. package/dist/event-list-item-details.mjs +0 -19
  437. package/dist/event-list-item-details.types-CMbXOrT-.d.ts +0 -53
  438. package/dist/event-list-item-details.types-DekJKeMD.d.mts +0 -53
  439. package/dist/event-list-item.d.mts +0 -10
  440. package/dist/event-list-item.d.ts +0 -10
  441. package/dist/event-list-item.js +0 -2600
  442. package/dist/event-list-item.mjs +0 -17
  443. package/dist/event-list-item.types-Y6IeJ4e4.d.mts +0 -46
  444. package/dist/event-list-item.types-Y6IeJ4e4.d.ts +0 -46
  445. package/dist/event-list.d.mts +0 -9
  446. package/dist/event-list.d.ts +0 -9
  447. package/dist/event-list.js +0 -3578
  448. package/dist/event-list.mjs +0 -20
  449. package/dist/event-list.types-CkAAUqwW.d.mts +0 -13
  450. package/dist/event-list.types-CkAAUqwW.d.ts +0 -13
  451. package/dist/event-market-page.d.mts +0 -52
  452. package/dist/event-market-page.d.ts +0 -52
  453. package/dist/event-market-page.mjs +0 -28
  454. package/dist/hello-world.d.mts +0 -8
  455. package/dist/hello-world.d.ts +0 -8
  456. package/dist/hello-world.js +0 -92
  457. package/dist/hello-world.mjs +0 -8
  458. package/dist/home-page.js +0 -3842
  459. package/dist/home-page.mjs +0 -21
  460. package/dist/icon.d.mts +0 -193
  461. package/dist/icon.d.ts +0 -193
  462. package/dist/icon.js +0 -1465
  463. package/dist/loading-icon.d.mts +0 -14
  464. package/dist/loading-icon.d.ts +0 -14
  465. package/dist/loading-icon.js +0 -112
  466. package/dist/loading-icon.mjs +0 -8
  467. package/dist/market-details.d.mts +0 -73
  468. package/dist/market-details.d.ts +0 -73
  469. package/dist/market-details.mjs +0 -21
  470. package/dist/modal.d.mts +0 -66
  471. package/dist/modal.d.ts +0 -66
  472. package/dist/modal.js +0 -321
  473. package/dist/modal.mjs +0 -9
  474. package/dist/number-value.js +0 -67
  475. package/dist/number-value.mjs +0 -7
  476. package/dist/onboarding-modal.d.mts +0 -88
  477. package/dist/onboarding-modal.d.ts +0 -88
  478. package/dist/onboarding-modal.js +0 -2836
  479. package/dist/onboarding-modal.mjs +0 -24
  480. package/dist/place-order.mjs +0 -18
  481. package/dist/profile-modal.js +0 -2447
  482. package/dist/profile-modal.mjs +0 -14
  483. package/dist/registry-DfSCFAdC.d.mts +0 -178
  484. package/dist/registry-DfSCFAdC.d.ts +0 -178
  485. package/dist/search.d.mts +0 -51
  486. package/dist/search.d.ts +0 -51
  487. package/dist/search.js +0 -1954
  488. package/dist/search.mjs +0 -12
  489. package/dist/select.js +0 -1552
  490. package/dist/select.mjs +0 -11
  491. package/dist/settlement.js +0 -2445
  492. package/dist/settlement.mjs +0 -15
  493. package/dist/skeleton.js +0 -490
  494. package/dist/skeleton.mjs +0 -10
  495. package/dist/switch-button.js +0 -191
  496. package/dist/switch-button.mjs +0 -7
  497. package/dist/tabs.d.mts +0 -31
  498. package/dist/tabs.d.ts +0 -31
  499. package/dist/tabs.js +0 -2078
  500. package/dist/tabs.mjs +0 -12
  501. package/dist/types-BVj9ky9P.d.mts +0 -3
  502. package/dist/types-BVj9ky9P.d.ts +0 -3
  503. package/dist/typography.d.mts +0 -18
  504. package/dist/typography.d.ts +0 -18
  505. package/dist/typography.js +0 -93
  506. package/dist/typography.mjs +0 -9
  507. package/dist/user-profile-page.js +0 -3081
  508. package/dist/user-profile-page.mjs +0 -15
  509. package/dist/venue-logo.d.mts +0 -13
  510. package/dist/venue-logo.d.ts +0 -13
  511. package/dist/venue-logo.js +0 -323
  512. package/dist/venue-logo.mjs +0 -10
  513. package/dist/venue-logo.types-CGUc22ly.d.mts +0 -19
  514. package/dist/venue-logo.types-Dqr39S1-.d.ts +0 -19
  515. package/dist/withdraw-modal.js +0 -2449
  516. package/dist/withdraw-modal.mjs +0 -14
@@ -0,0 +1,769 @@
1
+ import {
2
+ Card,
3
+ Skeleton,
4
+ Tabs,
5
+ skeletonViews
6
+ } from "./chunk-UBBOLLOS.mjs";
7
+ import {
8
+ Button,
9
+ Icon,
10
+ VenueLogo,
11
+ __spreadProps,
12
+ __spreadValues,
13
+ cn,
14
+ formatUsd,
15
+ getMotionClassName
16
+ } from "./chunk-HI4EEDN5.mjs";
17
+
18
+ // src/trading/utils.ts
19
+ import { resolveAggUiLabels } from "@agg-market/hooks";
20
+ import dayjs from "dayjs";
21
+ var defaultLabels = resolveAggUiLabels("en-US");
22
+ var defaultSettlementSectionLabel = defaultLabels.trading.settlementSection;
23
+ var defaultSettlementDifferencesTitle = defaultLabels.trading.settlementDifferencesTitle;
24
+ var defaultTradingDisclaimer = defaultLabels.trading.disclaimer;
25
+ var getTradingDateLabel = (value) => {
26
+ const parsedValue = dayjs(value);
27
+ if (!parsedValue.isValid()) {
28
+ return typeof value === "string" ? value : "";
29
+ }
30
+ return parsedValue.format("MMM D, YYYY");
31
+ };
32
+ var getTradingVenueLabel = (venue, label) => {
33
+ if (label)
34
+ return label;
35
+ return defaultLabels.venues[venue];
36
+ };
37
+ var getTradingValueLabel = ({
38
+ amount,
39
+ minimumFractionDigits = 0,
40
+ maximumFractionDigits = 2
41
+ }) => {
42
+ return amount.toLocaleString("en-US", {
43
+ style: "currency",
44
+ currency: "USD",
45
+ minimumFractionDigits,
46
+ maximumFractionDigits
47
+ });
48
+ };
49
+ var getTradingPriceLabel = (value) => {
50
+ return `${Math.round(value * 100)}\xA2`;
51
+ };
52
+ var getTradingAveragePriceLabel = (value) => {
53
+ return defaultLabels.trading.averagePrice(value);
54
+ };
55
+ var getTradingBalanceLabel = (value) => {
56
+ return defaultLabels.trading.balance(formatUsd(value));
57
+ };
58
+ var getTradingSharesLabel = (value) => {
59
+ return defaultLabels.trading.shares(value);
60
+ };
61
+ var getTradingSlippageLabel = (value) => {
62
+ return defaultLabels.trading.slippage(value);
63
+ };
64
+
65
+ // src/trading/place-order/index.tsx
66
+ import { useEffect, useMemo, useState } from "react";
67
+ import { useLabels, useSdkUiConfig } from "@agg-market/hooks";
68
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
69
+ var WarningFilledIcon = ({ className }) => {
70
+ return /* @__PURE__ */ jsxs(
71
+ "svg",
72
+ {
73
+ viewBox: "0 0 16 16",
74
+ fill: "none",
75
+ className: cn("text-agg-warning", className),
76
+ "aria-hidden": "true",
77
+ children: [
78
+ /* @__PURE__ */ jsx("path", { d: "M8 1.33301L15.3333 14.6663H0.666656L8 1.33301Z", fill: "currentColor" }),
79
+ /* @__PURE__ */ jsx("path", { d: "M8 5.33301V8.66634", stroke: "white", strokeWidth: "1.4", strokeLinecap: "round" }),
80
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "11.1667", r: "0.833333", fill: "white" })
81
+ ]
82
+ }
83
+ );
84
+ };
85
+ var ErrorFilledIcon = ({ className }) => {
86
+ return /* @__PURE__ */ jsxs(
87
+ "svg",
88
+ {
89
+ viewBox: "0 0 16 16",
90
+ fill: "none",
91
+ className: cn("text-agg-error", className),
92
+ "aria-hidden": "true",
93
+ children: [
94
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "8", r: "8", fill: "currentColor" }),
95
+ /* @__PURE__ */ jsx("path", { d: "M8 4.16699V8.50033", stroke: "white", strokeWidth: "1.4", strokeLinecap: "round" }),
96
+ /* @__PURE__ */ jsx("circle", { cx: "8", cy: "11.167", r: "0.833333", fill: "white" })
97
+ ]
98
+ }
99
+ );
100
+ };
101
+ var getPlaceOrderContainerClassName = () => {
102
+ return "overflow-hidden rounded-agg-xl border border-agg-border bg-agg-secondary shadow-none hover:shadow-none";
103
+ };
104
+ var getRoutingCardClassName = (isHighlighted) => {
105
+ if (!isHighlighted) {
106
+ return "border-agg-border bg-agg-secondary";
107
+ }
108
+ return "border-agg-trade-highlight-border bg-agg-trade-highlight-surface";
109
+ };
110
+ var getResultValueClassName = (tone) => {
111
+ if (tone === "default")
112
+ return "text-agg-foreground";
113
+ return "text-agg-success";
114
+ };
115
+ var negativeOutcomePattern = /\b(no|down|against|under|lose|false)\b/i;
116
+ var resolveIsPositiveOutcome = (outcome, index) => {
117
+ const outcomeText = `${outcome.id} ${outcome.label}`;
118
+ if (negativeOutcomePattern.test(outcomeText))
119
+ return false;
120
+ if (index === 1)
121
+ return false;
122
+ return true;
123
+ };
124
+ var getOutcomeButtonClassName = ({
125
+ enableAnimations,
126
+ isActive,
127
+ isPositive
128
+ }) => {
129
+ return cn(
130
+ "flex-1 cursor-pointer rounded-agg-full border px-6 py-2.5 text-agg-base leading-agg-6",
131
+ getMotionClassName(enableAnimations, "transition-all duration-300 ease-in-out"),
132
+ isActive ? isPositive ? "border-transparent bg-[#18c15c] font-agg-bold text-agg-on-primary" : "border-transparent bg-[#e5455f] font-agg-bold text-agg-on-primary" : "border-transparent bg-agg-secondary-hover font-agg-normal text-agg-foreground hover:bg-agg-tertiary"
133
+ );
134
+ };
135
+ var getStatusContent = ({
136
+ placement,
137
+ status,
138
+ onStatusAction
139
+ }) => {
140
+ if (!status || status.placement !== placement)
141
+ return null;
142
+ if (status.tone === "warning") {
143
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-center gap-2", children: [
144
+ /* @__PURE__ */ jsx(WarningFilledIcon, { className: "h-4 w-4 shrink-0" }),
145
+ /* @__PURE__ */ jsx("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: status.message })
146
+ ] });
147
+ }
148
+ return /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 rounded-agg-lg bg-agg-status-error-surface px-3 py-2.5", children: [
149
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
150
+ /* @__PURE__ */ jsx(ErrorFilledIcon, { className: "h-4 w-4 shrink-0" }),
151
+ /* @__PURE__ */ jsx("p", { className: "min-w-0 flex-1 text-agg-sm leading-agg-5 text-agg-foreground", children: status.message })
152
+ ] }),
153
+ status.actionLabel ? /* @__PURE__ */ jsx(
154
+ "button",
155
+ {
156
+ type: "button",
157
+ className: "shrink-0 text-agg-sm font-agg-bold leading-agg-5 text-agg-primary",
158
+ "aria-label": status.actionLabel,
159
+ onClick: onStatusAction,
160
+ children: status.actionLabel
161
+ }
162
+ ) : null
163
+ ] });
164
+ };
165
+ var PlaceOrder = ({
166
+ title,
167
+ marketDate,
168
+ marketImageUrl,
169
+ activeTab,
170
+ buyLabel,
171
+ sellLabel,
172
+ outcomes,
173
+ selectedOutcomeId,
174
+ primaryMetric,
175
+ routing,
176
+ result,
177
+ actionLabel,
178
+ disclaimer = defaultTradingDisclaimer,
179
+ isDismissible = false,
180
+ isLoading = false,
181
+ status,
182
+ className,
183
+ isPrimaryActionDisabled = false,
184
+ isPrimaryActionLoading = false,
185
+ onClose,
186
+ onOutcomeChange,
187
+ onPrimaryAction,
188
+ onStatusAction,
189
+ onTabChange
190
+ }) => {
191
+ const { enableAnimations } = useSdkUiConfig();
192
+ const labels = useLabels();
193
+ const resolvedDisclaimer = disclaimer === defaultTradingDisclaimer ? labels.trading.disclaimer : disclaimer;
194
+ if (isLoading) {
195
+ return /* @__PURE__ */ jsx(
196
+ Skeleton,
197
+ {
198
+ ariaLabel: labels.common.loading,
199
+ className,
200
+ view: skeletonViews.placeOrder
201
+ }
202
+ );
203
+ }
204
+ const [internalTab, setInternalTab] = useState(activeTab);
205
+ const [internalOutcomeId, setInternalOutcomeId] = useState(selectedOutcomeId);
206
+ useEffect(() => {
207
+ setInternalTab(activeTab);
208
+ }, [activeTab]);
209
+ useEffect(() => {
210
+ setInternalOutcomeId(selectedOutcomeId);
211
+ }, [selectedOutcomeId]);
212
+ const resolvedTab = onTabChange ? activeTab : internalTab;
213
+ const resolvedOutcomeId = onOutcomeChange ? selectedOutcomeId : internalOutcomeId;
214
+ const hasHighlightedRouting = routing.tone === "highlighted";
215
+ const dateLabel = getTradingDateLabel(marketDate);
216
+ const tabItems = useMemo(() => {
217
+ return [
218
+ { value: "buy", label: buyLabel },
219
+ { value: "sell", label: sellLabel }
220
+ ];
221
+ }, [buyLabel, sellLabel]);
222
+ const handleTabChange = (nextTab) => {
223
+ if (!onTabChange) {
224
+ setInternalTab(nextTab);
225
+ }
226
+ onTabChange == null ? void 0 : onTabChange(nextTab);
227
+ };
228
+ const handleOutcomeChange = (nextOutcomeId) => {
229
+ if (!onOutcomeChange) {
230
+ setInternalOutcomeId(nextOutcomeId);
231
+ }
232
+ onOutcomeChange == null ? void 0 : onOutcomeChange(nextOutcomeId);
233
+ };
234
+ const actionButton = /* @__PURE__ */ jsx(
235
+ Button,
236
+ {
237
+ size: "large",
238
+ className: "w-full",
239
+ disabled: isPrimaryActionDisabled,
240
+ isLoading: isPrimaryActionLoading,
241
+ "aria-label": actionLabel,
242
+ onClick: onPrimaryAction,
243
+ children: actionLabel
244
+ }
245
+ );
246
+ const contentBody = /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 p-5", children: [
247
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
248
+ /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-5", children: [
249
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
250
+ marketImageUrl ? /* @__PURE__ */ jsx(
251
+ "img",
252
+ {
253
+ src: marketImageUrl,
254
+ alt: "",
255
+ className: "h-12 w-12 shrink-0 rounded-agg-lg object-cover"
256
+ }
257
+ ) : null,
258
+ /* @__PURE__ */ jsx("p", { className: "min-w-0 text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: title })
259
+ ] }),
260
+ isDismissible ? /* @__PURE__ */ jsx(
261
+ "button",
262
+ {
263
+ type: "button",
264
+ "aria-label": labels.common.close,
265
+ className: "shrink-0 text-agg-foreground",
266
+ onClick: onClose,
267
+ children: /* @__PURE__ */ jsx(
268
+ Icon,
269
+ {
270
+ name: "close",
271
+ size: "medium",
272
+ className: "h-6 w-6 text-agg-foreground",
273
+ color: "currentColor"
274
+ }
275
+ )
276
+ }
277
+ ) : null
278
+ ] }),
279
+ /* @__PURE__ */ jsx("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: dateLabel })
280
+ ] }),
281
+ /* @__PURE__ */ jsx(
282
+ Tabs,
283
+ {
284
+ ariaLabel: labels.common.tabsAria,
285
+ items: tabItems,
286
+ value: resolvedTab,
287
+ onChange: handleTabChange,
288
+ variant: "underline",
289
+ size: "s",
290
+ overflowBehavior: "scroll",
291
+ classNames: {
292
+ root: "w-full",
293
+ tabList: "w-full"
294
+ }
295
+ }
296
+ ),
297
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4", children: [
298
+ /* @__PURE__ */ jsx("div", { className: "flex w-full gap-2", children: outcomes.map((outcome, index) => {
299
+ const isActive = outcome.id === resolvedOutcomeId;
300
+ const isPositive = resolveIsPositiveOutcome(outcome, index);
301
+ return /* @__PURE__ */ jsx(
302
+ "button",
303
+ {
304
+ type: "button",
305
+ className: getOutcomeButtonClassName({
306
+ enableAnimations,
307
+ isActive,
308
+ isPositive
309
+ }),
310
+ "aria-pressed": isActive,
311
+ "aria-label": `${outcome.label} ${outcome.priceLabel}`,
312
+ onClick: () => handleOutcomeChange(outcome.id),
313
+ children: `${outcome.label} ${outcome.priceLabel}`
314
+ },
315
+ outcome.id
316
+ );
317
+ }) }),
318
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
319
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
320
+ /* @__PURE__ */ jsx("p", { className: "text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: primaryMetric.label }),
321
+ /* @__PURE__ */ jsx("p", { className: "text-agg-sm leading-agg-5 text-agg-muted-foreground", children: primaryMetric.hint })
322
+ ] }),
323
+ /* @__PURE__ */ jsx("p", { className: "text-agg-3xl font-agg-bold leading-agg-9 text-agg-foreground", children: primaryMetric.value })
324
+ ] })
325
+ ] }),
326
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-2", children: [
327
+ /* @__PURE__ */ jsxs(
328
+ "div",
329
+ {
330
+ className: cn(
331
+ "relative overflow-hidden rounded-agg-lg border p-3",
332
+ getRoutingCardClassName(hasHighlightedRouting)
333
+ ),
334
+ children: [
335
+ /* @__PURE__ */ jsx(
336
+ "div",
337
+ {
338
+ className: cn(
339
+ "pointer-events-none absolute inset-x-0 bottom-0 h-11 bg-linear-to-b from-transparent to-agg-trade-highlight-glow",
340
+ hasHighlightedRouting ? "opacity-100" : "opacity-0"
341
+ )
342
+ }
343
+ ),
344
+ /* @__PURE__ */ jsxs("div", { className: "relative flex flex-col gap-3", children: [
345
+ routing.rows.map((row, index) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3", children: [
346
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
347
+ /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [
348
+ /* @__PURE__ */ jsx(
349
+ VenueLogo,
350
+ {
351
+ venue: row.venue,
352
+ size: "small",
353
+ ariaLabel: getTradingVenueLabel(row.venue)
354
+ }
355
+ ),
356
+ /* @__PURE__ */ jsx("p", { className: "truncate text-agg-base leading-agg-6 text-agg-foreground", children: row.label })
357
+ ] }),
358
+ /* @__PURE__ */ jsx("p", { className: "shrink-0 text-agg-base leading-agg-6 text-agg-foreground", children: row.priceLabel })
359
+ ] }),
360
+ index < routing.rows.length - 1 ? /* @__PURE__ */ jsx(
361
+ "div",
362
+ {
363
+ className: cn(
364
+ "h-px w-full",
365
+ hasHighlightedRouting ? "bg-agg-trade-highlight-border" : "bg-agg-separator"
366
+ )
367
+ }
368
+ ) : null
369
+ ] }, `${row.venue}-${row.label}`)),
370
+ routing.highlightLabel ? /* @__PURE__ */ jsx("p", { className: "text-center text-agg-sm font-agg-bold leading-agg-5 uppercase text-agg-trade-highlight-accent", children: routing.highlightLabel }) : null
371
+ ] })
372
+ ]
373
+ }
374
+ ),
375
+ /* @__PURE__ */ jsx("p", { className: "text-agg-sm leading-agg-5 text-agg-muted-foreground", children: routing.helperLabel })
376
+ ] }),
377
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between gap-4", children: [
378
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
379
+ /* @__PURE__ */ jsx("p", { className: "text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: result.label }),
380
+ /* @__PURE__ */ jsx("p", { className: "text-agg-sm leading-agg-5 text-agg-muted-foreground", children: result.hint })
381
+ ] }),
382
+ /* @__PURE__ */ jsx(
383
+ "p",
384
+ {
385
+ className: cn(
386
+ "text-agg-3xl font-agg-bold leading-agg-9",
387
+ getResultValueClassName(result.tone)
388
+ ),
389
+ children: result.value
390
+ }
391
+ )
392
+ ] }),
393
+ /* @__PURE__ */ jsxs(Fragment, { children: [
394
+ getStatusContent({
395
+ placement: "above-action",
396
+ status,
397
+ onStatusAction
398
+ }),
399
+ actionButton,
400
+ getStatusContent({
401
+ placement: "below-action",
402
+ status,
403
+ onStatusAction
404
+ })
405
+ ] }),
406
+ /* @__PURE__ */ jsx("p", { className: "text-center text-agg-xs leading-agg-4 text-agg-muted-foreground", children: resolvedDisclaimer })
407
+ ] });
408
+ return /* @__PURE__ */ jsx(Card, { className: cn(getPlaceOrderContainerClassName(), className), children: contentBody });
409
+ };
410
+ PlaceOrder.displayName = "PlaceOrder";
411
+
412
+ // src/trading/settlement/index.tsx
413
+ import { useCallback, useEffect as useEffect2, useRef, useState as useState2 } from "react";
414
+ import { useLabels as useLabels2, useSdkUiConfig as useSdkUiConfig2 } from "@agg-market/hooks";
415
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
416
+ var getSettlementHeaderClassName = () => {
417
+ return "flex items-center justify-between gap-4";
418
+ };
419
+ var Settlement = ({
420
+ sectionLabel = defaultSettlementSectionLabel,
421
+ question,
422
+ differencesTitle = defaultSettlementDifferencesTitle,
423
+ differences,
424
+ venues,
425
+ defaultExpandedVenue,
426
+ expandedVenue,
427
+ isLoading = false,
428
+ onExpandedVenueChange,
429
+ onShowMore,
430
+ className
431
+ }) => {
432
+ var _a, _b;
433
+ const labels = useLabels2();
434
+ const { enableAnimations } = useSdkUiConfig2();
435
+ const resolvedSectionLabel = sectionLabel === defaultSettlementSectionLabel ? labels.trading.settlementSection : sectionLabel;
436
+ const resolvedDifferencesTitle = differencesTitle === defaultSettlementDifferencesTitle ? labels.trading.settlementDifferencesTitle : differencesTitle;
437
+ const [internalExpandedVenue, setInternalExpandedVenue] = useState2(
438
+ (_b = defaultExpandedVenue != null ? defaultExpandedVenue : (_a = venues[0]) == null ? void 0 : _a.venue) != null ? _b : null
439
+ );
440
+ const [expandedDescriptionByVenue, setExpandedDescriptionByVenue] = useState2({});
441
+ const [overflowingDescriptionByVenue, setOverflowingDescriptionByVenue] = useState2({});
442
+ const [collapsedDescriptionByVenue, setCollapsedDescriptionByVenue] = useState2({});
443
+ const descriptionWrapperRefs = useRef(/* @__PURE__ */ new Map());
444
+ const descriptionMeasureRefs = useRef(/* @__PURE__ */ new Map());
445
+ useEffect2(() => {
446
+ if (expandedVenue === void 0)
447
+ return;
448
+ setInternalExpandedVenue(expandedVenue);
449
+ }, [expandedVenue]);
450
+ const resolvedExpandedVenue = expandedVenue === void 0 ? internalExpandedVenue : expandedVenue;
451
+ const handleVenueClick = (venue) => {
452
+ const nextVenue = resolvedExpandedVenue === venue ? null : venue;
453
+ if (expandedVenue === void 0) {
454
+ setInternalExpandedVenue(nextVenue);
455
+ }
456
+ onExpandedVenueChange == null ? void 0 : onExpandedVenueChange(nextVenue);
457
+ };
458
+ const handleDescriptionWrapperRef = useCallback(
459
+ (venue, element) => {
460
+ if (!element) {
461
+ descriptionWrapperRefs.current.delete(venue);
462
+ return;
463
+ }
464
+ descriptionWrapperRefs.current.set(venue, element);
465
+ },
466
+ []
467
+ );
468
+ const handleDescriptionMeasureRef = useCallback(
469
+ (venue, element) => {
470
+ if (!element) {
471
+ descriptionMeasureRefs.current.delete(venue);
472
+ return;
473
+ }
474
+ descriptionMeasureRefs.current.set(venue, element);
475
+ },
476
+ []
477
+ );
478
+ const updateDescriptionLayout = useCallback(
479
+ (venue, description, showMoreLabel) => {
480
+ const descriptionWrapperElement = descriptionWrapperRefs.current.get(venue);
481
+ const descriptionMeasureElement = descriptionMeasureRefs.current.get(venue);
482
+ if (!descriptionWrapperElement || !descriptionMeasureElement)
483
+ return;
484
+ const wrapperWidth = descriptionWrapperElement.clientWidth;
485
+ if (wrapperWidth <= 0)
486
+ return;
487
+ const computedStyles = window.getComputedStyle(descriptionWrapperElement);
488
+ const parsedLineHeight = Number.parseFloat(computedStyles.lineHeight);
489
+ const lineHeight = Number.isFinite(parsedLineHeight) ? parsedLineHeight : 20;
490
+ const maxHeight = lineHeight * 2 + 1;
491
+ descriptionMeasureElement.style.width = `${wrapperWidth}px`;
492
+ const getHeight = (value) => {
493
+ descriptionMeasureElement.textContent = value;
494
+ return descriptionMeasureElement.scrollHeight;
495
+ };
496
+ const fullHeight = getHeight(description);
497
+ if (fullHeight <= maxHeight) {
498
+ setOverflowingDescriptionByVenue((currentState) => {
499
+ if (currentState[venue] === false)
500
+ return currentState;
501
+ return __spreadProps(__spreadValues({}, currentState), {
502
+ [venue]: false
503
+ });
504
+ });
505
+ setCollapsedDescriptionByVenue((currentState) => {
506
+ if (currentState[venue] === description)
507
+ return currentState;
508
+ return __spreadProps(__spreadValues({}, currentState), {
509
+ [venue]: description
510
+ });
511
+ });
512
+ return;
513
+ }
514
+ const suffix = `... ${showMoreLabel}`;
515
+ let left = 0;
516
+ let right = description.length;
517
+ let bestLength = 0;
518
+ while (left <= right) {
519
+ const middle = Math.floor((left + right) / 2);
520
+ const candidate = description.slice(0, middle).trimEnd();
521
+ const candidateHeight = getHeight(`${candidate}${suffix}`);
522
+ if (candidateHeight <= maxHeight) {
523
+ bestLength = middle;
524
+ left = middle + 1;
525
+ continue;
526
+ }
527
+ right = middle - 1;
528
+ }
529
+ const collapsedDescription = description.slice(0, bestLength).trimEnd();
530
+ setOverflowingDescriptionByVenue((currentState) => {
531
+ if (currentState[venue] === true)
532
+ return currentState;
533
+ return __spreadProps(__spreadValues({}, currentState), {
534
+ [venue]: true
535
+ });
536
+ });
537
+ setCollapsedDescriptionByVenue((currentState) => {
538
+ if (currentState[venue] === collapsedDescription)
539
+ return currentState;
540
+ return __spreadProps(__spreadValues({}, currentState), {
541
+ [venue]: collapsedDescription
542
+ });
543
+ });
544
+ },
545
+ []
546
+ );
547
+ useEffect2(() => {
548
+ if (typeof window === "undefined")
549
+ return;
550
+ if (!resolvedExpandedVenue)
551
+ return;
552
+ if (expandedDescriptionByVenue[resolvedExpandedVenue])
553
+ return;
554
+ const expandedVenueItem = venues.find((venueItem) => venueItem.venue === resolvedExpandedVenue);
555
+ if (!expandedVenueItem)
556
+ return;
557
+ const frameId = window.requestAnimationFrame(() => {
558
+ var _a2;
559
+ updateDescriptionLayout(
560
+ resolvedExpandedVenue,
561
+ expandedVenueItem.description,
562
+ (_a2 = expandedVenueItem.showMoreLabel) != null ? _a2 : "Show more"
563
+ );
564
+ });
565
+ return () => {
566
+ window.cancelAnimationFrame(frameId);
567
+ };
568
+ }, [expandedDescriptionByVenue, resolvedExpandedVenue, updateDescriptionLayout, venues]);
569
+ useEffect2(() => {
570
+ if (!resolvedExpandedVenue)
571
+ return;
572
+ if (expandedDescriptionByVenue[resolvedExpandedVenue])
573
+ return;
574
+ if (typeof ResizeObserver === "undefined")
575
+ return;
576
+ const expandedVenueItem = venues.find((venueItem) => venueItem.venue === resolvedExpandedVenue);
577
+ if (!expandedVenueItem)
578
+ return;
579
+ const descriptionWrapperElement = descriptionWrapperRefs.current.get(resolvedExpandedVenue);
580
+ if (!descriptionWrapperElement)
581
+ return;
582
+ const resizeObserver = new ResizeObserver(() => {
583
+ var _a2;
584
+ updateDescriptionLayout(
585
+ resolvedExpandedVenue,
586
+ expandedVenueItem.description,
587
+ (_a2 = expandedVenueItem.showMoreLabel) != null ? _a2 : "Show more"
588
+ );
589
+ });
590
+ resizeObserver.observe(descriptionWrapperElement);
591
+ return () => {
592
+ resizeObserver.disconnect();
593
+ };
594
+ }, [expandedDescriptionByVenue, resolvedExpandedVenue, updateDescriptionLayout, venues]);
595
+ const handleDescriptionShowMoreClick = (event, venue) => {
596
+ event == null ? void 0 : event.stopPropagation();
597
+ setExpandedDescriptionByVenue((currentState) => {
598
+ if (currentState[venue])
599
+ return currentState;
600
+ return __spreadProps(__spreadValues({}, currentState), {
601
+ [venue]: true
602
+ });
603
+ });
604
+ onShowMore == null ? void 0 : onShowMore(venue);
605
+ };
606
+ if (isLoading) {
607
+ return /* @__PURE__ */ jsx2(
608
+ Skeleton,
609
+ {
610
+ ariaLabel: labels.trading.settlementLoading,
611
+ className,
612
+ view: skeletonViews.settlement
613
+ }
614
+ );
615
+ }
616
+ return /* @__PURE__ */ jsxs2(
617
+ Card,
618
+ {
619
+ className: cn(
620
+ "flex flex-col w-full gap-5 rounded-agg-xl border border-agg-separator bg-agg-secondary p-5 shadow-none hover:shadow-none",
621
+ className
622
+ ),
623
+ children: [
624
+ /* @__PURE__ */ jsxs2("div", { className: getSettlementHeaderClassName(), children: [
625
+ /* @__PURE__ */ jsx2("p", { className: "text-agg-xs font-agg-bold leading-agg-4 uppercase text-agg-muted-foreground", children: resolvedSectionLabel }),
626
+ /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: question })
627
+ ] }),
628
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-2", children: [
629
+ /* @__PURE__ */ jsx2("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: resolvedDifferencesTitle }),
630
+ /* @__PURE__ */ jsx2("ul", { className: "list-disc pl-5 text-agg-sm leading-agg-5 text-agg-foreground", children: differences.map((difference) => /* @__PURE__ */ jsx2("li", { children: difference }, difference)) })
631
+ ] }),
632
+ /* @__PURE__ */ jsx2("div", { className: "h-px w-full bg-agg-separator" }),
633
+ /* @__PURE__ */ jsx2("div", { className: "flex flex-col gap-3", children: venues.map((venue) => {
634
+ var _a2, _b2;
635
+ const venueLabel = getTradingVenueLabel(venue.venue, venue.label);
636
+ const isExpanded = resolvedExpandedVenue === venue.venue;
637
+ const isDescriptionExpanded = !!expandedDescriptionByVenue[venue.venue];
638
+ const isDescriptionOverflowing = !!overflowingDescriptionByVenue[venue.venue];
639
+ const shouldShowDescriptionCta = isExpanded && isDescriptionOverflowing && !isDescriptionExpanded;
640
+ const resolvedShowMoreLabel = (_a2 = venue.showMoreLabel) != null ? _a2 : "Show more";
641
+ return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col", children: [
642
+ /* @__PURE__ */ jsxs2(
643
+ "button",
644
+ {
645
+ type: "button",
646
+ className: cn(
647
+ "flex items-center gap-2 text-left",
648
+ "cursor-pointer disabled:cursor-not-allowed hover:opacity-50",
649
+ getMotionClassName(
650
+ enableAnimations,
651
+ "transition-[opacity,color] duration-200 ease-in-out"
652
+ )
653
+ ),
654
+ "aria-expanded": isExpanded,
655
+ "aria-label": labels.trading.settlementDetailsAria(venueLabel),
656
+ onClick: () => handleVenueClick(venue.venue),
657
+ children: [
658
+ /* @__PURE__ */ jsx2(
659
+ VenueLogo,
660
+ {
661
+ venue: venue.venue,
662
+ size: "small",
663
+ ariaLabel: venueLabel
664
+ }
665
+ ),
666
+ /* @__PURE__ */ jsx2(
667
+ "span",
668
+ {
669
+ className: cn(
670
+ "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground",
671
+ isExpanded ? "text-agg-primary" : "text-agg-foreground"
672
+ ),
673
+ children: venueLabel
674
+ }
675
+ ),
676
+ /* @__PURE__ */ jsx2(
677
+ Icon,
678
+ {
679
+ name: isExpanded ? "chevron-up" : "chevron-down",
680
+ size: "small",
681
+ className: "text-agg-foreground",
682
+ color: "currentColor"
683
+ }
684
+ )
685
+ ]
686
+ }
687
+ ),
688
+ /* @__PURE__ */ jsx2(
689
+ "div",
690
+ {
691
+ "aria-hidden": !isExpanded,
692
+ className: cn(
693
+ "grid overflow-hidden",
694
+ isExpanded ? "mt-2 grid-rows-[1fr] opacity-100" : "mt-0 grid-rows-[0fr] opacity-0",
695
+ !isExpanded && "pointer-events-none",
696
+ getMotionClassName(
697
+ enableAnimations,
698
+ "transition-[grid-template-rows,opacity,margin-top] duration-300 ease-in-out"
699
+ )
700
+ ),
701
+ children: /* @__PURE__ */ jsxs2(
702
+ "div",
703
+ {
704
+ ref: (element) => handleDescriptionWrapperRef(venue.venue, element),
705
+ className: "relative min-h-0",
706
+ children: [
707
+ /* @__PURE__ */ jsxs2("p", { className: "min-h-0 text-agg-sm leading-agg-5 text-agg-foreground", children: [
708
+ isDescriptionExpanded || !isDescriptionOverflowing ? venue.description : (_b2 = collapsedDescriptionByVenue[venue.venue]) != null ? _b2 : venue.description,
709
+ shouldShowDescriptionCta ? /* @__PURE__ */ jsxs2(Fragment2, { children: [
710
+ "... ",
711
+ /* @__PURE__ */ jsx2(
712
+ "button",
713
+ {
714
+ type: "button",
715
+ tabIndex: isExpanded ? 0 : -1,
716
+ className: cn(
717
+ "cursor-pointer disabled:cursor-not-allowed",
718
+ "text-agg-sm leading-agg-5 text-agg-foreground underline-offset-2 hover:underline hover:font-agg-bold",
719
+ getMotionClassName(
720
+ enableAnimations,
721
+ "transition-[text-decoration] duration-200 ease-in-out"
722
+ )
723
+ ),
724
+ "aria-label": labels.trading.settlementShowMoreAria(
725
+ resolvedShowMoreLabel,
726
+ venueLabel
727
+ ),
728
+ onClick: (event) => handleDescriptionShowMoreClick(event, venue.venue),
729
+ children: resolvedShowMoreLabel
730
+ }
731
+ )
732
+ ] }) : null
733
+ ] }),
734
+ /* @__PURE__ */ jsx2(
735
+ "p",
736
+ {
737
+ ref: (element) => handleDescriptionMeasureRef(venue.venue, element),
738
+ "aria-hidden": true,
739
+ className: "pointer-events-none invisible fixed top-0 left-0 -z-10 whitespace-normal text-agg-sm leading-agg-5"
740
+ }
741
+ )
742
+ ]
743
+ }
744
+ )
745
+ }
746
+ )
747
+ ] }, venue.venue);
748
+ }) })
749
+ ]
750
+ }
751
+ );
752
+ };
753
+ Settlement.displayName = "Settlement";
754
+
755
+ export {
756
+ defaultSettlementSectionLabel,
757
+ defaultSettlementDifferencesTitle,
758
+ defaultTradingDisclaimer,
759
+ getTradingDateLabel,
760
+ getTradingVenueLabel,
761
+ getTradingValueLabel,
762
+ getTradingPriceLabel,
763
+ getTradingAveragePriceLabel,
764
+ getTradingBalanceLabel,
765
+ getTradingSharesLabel,
766
+ getTradingSlippageLabel,
767
+ PlaceOrder,
768
+ Settlement
769
+ };