@agg-market/ui 0.0.3 → 0.0.4

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 (140) hide show
  1. package/dist/badge.d.mts +2 -2
  2. package/dist/badge.d.ts +2 -2
  3. package/dist/badge.mjs +2 -2
  4. package/dist/button.d.mts +2 -2
  5. package/dist/button.d.ts +2 -2
  6. package/dist/button.js +1 -0
  7. package/dist/button.mjs +3 -3
  8. package/dist/card.mjs +2 -2
  9. package/dist/chart.mjs +3 -3
  10. package/dist/{chunk-YUIZZ6XE.mjs → chunk-3O4U3E5I.mjs} +1 -1
  11. package/dist/{chunk-JLLMIPIX.mjs → chunk-4VUDTWH7.mjs} +1 -1
  12. package/dist/{chunk-MG243DSX.mjs → chunk-AEMAY3MR.mjs} +1 -1
  13. package/dist/{chunk-FYV3MDIL.mjs → chunk-BJNHDIDW.mjs} +4 -4
  14. package/dist/{chunk-LY6474C4.mjs → chunk-BLSHXIAH.mjs} +36 -71
  15. package/dist/{chunk-DQ6XFBYJ.mjs → chunk-DYEWXEEY.mjs} +1 -1
  16. package/dist/{chunk-OUOIDPGX.mjs → chunk-EXF4SESB.mjs} +1 -1
  17. package/dist/chunk-F236MLT6.mjs +1337 -0
  18. package/dist/{chunk-PAQ542ER.mjs → chunk-GHB3GOCW.mjs} +4 -2
  19. package/dist/{chunk-GC3QIIH7.mjs → chunk-GJ4U5NCE.mjs} +23 -1
  20. package/dist/chunk-HM3CGN32.mjs +669 -0
  21. package/dist/chunk-I4YUYVJJ.mjs +472 -0
  22. package/dist/{chunk-NFYS557L.mjs → chunk-JH5VMNDL.mjs} +3 -3
  23. package/dist/{chunk-TTOR7JCT.mjs → chunk-JRS2M5GY.mjs} +1 -1
  24. package/dist/{chunk-QXFDXXDB.mjs → chunk-LWTQD345.mjs} +3 -3
  25. package/dist/{chunk-QE46DVJG.mjs → chunk-MNSHWA6M.mjs} +3 -3
  26. package/dist/{chunk-JQ4FUHXE.mjs → chunk-MXBPDNMC.mjs} +7 -7
  27. package/dist/{chunk-VYNVBJK6.mjs → chunk-NDG43KGL.mjs} +1 -1
  28. package/dist/chunk-O2XH4A3G.mjs +654 -0
  29. package/dist/{chunk-KDBYDMYV.mjs → chunk-OBCHURW5.mjs} +1 -1
  30. package/dist/{chunk-FZTAHWOS.mjs → chunk-OGI343OV.mjs} +2 -2
  31. package/dist/{chunk-XDAEEJYR.mjs → chunk-P23GR7NX.mjs} +2 -2
  32. package/dist/{chunk-J6L5BLKX.mjs → chunk-PGSPYQOW.mjs} +2 -2
  33. package/dist/{chunk-J7OETCZ7.mjs → chunk-QFQHD2V6.mjs} +19 -20
  34. package/dist/chunk-RGZQHSNJ.mjs +845 -0
  35. package/dist/{chunk-7XRKA6XF.mjs → chunk-RXACBTON.mjs} +5 -5
  36. package/dist/{chunk-A4QJAOZW.mjs → chunk-USLTNDJA.mjs} +7 -7
  37. package/dist/{chunk-FACIYUNK.mjs → chunk-VC7LTPQD.mjs} +2 -2
  38. package/dist/{chunk-CKTAVEW2.mjs → chunk-VIP7HSOU.mjs} +2 -2
  39. package/dist/{chunk-5MN6ZNFA.mjs → chunk-VUDJ3PYM.mjs} +9 -9
  40. package/dist/{chunk-2NCBX6XI.mjs → chunk-W2DMBW4E.mjs} +8 -8
  41. package/dist/{chunk-764YUN2J.mjs → chunk-XELWY7SO.mjs} +150 -49
  42. package/dist/chunk-ZDF7QP4G.mjs +160 -0
  43. package/dist/{chunk-4NK2FNAG.mjs → chunk-ZHKMDK5M.mjs} +244 -112
  44. package/dist/{chunk-C4OI72SM.mjs → chunk-ZVBVGWSP.mjs} +1 -0
  45. package/dist/chunk-ZYREURXK.mjs +470 -0
  46. package/dist/connect-button.js +767 -292
  47. package/dist/connect-button.mjs +8 -8
  48. package/dist/deposit-modal.d.mts +34 -0
  49. package/dist/deposit-modal.d.ts +34 -0
  50. package/dist/deposit-modal.js +2787 -0
  51. package/dist/deposit-modal.mjs +15 -0
  52. package/dist/event-list-item-details.js +271 -173
  53. package/dist/event-list-item-details.mjs +13 -13
  54. package/dist/event-list-item.js +903 -426
  55. package/dist/event-list-item.mjs +11 -11
  56. package/dist/event-list.js +1104 -517
  57. package/dist/event-list.mjs +14 -14
  58. package/dist/event-market-page.d.mts +1 -1
  59. package/dist/event-market-page.d.ts +1 -1
  60. package/dist/event-market-page.js +1505 -681
  61. package/dist/event-market-page.mjs +23 -23
  62. package/dist/hello-world.mjs +3 -3
  63. package/dist/home-page.d.mts +1 -1
  64. package/dist/home-page.d.ts +1 -1
  65. package/dist/home-page.js +1120 -533
  66. package/dist/home-page.mjs +15 -15
  67. package/dist/icon.d.mts +74 -4
  68. package/dist/icon.d.ts +74 -4
  69. package/dist/icon.js +668 -123
  70. package/dist/icon.mjs +32 -4
  71. package/dist/index.d.mts +15 -7
  72. package/dist/index.d.ts +15 -7
  73. package/dist/index.js +5301 -2147
  74. package/dist/index.mjs +80 -32
  75. package/dist/loading-icon.d.mts +1 -1
  76. package/dist/loading-icon.d.ts +1 -1
  77. package/dist/loading-icon.js +1 -0
  78. package/dist/loading-icon.mjs +3 -3
  79. package/dist/market-details.d.mts +2 -2
  80. package/dist/market-details.d.ts +2 -2
  81. package/dist/market-details.js +1097 -411
  82. package/dist/market-details.mjs +16 -16
  83. package/dist/modal.mjs +3 -3
  84. package/dist/number-value.mjs +2 -2
  85. package/dist/onboarding-modal.js +1249 -672
  86. package/dist/onboarding-modal.mjs +8 -8
  87. package/dist/place-order.d.mts +1 -1
  88. package/dist/place-order.d.ts +1 -1
  89. package/dist/place-order.js +1091 -506
  90. package/dist/place-order.mjs +12 -12
  91. package/dist/profile-modal.d.mts +66 -0
  92. package/dist/profile-modal.d.ts +66 -0
  93. package/dist/profile-modal.js +2429 -0
  94. package/dist/profile-modal.mjs +14 -0
  95. package/dist/{registry-CVn79H3I.d.mts → registry-DfSCFAdC.d.mts} +72 -0
  96. package/dist/{registry-CVn79H3I.d.ts → registry-DfSCFAdC.d.ts} +72 -0
  97. package/dist/search.d.mts +2 -2
  98. package/dist/search.d.ts +2 -2
  99. package/dist/search.js +740 -265
  100. package/dist/search.mjs +6 -6
  101. package/dist/select.d.mts +2 -0
  102. package/dist/select.d.ts +2 -0
  103. package/dist/select.js +814 -187
  104. package/dist/select.mjs +5 -5
  105. package/dist/settlement.d.mts +1 -1
  106. package/dist/settlement.d.ts +1 -1
  107. package/dist/settlement.js +891 -417
  108. package/dist/settlement.mjs +9 -9
  109. package/dist/skeleton.js +1 -1
  110. package/dist/skeleton.mjs +3 -3
  111. package/dist/styles.css +1 -1
  112. package/dist/switch-button.mjs +2 -2
  113. package/dist/tabs.js +854 -227
  114. package/dist/tabs.mjs +6 -6
  115. package/dist/tailwind.css +1 -1
  116. package/dist/types-Bed6Q0EK.d.mts +3 -0
  117. package/dist/types-Bed6Q0EK.d.ts +3 -0
  118. package/dist/typography.mjs +2 -2
  119. package/dist/user-profile-page.d.mts +133 -0
  120. package/dist/user-profile-page.d.ts +133 -0
  121. package/dist/user-profile-page.js +3335 -0
  122. package/dist/user-profile-page.mjs +15 -0
  123. package/dist/venue-logo.d.mts +2 -2
  124. package/dist/venue-logo.d.ts +2 -2
  125. package/dist/venue-logo.js +28 -70
  126. package/dist/venue-logo.mjs +2 -2
  127. package/dist/{venue-logo.types-Bg8eXtGp.d.ts → venue-logo.types-BSAuY84j.d.ts} +1 -1
  128. package/dist/{venue-logo.types-B1iPJgiD.d.mts → venue-logo.types-DACqcTvY.d.mts} +1 -1
  129. package/dist/withdraw-modal.d.mts +36 -0
  130. package/dist/withdraw-modal.d.ts +36 -0
  131. package/dist/withdraw-modal.js +2442 -0
  132. package/dist/withdraw-modal.mjs +14 -0
  133. package/package.json +43 -3
  134. package/dist/chunk-DA6KZWSK.mjs +0 -807
  135. package/dist/chunk-IY2AA3OL.mjs +0 -50
  136. package/dist/chunk-R3DRVI4J.mjs +0 -741
  137. package/dist/types-CayJ8tWA.d.mts +0 -3
  138. package/dist/types-CayJ8tWA.d.ts +0 -3
  139. package/dist/{types-C5JigCSX.d.mts → types-DkGlbmXq.d.mts} +2 -2
  140. package/dist/{types-C5JigCSX.d.ts → types-DkGlbmXq.d.ts} +2 -2
@@ -0,0 +1,470 @@
1
+ import {
2
+ Modal
3
+ } from "./chunk-VIP7HSOU.mjs";
4
+ import {
5
+ VenueLogo,
6
+ venueLogoLabels
7
+ } from "./chunk-BLSHXIAH.mjs";
8
+ import {
9
+ BankIcon,
10
+ ChevronLeftIcon,
11
+ ChevronRightIcon,
12
+ ExternalLinkIcon,
13
+ WalletIcon
14
+ } from "./chunk-F236MLT6.mjs";
15
+ import {
16
+ Button
17
+ } from "./chunk-PGSPYQOW.mjs";
18
+ import {
19
+ cn,
20
+ formatAmountDisplay,
21
+ formatCompactUsd
22
+ } from "./chunk-GJ4U5NCE.mjs";
23
+
24
+ // src/withdraw/index.tsx
25
+ import { useState as useState2 } from "react";
26
+
27
+ // src/withdraw/withdraw-modal.constants.ts
28
+ var KALSHI_VENUE = "kalshi";
29
+ var KALSHI_WITHDRAW_URL_DEFAULT = "https://kalshi.com/account/withdraw";
30
+
31
+ // src/withdraw/steps/venue-selection.tsx
32
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
33
+ var VenueRow = ({ venue, onSelect }) => {
34
+ var _a, _b;
35
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
36
+ const isDisabled = venue.disabled === true;
37
+ return /* @__PURE__ */ jsxs(
38
+ "div",
39
+ {
40
+ className: cn(
41
+ "flex items-center gap-3 sm:gap-4",
42
+ "rounded-xl border border-separator",
43
+ "p-3 sm:p-4",
44
+ "transition-colors",
45
+ isDisabled ? "opacity-50 cursor-not-allowed" : "hover:bg-secondary-hover cursor-pointer"
46
+ ),
47
+ role: "button",
48
+ tabIndex: isDisabled ? -1 : 0,
49
+ "aria-disabled": isDisabled,
50
+ onClick: () => {
51
+ if (!isDisabled)
52
+ onSelect(venue.venue);
53
+ },
54
+ onKeyDown: (e) => {
55
+ if (!isDisabled && (e.key === "Enter" || e.key === " ")) {
56
+ e.preventDefault();
57
+ onSelect(venue.venue);
58
+ }
59
+ },
60
+ children: [
61
+ /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(VenueLogo, { venue: venue.venue, size: "xl", className: "rounded-lg" }) }),
62
+ /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
63
+ /* @__PURE__ */ jsx("p", { className: "text-base font-bold text-foreground leading-6", children: displayName }),
64
+ /* @__PURE__ */ jsxs("p", { className: "text-sm text-muted-foreground leading-5", children: [
65
+ "Balance ",
66
+ formatCompactUsd(venue.balance)
67
+ ] })
68
+ ] }),
69
+ isDisabled ? /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx("span", { className: "text-sm text-muted-foreground", children: (_b = venue.disabledReason) != null ? _b : "Unavailable" }) }) : /* @__PURE__ */ jsx("div", { className: "shrink-0", children: /* @__PURE__ */ jsx(
70
+ Button,
71
+ {
72
+ variant: "secondary",
73
+ size: "s",
74
+ suffix: /* @__PURE__ */ jsx(ChevronRightIcon, {}),
75
+ onClick: (e) => {
76
+ e.stopPropagation();
77
+ onSelect(venue.venue);
78
+ },
79
+ children: "Select"
80
+ }
81
+ ) })
82
+ ]
83
+ }
84
+ );
85
+ };
86
+ var VenueSelectionStep = ({
87
+ venues,
88
+ onSelectVenue
89
+ }) => /* @__PURE__ */ jsxs(Fragment, { children: [
90
+ /* @__PURE__ */ jsx(Modal.Header, { title: "Withdraw", hideBorder: true }),
91
+ /* @__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: [
92
+ /* @__PURE__ */ jsx("p", { className: "text-base text-foreground leading-6", children: "Choose where to withdraw funds from:" }),
93
+ /* @__PURE__ */ jsx("div", { className: "flex flex-col gap-3", children: venues.map((venue) => /* @__PURE__ */ jsx(VenueRow, { venue, onSelect: onSelectVenue }, venue.venue)) })
94
+ ] }) })
95
+ ] });
96
+
97
+ // src/withdraw/steps/withdraw-method.tsx
98
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
99
+ var WithdrawMethodCard = ({
100
+ icon,
101
+ title,
102
+ description,
103
+ onContinue
104
+ }) => /* @__PURE__ */ jsxs2(
105
+ "div",
106
+ {
107
+ className: cn(
108
+ "flex items-center gap-3 sm:gap-4",
109
+ "rounded-xl border border-separator",
110
+ "p-3 sm:p-4",
111
+ "hover:bg-secondary-hover transition-colors cursor-pointer"
112
+ ),
113
+ role: "button",
114
+ tabIndex: 0,
115
+ onClick: onContinue,
116
+ onKeyDown: (e) => {
117
+ if (e.key === "Enter" || e.key === " ") {
118
+ e.preventDefault();
119
+ onContinue();
120
+ }
121
+ },
122
+ children: [
123
+ /* @__PURE__ */ jsx2("div", { className: "shrink-0 flex items-center justify-center h-10 w-10 rounded-lg bg-secondary-hover", children: icon }),
124
+ /* @__PURE__ */ jsxs2("div", { className: "flex-1 min-w-0", children: [
125
+ /* @__PURE__ */ jsx2("p", { className: "text-base font-bold text-foreground leading-6", children: title }),
126
+ /* @__PURE__ */ jsx2("p", { className: "text-sm text-muted-foreground leading-5", children: description })
127
+ ] }),
128
+ /* @__PURE__ */ jsx2("div", { className: "shrink-0", children: /* @__PURE__ */ jsx2(
129
+ Button,
130
+ {
131
+ variant: "secondary",
132
+ size: "s",
133
+ suffix: /* @__PURE__ */ jsx2(ChevronRightIcon, {}),
134
+ onClick: (e) => {
135
+ e.stopPropagation();
136
+ onContinue();
137
+ },
138
+ children: "Continue"
139
+ }
140
+ ) })
141
+ ]
142
+ }
143
+ );
144
+ var WithdrawMethodStep = ({
145
+ venue,
146
+ onBack,
147
+ onSelectMethod
148
+ }) => {
149
+ var _a;
150
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
151
+ return /* @__PURE__ */ jsxs2(Fragment2, { children: [
152
+ /* @__PURE__ */ jsx2(
153
+ Modal.Header,
154
+ {
155
+ title: `Withdraw from ${displayName}`,
156
+ hideBorder: true,
157
+ leftElement: /* @__PURE__ */ jsx2(
158
+ "button",
159
+ {
160
+ type: "button",
161
+ className: "flex items-center justify-center text-foreground hover:text-foreground/80 transition-colors hover:cursor-pointer mr-2",
162
+ onClick: onBack,
163
+ "aria-label": "Go back",
164
+ children: /* @__PURE__ */ jsx2(ChevronLeftIcon, { className: "h-6 w-6" })
165
+ }
166
+ )
167
+ }
168
+ ),
169
+ /* @__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: [
170
+ /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-2", children: [
171
+ /* @__PURE__ */ jsx2(VenueLogo, { venue: venue.venue, size: "xs", className: "rounded-sm" }),
172
+ /* @__PURE__ */ jsxs2("p", { className: "text-sm text-muted-foreground leading-5", children: [
173
+ displayName,
174
+ " balance: ",
175
+ formatCompactUsd(venue.balance)
176
+ ] })
177
+ ] }),
178
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-3", children: [
179
+ /* @__PURE__ */ jsx2(
180
+ WithdrawMethodCard,
181
+ {
182
+ icon: /* @__PURE__ */ jsx2(WalletIcon, { className: "h-6 w-6 text-foreground" }),
183
+ title: "Withdraw to Wallet",
184
+ description: "Send funds to your crypto wallet as USDC.",
185
+ onContinue: () => onSelectMethod("wallet")
186
+ }
187
+ ),
188
+ /* @__PURE__ */ jsx2(
189
+ WithdrawMethodCard,
190
+ {
191
+ icon: /* @__PURE__ */ jsx2(BankIcon, { className: "h-6 w-6 text-foreground" }),
192
+ title: "Withdraw to Bank",
193
+ description: "Transfer funds to your linked bank account.",
194
+ onContinue: () => onSelectMethod("bank")
195
+ }
196
+ )
197
+ ] })
198
+ ] }) })
199
+ ] });
200
+ };
201
+
202
+ // src/withdraw/steps/withdraw-amount.tsx
203
+ import { useCallback, useState } from "react";
204
+ import { Fragment as Fragment3, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
205
+ var WithdrawAmountStep = ({
206
+ venue,
207
+ method,
208
+ onBack,
209
+ onContinue
210
+ }) => {
211
+ var _a;
212
+ const [rawAmount, setRawAmount] = useState("");
213
+ const displayName = (_a = venueLogoLabels[venue.venue]) != null ? _a : venue.venue;
214
+ const numericAmount = Number(rawAmount) || 0;
215
+ const isValid = numericAmount > 0 && numericAmount <= venue.balance;
216
+ const exceedsBalance = numericAmount > venue.balance;
217
+ const methodLabel = method === "wallet" ? "Wallet" : "Bank";
218
+ const handleAmountChange = useCallback((e) => {
219
+ const v = e.target.value.replace(/[^0-9.]/g, "");
220
+ const parts = v.split(".");
221
+ const sanitized = parts.length > 2 ? `${parts[0]}.${parts.slice(1).join("")}` : v;
222
+ setRawAmount(sanitized);
223
+ }, []);
224
+ const handleMax = useCallback(() => {
225
+ setRawAmount(venue.balance.toString());
226
+ }, [venue.balance]);
227
+ return /* @__PURE__ */ jsxs3(Fragment3, { children: [
228
+ /* @__PURE__ */ jsx3(
229
+ Modal.Header,
230
+ {
231
+ title: `Withdraw to ${methodLabel}`,
232
+ hideBorder: true,
233
+ leftElement: /* @__PURE__ */ jsx3(
234
+ "button",
235
+ {
236
+ type: "button",
237
+ className: "flex items-center justify-center text-foreground hover:text-foreground/80 transition-colors hover:cursor-pointer mr-2",
238
+ onClick: onBack,
239
+ "aria-label": "Go back",
240
+ children: /* @__PURE__ */ jsx3(ChevronLeftIcon, { className: "h-6 w-6" })
241
+ }
242
+ )
243
+ }
244
+ ),
245
+ /* @__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: [
246
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center justify-between", children: [
247
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2", children: [
248
+ /* @__PURE__ */ jsx3(VenueLogo, { venue: venue.venue, size: "xs", className: "rounded-sm" }),
249
+ /* @__PURE__ */ jsxs3("p", { className: "text-sm text-muted-foreground leading-5", children: [
250
+ displayName,
251
+ " balance: ",
252
+ formatCompactUsd(venue.balance)
253
+ ] })
254
+ ] }),
255
+ /* @__PURE__ */ jsx3(
256
+ "button",
257
+ {
258
+ type: "button",
259
+ className: "text-sm font-bold text-primary hover:text-primary/80 transition-colors",
260
+ onClick: handleMax,
261
+ children: "Max"
262
+ }
263
+ )
264
+ ] }),
265
+ /* @__PURE__ */ jsxs3("div", { className: "flex-1 min-w-0", children: [
266
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-baseline", children: [
267
+ /* @__PURE__ */ jsx3("span", { className: "text-3xl sm:text-4xl font-bold text-foreground leading-none", children: "$" }),
268
+ /* @__PURE__ */ jsx3(
269
+ "input",
270
+ {
271
+ type: "text",
272
+ inputMode: "decimal",
273
+ "aria-label": "Amount",
274
+ className: cn(
275
+ "w-full bg-transparent text-3xl sm:text-4xl font-bold leading-none outline-none",
276
+ exceedsBalance ? "text-error" : numericAmount > 0 ? "text-foreground" : "text-muted-foreground"
277
+ ),
278
+ placeholder: "0",
279
+ value: rawAmount ? formatAmountDisplay(rawAmount) : "",
280
+ onChange: handleAmountChange
281
+ }
282
+ )
283
+ ] }),
284
+ exceedsBalance ? /* @__PURE__ */ jsx3("p", { className: "mt-2 text-sm text-error", children: "Amount exceeds available balance" }) : null
285
+ ] }),
286
+ /* @__PURE__ */ jsx3(
287
+ Button,
288
+ {
289
+ variant: "primary",
290
+ size: "xl",
291
+ className: "w-full",
292
+ disabled: !isValid,
293
+ onClick: () => onContinue(numericAmount),
294
+ children: "Continue"
295
+ }
296
+ )
297
+ ] }) })
298
+ ] });
299
+ };
300
+
301
+ // src/withdraw/steps/kalshi-withdraw.tsx
302
+ import { Fragment as Fragment4, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
303
+ var KalshiStepCard = ({
304
+ step,
305
+ title,
306
+ description,
307
+ children
308
+ }) => /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-2 rounded-xl bg-secondary-hover p-4", children: [
309
+ /* @__PURE__ */ jsxs4("p", { className: "text-xs font-bold uppercase leading-4 text-muted-foreground", children: [
310
+ "Step ",
311
+ step
312
+ ] }),
313
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-1", children: [
314
+ /* @__PURE__ */ jsx4("p", { className: "text-sm font-bold text-foreground leading-5", children: title }),
315
+ /* @__PURE__ */ jsx4("p", { className: "text-sm text-foreground leading-5", children: description })
316
+ ] }),
317
+ children
318
+ ] });
319
+ var KalshiWithdrawStep = ({
320
+ withdrawUrl,
321
+ onDone
322
+ }) => /* @__PURE__ */ jsxs4(Fragment4, { children: [
323
+ /* @__PURE__ */ jsx4(Modal.Header, { title: "", hideBorder: true }),
324
+ /* @__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 items-center gap-8", children: [
325
+ /* @__PURE__ */ jsx4(
326
+ VenueLogo,
327
+ {
328
+ venue: "kalshi",
329
+ size: "xl",
330
+ className: "h-[60px] w-[60px] rounded-lg"
331
+ }
332
+ ),
333
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col items-center gap-4 text-center", children: [
334
+ /* @__PURE__ */ jsx4("h2", { className: "text-2xl font-bold text-foreground leading-8", children: "Withdraw from Kalshi" }),
335
+ /* @__PURE__ */ jsx4("p", { className: "text-base text-foreground leading-6", children: "To withdraw from Kalshi you'll need to initiate the withdrawal from your Kalshi account directly on Kalshi's site." })
336
+ ] }),
337
+ /* @__PURE__ */ jsxs4("div", { className: "flex w-full flex-col gap-4", children: [
338
+ /* @__PURE__ */ jsx4(
339
+ KalshiStepCard,
340
+ {
341
+ step: 1,
342
+ title: "Open Kalshi Withdraw Page",
343
+ description: "Sign in to your Kalshi account and go to Withdraw from your account menu.",
344
+ children: /* @__PURE__ */ jsx4("div", { className: "mt-1", children: /* @__PURE__ */ jsx4(
345
+ Button,
346
+ {
347
+ variant: "secondary",
348
+ size: "s",
349
+ suffix: /* @__PURE__ */ jsx4(ExternalLinkIcon, { className: "h-3.5 w-3.5" }),
350
+ onClick: () => {
351
+ window.open(withdrawUrl, "_blank", "noopener,noreferrer");
352
+ },
353
+ children: "Open Kalshi"
354
+ }
355
+ ) })
356
+ }
357
+ ),
358
+ /* @__PURE__ */ jsx4(
359
+ KalshiStepCard,
360
+ {
361
+ step: 2,
362
+ title: "Choose a Withdrawal Method",
363
+ description: "Select a withdrawal method: Bank transfer (ACH), Wire, or USDC (crypto)."
364
+ }
365
+ ),
366
+ /* @__PURE__ */ jsx4(
367
+ KalshiStepCard,
368
+ {
369
+ step: 3,
370
+ title: "Complete Your Withdrawal",
371
+ description: "Follow the on-screen instructions to confirm your withdrawal. Funds may take a few business days to arrive."
372
+ }
373
+ )
374
+ ] }),
375
+ /* @__PURE__ */ jsx4(Button, { variant: "secondary", size: "l", onClick: onDone, children: "Done" })
376
+ ] }) })
377
+ ] });
378
+
379
+ // src/withdraw/index.tsx
380
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
381
+ var WithdrawModal = ({
382
+ open,
383
+ onOpenChange,
384
+ venues,
385
+ onSelectVenue,
386
+ onSelectWithdrawMethod,
387
+ onContinueWalletWithdraw,
388
+ onContinueBankWithdraw,
389
+ onDoneKalshi,
390
+ kalshiWithdrawUrl = KALSHI_WITHDRAW_URL_DEFAULT
391
+ }) => {
392
+ const [step, setStep] = useState2("venues");
393
+ const [selectedVenue, setSelectedVenue] = useState2(null);
394
+ const [selectedMethod, setSelectedMethod] = useState2(null);
395
+ const handleSelectVenue = (venueSlug) => {
396
+ onSelectVenue(venueSlug);
397
+ if (venueSlug === KALSHI_VENUE) {
398
+ setStep("kalshi");
399
+ return;
400
+ }
401
+ const venueData = venues.find((v) => v.venue === venueSlug);
402
+ if (venueData) {
403
+ setSelectedVenue(venueData);
404
+ setStep("method");
405
+ }
406
+ };
407
+ const handleBackToVenues = () => {
408
+ setStep("venues");
409
+ setSelectedVenue(null);
410
+ setSelectedMethod(null);
411
+ };
412
+ const handleBackToMethod = () => {
413
+ setStep("method");
414
+ setSelectedMethod(null);
415
+ };
416
+ const handleSelectMethod = (method) => {
417
+ if (!selectedVenue)
418
+ return;
419
+ setSelectedMethod(method);
420
+ setStep("withdraw-amount");
421
+ onSelectWithdrawMethod == null ? void 0 : onSelectWithdrawMethod(selectedVenue.venue, method);
422
+ };
423
+ const handleContinueWithdraw = (amount) => {
424
+ if (!selectedVenue || !selectedMethod)
425
+ return;
426
+ if (selectedMethod === "wallet") {
427
+ onContinueWalletWithdraw == null ? void 0 : onContinueWalletWithdraw(selectedVenue.venue, amount);
428
+ } else {
429
+ onContinueBankWithdraw == null ? void 0 : onContinueBankWithdraw(selectedVenue.venue, amount);
430
+ }
431
+ };
432
+ const handleDoneKalshi = () => {
433
+ onDoneKalshi == null ? void 0 : onDoneKalshi();
434
+ onOpenChange(false);
435
+ };
436
+ const handleOpenChange = (isOpen) => {
437
+ if (!isOpen) {
438
+ setStep("venues");
439
+ setSelectedVenue(null);
440
+ setSelectedMethod(null);
441
+ }
442
+ onOpenChange(isOpen);
443
+ };
444
+ return /* @__PURE__ */ jsx5(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs5(Modal.Container, { maxWidth: "600px", "aria-label": "Withdraw", children: [
445
+ step === "venues" ? /* @__PURE__ */ jsx5(VenueSelectionStep, { venues, onSelectVenue: handleSelectVenue }) : null,
446
+ step === "method" && selectedVenue ? /* @__PURE__ */ jsx5(
447
+ WithdrawMethodStep,
448
+ {
449
+ venue: selectedVenue,
450
+ onBack: handleBackToVenues,
451
+ onSelectMethod: handleSelectMethod
452
+ }
453
+ ) : null,
454
+ step === "withdraw-amount" && selectedVenue && selectedMethod ? /* @__PURE__ */ jsx5(
455
+ WithdrawAmountStep,
456
+ {
457
+ venue: selectedVenue,
458
+ method: selectedMethod,
459
+ onBack: handleBackToMethod,
460
+ onContinue: handleContinueWithdraw
461
+ }
462
+ ) : null,
463
+ step === "kalshi" ? /* @__PURE__ */ jsx5(KalshiWithdrawStep, { withdrawUrl: kalshiWithdrawUrl, onDone: handleDoneKalshi }) : null
464
+ ] }) });
465
+ };
466
+ WithdrawModal.displayName = "WithdrawModal";
467
+
468
+ export {
469
+ WithdrawModal
470
+ };