@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,845 @@
1
+ import {
2
+ Modal
3
+ } from "./chunk-VIP7HSOU.mjs";
4
+ import {
5
+ VenueLogo
6
+ } from "./chunk-BLSHXIAH.mjs";
7
+ import {
8
+ BestPricesIcon,
9
+ CheckCircleIcon,
10
+ ChevronRightIcon,
11
+ CreateAccountIcon,
12
+ DocumentIcon,
13
+ LinkAccountsIcon,
14
+ PlaySquareIcon,
15
+ ProfileIcon,
16
+ StayInControlIcon,
17
+ WarningIcon
18
+ } from "./chunk-F236MLT6.mjs";
19
+ import {
20
+ Button
21
+ } from "./chunk-PGSPYQOW.mjs";
22
+ import {
23
+ __async,
24
+ cn
25
+ } from "./chunk-GJ4U5NCE.mjs";
26
+
27
+ // src/onboarding/index.tsx
28
+ import { useCallback as useCallback5, useEffect, useState as useState5 } from "react";
29
+ import { useLabels as useLabels6 } from "@agg-market/hooks";
30
+ import * as Dialog3 from "@radix-ui/react-dialog";
31
+
32
+ // src/onboarding/onboarding-modal.constants.ts
33
+ var HOW_IT_WORKS_FEATURE_KEYS = [
34
+ "createAccount",
35
+ "linkAccounts",
36
+ "bestPrices",
37
+ "stayInControl"
38
+ ];
39
+ var ONBOARDING_STEPS = {
40
+ HOW_IT_WORKS: 0,
41
+ PROFILE_SETUP: 1,
42
+ CONNECT_ACCOUNTS: 2
43
+ };
44
+ var ONCHAIN_VENUES = [
45
+ "polymarket",
46
+ "opinion",
47
+ "probable"
48
+ ];
49
+
50
+ // src/onboarding/steps/how-it-works.tsx
51
+ import { useCallback, useRef, useState } from "react";
52
+ import { useLabels } from "@agg-market/hooks";
53
+ import { jsx, jsxs } from "react/jsx-runtime";
54
+ var defaultIcons = {
55
+ createAccount: /* @__PURE__ */ jsx(CreateAccountIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" }),
56
+ linkAccounts: /* @__PURE__ */ jsx(LinkAccountsIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" }),
57
+ bestPrices: /* @__PURE__ */ jsx(BestPricesIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" }),
58
+ stayInControl: /* @__PURE__ */ jsx(StayInControlIcon, { className: "h-[28px] w-[28px] text-agg-muted-foreground" })
59
+ };
60
+ var HowItWorksStep = ({ onContinue, icons }) => {
61
+ const labels = useLabels();
62
+ const scrollRef = useRef(null);
63
+ const [showTopGradient, setShowTopGradient] = useState(false);
64
+ const [showBottomGradient, setShowBottomGradient] = useState(true);
65
+ const handleScroll = useCallback(() => {
66
+ const el = scrollRef.current;
67
+ if (!el)
68
+ return;
69
+ setShowTopGradient(el.scrollTop > 0);
70
+ setShowBottomGradient(el.scrollTop + el.clientHeight < el.scrollHeight - 1);
71
+ }, []);
72
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-6 h-[600px] sm:h-auto", children: [
73
+ /* @__PURE__ */ jsx("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.howItWorks.title }),
74
+ /* @__PURE__ */ jsxs("div", { className: "relative flex-1 min-h-0 sm:flex-initial", children: [
75
+ /* @__PURE__ */ jsx(
76
+ "div",
77
+ {
78
+ ref: scrollRef,
79
+ onScroll: handleScroll,
80
+ className: "flex flex-col gap-4 overflow-y-auto sm:overflow-visible h-full",
81
+ children: HOW_IT_WORKS_FEATURE_KEYS.map((featureKey) => {
82
+ var _a;
83
+ const icon = (_a = icons == null ? void 0 : icons[featureKey]) != null ? _a : defaultIcons[featureKey];
84
+ const feature = labels.onboarding.howItWorks.features[featureKey];
85
+ return /* @__PURE__ */ jsxs(
86
+ "div",
87
+ {
88
+ className: cn(
89
+ "flex items-center gap-4 py-4 px-5 sm:px-4",
90
+ "rounded-agg-md",
91
+ "bg-agg-secondary-hover"
92
+ ),
93
+ children: [
94
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col flex-1 min-w-0 gap-[6px]", children: [
95
+ /* @__PURE__ */ jsx("p", { className: "text-agg-base font-agg-bold leading-agg-6 text-agg-foreground", children: feature.title }),
96
+ /* @__PURE__ */ jsx("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: feature.description })
97
+ ] }),
98
+ icon ? /* @__PURE__ */ jsx("div", { className: "hidden shrink-0 items-center justify-center text-agg-muted-foreground sm:flex", children: icon }) : null
99
+ ]
100
+ },
101
+ featureKey
102
+ );
103
+ })
104
+ }
105
+ ),
106
+ /* @__PURE__ */ jsx(
107
+ "div",
108
+ {
109
+ className: cn(
110
+ "pointer-events-none absolute inset-x-0 top-0 h-20",
111
+ "bg-gradient-to-b from-agg-secondary to-transparent",
112
+ "sm:hidden transition-opacity",
113
+ showTopGradient ? "opacity-100" : "opacity-0"
114
+ )
115
+ }
116
+ ),
117
+ /* @__PURE__ */ jsx(
118
+ "div",
119
+ {
120
+ className: cn(
121
+ "pointer-events-none absolute inset-x-0 bottom-0 h-20",
122
+ "bg-gradient-to-t from-agg-secondary to-transparent",
123
+ "sm:hidden transition-opacity",
124
+ showBottomGradient ? "opacity-100" : "opacity-0"
125
+ )
126
+ }
127
+ )
128
+ ] }),
129
+ /* @__PURE__ */ jsx(Button, { variant: "primary", size: "l", className: "w-full", onClick: onContinue, children: labels.onboarding.howItWorks.continue })
130
+ ] });
131
+ };
132
+ HowItWorksStep.displayName = "HowItWorksStep";
133
+
134
+ // src/onboarding/steps/profile-setup.tsx
135
+ import { useCallback as useCallback2, useRef as useRef2, useState as useState2 } from "react";
136
+ import { useLabels as useLabels2 } from "@agg-market/hooks";
137
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
138
+ var ProfileSetupStep = ({ onContinue }) => {
139
+ const labels = useLabels2();
140
+ const [username, setUsername] = useState2("");
141
+ const [avatarFile, setAvatarFile] = useState2();
142
+ const [avatarPreview, setAvatarPreview] = useState2();
143
+ const fileInputRef = useRef2(null);
144
+ const handleAvatarClick = useCallback2(() => {
145
+ var _a;
146
+ (_a = fileInputRef.current) == null ? void 0 : _a.click();
147
+ }, []);
148
+ const handleFileChange = useCallback2((e) => {
149
+ var _a;
150
+ const file = (_a = e.target.files) == null ? void 0 : _a[0];
151
+ if (!file)
152
+ return;
153
+ setAvatarFile(file);
154
+ const reader = new FileReader();
155
+ reader.onload = (event) => {
156
+ var _a2;
157
+ setAvatarPreview((_a2 = event.target) == null ? void 0 : _a2.result);
158
+ };
159
+ reader.readAsDataURL(file);
160
+ }, []);
161
+ const handleContinue = useCallback2(() => {
162
+ onContinue({
163
+ username,
164
+ avatarFile,
165
+ avatarPreview
166
+ });
167
+ }, [username, avatarFile, avatarPreview, onContinue]);
168
+ return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-7", children: [
169
+ /* @__PURE__ */ jsx2("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.profileSetup.title }),
170
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-5 items-center w-full", children: [
171
+ /* @__PURE__ */ jsxs2("div", { className: "flex justify-center", children: [
172
+ /* @__PURE__ */ jsx2(
173
+ "button",
174
+ {
175
+ type: "button",
176
+ onClick: handleAvatarClick,
177
+ className: cn(
178
+ "relative flex items-center justify-center",
179
+ "h-[80px] w-[80px]",
180
+ "rounded-agg-full",
181
+ "border border-dashed border-agg-separator",
182
+ "bg-agg-secondary-hover",
183
+ "hover:bg-agg-tertiary",
184
+ "transition-colors cursor-pointer",
185
+ "overflow-hidden"
186
+ ),
187
+ "aria-label": labels.onboarding.profileSetup.uploadProfilePictureAria,
188
+ children: avatarPreview ? /* @__PURE__ */ jsx2(
189
+ "img",
190
+ {
191
+ src: avatarPreview,
192
+ alt: labels.onboarding.profileSetup.profilePreviewAlt,
193
+ className: "h-full w-full object-cover"
194
+ }
195
+ ) : /* @__PURE__ */ jsx2(ProfileIcon, { className: "h-7 w-7 text-agg-muted-foreground" })
196
+ }
197
+ ),
198
+ /* @__PURE__ */ jsx2(
199
+ "input",
200
+ {
201
+ ref: fileInputRef,
202
+ type: "file",
203
+ accept: "image/*",
204
+ onChange: handleFileChange,
205
+ className: "hidden",
206
+ "aria-hidden": "true"
207
+ }
208
+ )
209
+ ] }),
210
+ /* @__PURE__ */ jsxs2("div", { className: "flex flex-col gap-2 w-full", children: [
211
+ /* @__PURE__ */ jsx2(
212
+ "label",
213
+ {
214
+ htmlFor: "onboarding-username",
215
+ className: "text-agg-sm font-agg-bold text-agg-foreground",
216
+ children: labels.onboarding.profileSetup.usernameLabel
217
+ }
218
+ ),
219
+ /* @__PURE__ */ jsx2(
220
+ "input",
221
+ {
222
+ id: "onboarding-username",
223
+ type: "text",
224
+ value: username,
225
+ onChange: (e) => setUsername(e.target.value),
226
+ placeholder: labels.onboarding.profileSetup.usernamePlaceholder,
227
+ className: cn(
228
+ "w-full px-3 py-2.5",
229
+ "rounded-[4px]",
230
+ "border border-agg-separator",
231
+ "bg-agg-secondary text-agg-foreground",
232
+ "placeholder:text-agg-muted-foreground",
233
+ "outline-none",
234
+ "hover:bg-agg-secondary-hover",
235
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
236
+ "transition-colors",
237
+ "text-agg-sm sm:text-agg-base"
238
+ )
239
+ }
240
+ )
241
+ ] })
242
+ ] }),
243
+ /* @__PURE__ */ jsx2(Button, { variant: "primary", size: "l", className: "w-full", onClick: handleContinue, children: labels.onboarding.profileSetup.continue })
244
+ ] });
245
+ };
246
+ ProfileSetupStep.displayName = "ProfileSetupStep";
247
+
248
+ // src/onboarding/steps/connect-accounts.tsx
249
+ import { useLabels as useLabels3 } from "@agg-market/hooks";
250
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
251
+ var OnchainVenueLogos = () => {
252
+ return /* @__PURE__ */ jsx3("div", { className: "flex gap-1 sm:gap-0 sm:-space-x-5", children: ONCHAIN_VENUES.map((venue, index) => /* @__PURE__ */ jsx3(
253
+ "div",
254
+ {
255
+ className: "overflow-hidden rounded sm:rounded-agg-md",
256
+ style: { zIndex: ONCHAIN_VENUES.length - index },
257
+ children: /* @__PURE__ */ jsx3(VenueLogo, { venue, size: "ms", className: "sm:h-8 sm:w-8" })
258
+ },
259
+ venue
260
+ )) });
261
+ };
262
+ var VenueCard = ({
263
+ logos,
264
+ title,
265
+ mobileTitle,
266
+ description,
267
+ mobileDescription,
268
+ onConnect,
269
+ connected = false
270
+ }) => {
271
+ const labels = useLabels3();
272
+ const action = connected ? /* @__PURE__ */ jsx3(CheckCircleIcon, { className: "h-6 w-6 text-agg-success" }) : /* @__PURE__ */ jsx3(
273
+ Button,
274
+ {
275
+ variant: "tertiary",
276
+ size: "l",
277
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
278
+ onClick: onConnect,
279
+ children: labels.onboarding.connectAccounts.connect
280
+ }
281
+ );
282
+ const mobileAction = connected ? /* @__PURE__ */ jsx3(CheckCircleIcon, { className: "h-6 w-6 text-agg-success" }) : /* @__PURE__ */ jsx3(
283
+ Button,
284
+ {
285
+ variant: "tertiary",
286
+ size: "m",
287
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
288
+ onClick: onConnect,
289
+ suffix: /* @__PURE__ */ jsx3(ChevronRightIcon, { className: "h-4 w-4" }),
290
+ children: labels.onboarding.connectAccounts.connectAccount
291
+ }
292
+ );
293
+ return /* @__PURE__ */ jsxs3(
294
+ "div",
295
+ {
296
+ className: cn(
297
+ "rounded-agg-md p-5 transition-colors",
298
+ connected ? "bg-agg-success/5" : "bg-agg-secondary-hover hover:bg-agg-tertiary"
299
+ ),
300
+ children: [
301
+ /* @__PURE__ */ jsxs3("div", { className: "hidden sm:flex items-center justify-between", children: [
302
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-5", children: [
303
+ /* @__PURE__ */ jsx3("div", { className: "shrink-0", children: logos }),
304
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-[2px]", children: [
305
+ /* @__PURE__ */ jsx3("p", { className: "text-agg-base font-agg-bold text-agg-foreground", children: title }),
306
+ /* @__PURE__ */ jsx3("p", { className: "text-agg-sm text-agg-foreground", children: description })
307
+ ] })
308
+ ] }),
309
+ /* @__PURE__ */ jsx3("div", { className: "shrink-0", children: action })
310
+ ] }),
311
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-3 sm:hidden", children: [
312
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-3", children: [
313
+ /* @__PURE__ */ jsx3("div", { className: "shrink-0", children: logos }),
314
+ /* @__PURE__ */ jsx3("p", { className: "text-agg-lg font-agg-bold text-agg-foreground", children: mobileTitle != null ? mobileTitle : title })
315
+ ] }),
316
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-col items-start gap-2", children: [
317
+ /* @__PURE__ */ jsx3("p", { className: "text-agg-base text-agg-foreground", children: mobileDescription != null ? mobileDescription : description }),
318
+ mobileAction
319
+ ] })
320
+ ] })
321
+ ]
322
+ }
323
+ );
324
+ };
325
+ var ConnectAccountsStep = ({
326
+ onConnectOnchain,
327
+ onConnectKalshi,
328
+ onContinue,
329
+ connectedOnchain = false,
330
+ connectedKalshi = false
331
+ }) => {
332
+ const labels = useLabels3();
333
+ const canContinue = connectedOnchain || connectedKalshi;
334
+ return /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-6", children: [
335
+ /* @__PURE__ */ jsx3("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectAccounts.title }),
336
+ /* @__PURE__ */ jsxs3("div", { className: "flex flex-col gap-4", children: [
337
+ /* @__PURE__ */ jsx3(
338
+ VenueCard,
339
+ {
340
+ logos: /* @__PURE__ */ jsx3(OnchainVenueLogos, {}),
341
+ title: labels.onboarding.connectAccounts.onchainTitle,
342
+ mobileTitle: labels.onboarding.connectAccounts.onchainMobileTitle(
343
+ ONCHAIN_VENUES.length - 1
344
+ ),
345
+ description: labels.onboarding.connectAccounts.onchainDescription,
346
+ mobileDescription: labels.onboarding.connectAccounts.onchainMobileDescription,
347
+ onConnect: onConnectOnchain,
348
+ connected: connectedOnchain
349
+ }
350
+ ),
351
+ /* @__PURE__ */ jsx3(
352
+ VenueCard,
353
+ {
354
+ logos: /* @__PURE__ */ jsx3("div", { className: "overflow-hidden rounded sm:rounded-agg-md", children: /* @__PURE__ */ jsx3(
355
+ VenueLogo,
356
+ {
357
+ venue: "kalshi",
358
+ size: "l",
359
+ className: "h-6 w-6 sm:h-8 sm:w-8"
360
+ }
361
+ ) }),
362
+ title: labels.onboarding.connectAccounts.kalshiTitle,
363
+ mobileTitle: labels.onboarding.connectAccounts.kalshiMobileTitle,
364
+ description: labels.onboarding.connectAccounts.kalshiDescription,
365
+ mobileDescription: labels.onboarding.connectAccounts.kalshiMobileDescription,
366
+ onConnect: onConnectKalshi,
367
+ connected: connectedKalshi
368
+ }
369
+ )
370
+ ] }),
371
+ /* @__PURE__ */ jsx3(
372
+ Button,
373
+ {
374
+ variant: "primary",
375
+ size: "l",
376
+ className: "w-full",
377
+ onClick: onContinue,
378
+ disabled: !canContinue,
379
+ children: labels.onboarding.connectAccounts.continue
380
+ }
381
+ )
382
+ ] });
383
+ };
384
+ ConnectAccountsStep.displayName = "ConnectAccountsStep";
385
+
386
+ // src/onboarding/steps/connect-kalshi-modal.tsx
387
+ import { useCallback as useCallback3, useState as useState3 } from "react";
388
+ import { useLabels as useLabels4 } from "@agg-market/hooks";
389
+ import * as Dialog from "@radix-ui/react-dialog";
390
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
391
+ var ConnectKalshiModal = ({
392
+ open,
393
+ onOpenChange,
394
+ onVerify
395
+ }) => {
396
+ const labels = useLabels4();
397
+ const [apiKeyId, setApiKeyId] = useState3("");
398
+ const [privateKey, setPrivateKey] = useState3("");
399
+ const [verifying, setVerifying] = useState3(false);
400
+ const [error, setError] = useState3();
401
+ const canVerify = apiKeyId.trim().length > 0 && privateKey.trim().length > 0;
402
+ const handleCancel = useCallback3(() => {
403
+ onOpenChange(false);
404
+ }, [onOpenChange]);
405
+ const handleVerify = useCallback3(() => __async(void 0, null, function* () {
406
+ if (!canVerify || verifying)
407
+ return;
408
+ setVerifying(true);
409
+ setError(void 0);
410
+ try {
411
+ const credentials = {
412
+ apiKeyId: apiKeyId.trim(),
413
+ privateKey: privateKey.trim()
414
+ };
415
+ yield onVerify(credentials);
416
+ setApiKeyId("");
417
+ setPrivateKey("");
418
+ onOpenChange(false);
419
+ } catch (err) {
420
+ setError(
421
+ err instanceof Error ? err.message : labels.onboarding.connectKalshiModal.fallbackError
422
+ );
423
+ } finally {
424
+ setVerifying(false);
425
+ }
426
+ }), [
427
+ apiKeyId,
428
+ canVerify,
429
+ labels.onboarding.connectKalshiModal.fallbackError,
430
+ onOpenChange,
431
+ onVerify,
432
+ privateKey,
433
+ verifying
434
+ ]);
435
+ const handleOpenChange = useCallback3(
436
+ (value) => {
437
+ if (value) {
438
+ setApiKeyId("");
439
+ setPrivateKey("");
440
+ setError(void 0);
441
+ setVerifying(false);
442
+ }
443
+ onOpenChange(value);
444
+ },
445
+ [onOpenChange]
446
+ );
447
+ return /* @__PURE__ */ jsx4(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs4(
448
+ Modal.Container,
449
+ {
450
+ maxWidth: "600px",
451
+ "aria-label": labels.onboarding.connectKalshiModal.ariaLabel,
452
+ classNames: { container: "!rounded-agg-lg" },
453
+ children: [
454
+ /* @__PURE__ */ jsx4(Dialog.Title, { className: "sr-only", children: labels.onboarding.connectKalshiModal.title }),
455
+ /* @__PURE__ */ jsx4(
456
+ Modal.Header,
457
+ {
458
+ hideClose: false,
459
+ hideBorder: true,
460
+ classNames: {
461
+ root: "!min-h-0",
462
+ container: "!py-[18px] !px-8"
463
+ }
464
+ }
465
+ ),
466
+ /* @__PURE__ */ jsx4(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-8 items-center", children: [
467
+ /* @__PURE__ */ jsx4("div", { className: "overflow-hidden rounded-agg-lg", children: /* @__PURE__ */ jsx4(VenueLogo, { venue: "kalshi", size: "xl" }) }),
468
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-4 items-center text-center", children: [
469
+ /* @__PURE__ */ jsx4("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectKalshiModal.title }),
470
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: labels.onboarding.connectKalshiModal.description })
471
+ ] }),
472
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-4 w-full", children: [
473
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
474
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-1", children: [
475
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepOne.label }),
476
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepOne.title })
477
+ ] }),
478
+ /* @__PURE__ */ jsxs4("div", { className: "space-y-0 text-agg-sm leading-agg-5 text-agg-foreground", children: [
479
+ /* @__PURE__ */ jsx4("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.signIn }),
480
+ /* @__PURE__ */ jsxs4("p", { children: [
481
+ labels.onboarding.connectKalshiModal.stepOne.instructions.goToProfilePrefix,
482
+ " ",
483
+ /* @__PURE__ */ jsx4("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileText }),
484
+ labels.onboarding.connectKalshiModal.stepOne.instructions.goToProfileSeparator,
485
+ " ",
486
+ /* @__PURE__ */ jsx4("span", { className: "text-agg-foreground underline", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileUrl })
487
+ ] }),
488
+ /* @__PURE__ */ jsxs4("p", { children: [
489
+ labels.onboarding.connectKalshiModal.stepOne.instructions.clickCreateKeyPrefix,
490
+ " ",
491
+ /* @__PURE__ */ jsx4("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKeyText }),
492
+ labels.onboarding.connectKalshiModal.stepOne.instructions.clickCreateKeySuffix
493
+ ] }),
494
+ /* @__PURE__ */ jsxs4("p", { children: [
495
+ labels.onboarding.connectKalshiModal.stepOne.instructions.selectPermissionsPrefix,
496
+ " ",
497
+ /* @__PURE__ */ jsx4("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.readWriteText }),
498
+ labels.onboarding.connectKalshiModal.stepOne.instructions.selectPermissionsSuffix
499
+ ] }),
500
+ /* @__PURE__ */ jsx4("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKey })
501
+ ] }),
502
+ /* @__PURE__ */ jsxs4("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: [
503
+ labels.onboarding.connectKalshiModal.stepOne.footerLineOne,
504
+ /* @__PURE__ */ jsx4("br", {}),
505
+ labels.onboarding.connectKalshiModal.stepOne.footerLineTwo
506
+ ] })
507
+ ] }),
508
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
509
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-1", children: [
510
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.label }),
511
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.title })
512
+ ] }),
513
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.description }),
514
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-2", children: [
515
+ /* @__PURE__ */ jsx4(
516
+ "label",
517
+ {
518
+ htmlFor: "kalshi-api-key-id",
519
+ className: "text-agg-sm font-agg-bold text-agg-foreground",
520
+ children: labels.onboarding.connectKalshiModal.stepTwo.apiKeyIdLabel
521
+ }
522
+ ),
523
+ /* @__PURE__ */ jsx4(
524
+ "input",
525
+ {
526
+ id: "kalshi-api-key-id",
527
+ type: "text",
528
+ value: apiKeyId,
529
+ onChange: (e) => setApiKeyId(e.target.value),
530
+ placeholder: labels.onboarding.connectKalshiModal.stepTwo.apiKeyIdPlaceholder,
531
+ className: cn(
532
+ "w-full px-3 py-2.5 h-10",
533
+ "rounded border border-agg-separator",
534
+ "bg-agg-secondary text-agg-base text-agg-foreground",
535
+ "placeholder:text-agg-muted-foreground",
536
+ "outline-none",
537
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
538
+ "transition-colors"
539
+ )
540
+ }
541
+ )
542
+ ] }),
543
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-2", children: [
544
+ /* @__PURE__ */ jsx4(
545
+ "label",
546
+ {
547
+ htmlFor: "kalshi-private-key",
548
+ className: "text-agg-sm font-agg-bold text-agg-foreground",
549
+ children: labels.onboarding.connectKalshiModal.stepTwo.privateKeyLabel
550
+ }
551
+ ),
552
+ /* @__PURE__ */ jsx4(
553
+ "textarea",
554
+ {
555
+ id: "kalshi-private-key",
556
+ value: privateKey,
557
+ onChange: (e) => setPrivateKey(e.target.value),
558
+ placeholder: labels.onboarding.connectKalshiModal.stepTwo.privateKeyPlaceholder,
559
+ rows: 3,
560
+ className: cn(
561
+ "w-full px-3 py-2.5",
562
+ "rounded border border-agg-separator",
563
+ "bg-agg-secondary text-agg-base text-agg-foreground",
564
+ "placeholder:text-agg-muted-foreground",
565
+ "outline-none resize-none",
566
+ "focus:border-agg-primary focus:ring-1 focus:ring-agg-primary",
567
+ "transition-colors"
568
+ )
569
+ }
570
+ )
571
+ ] })
572
+ ] })
573
+ ] }),
574
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center justify-between w-full", children: [
575
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-base text-agg-foreground", children: labels.onboarding.connectKalshiModal.help.label }),
576
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3", children: [
577
+ /* @__PURE__ */ jsxs4(
578
+ "a",
579
+ {
580
+ href: "#",
581
+ className: "flex items-center gap-2 text-agg-base font-agg-bold text-agg-primary hover:text-agg-primary-hover",
582
+ children: [
583
+ /* @__PURE__ */ jsx4(DocumentIcon, { className: "h-4 w-4" }),
584
+ labels.onboarding.connectKalshiModal.help.docsLinkLabel
585
+ ]
586
+ }
587
+ ),
588
+ /* @__PURE__ */ jsx4("span", { className: "h-3 w-px bg-agg-separator" }),
589
+ /* @__PURE__ */ jsxs4(
590
+ "a",
591
+ {
592
+ href: "#",
593
+ className: "flex items-center gap-2 text-agg-base font-agg-bold text-agg-primary hover:text-agg-primary-hover",
594
+ children: [
595
+ /* @__PURE__ */ jsx4(PlaySquareIcon, { className: "h-4 w-4" }),
596
+ labels.onboarding.connectKalshiModal.help.tutorialLinkLabel
597
+ ]
598
+ }
599
+ )
600
+ ] })
601
+ ] }),
602
+ /* @__PURE__ */ jsxs4("div", { className: "flex flex-col gap-5 items-center", children: [
603
+ error ? /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-2", children: [
604
+ /* @__PURE__ */ jsx4(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
605
+ /* @__PURE__ */ jsx4("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
606
+ ] }) : null,
607
+ /* @__PURE__ */ jsxs4("div", { className: "flex items-center gap-3 justify-center", children: [
608
+ /* @__PURE__ */ jsx4(Button, { variant: "secondary", size: "l", onClick: handleCancel, children: labels.onboarding.connectKalshiModal.actions.cancel }),
609
+ /* @__PURE__ */ jsx4(
610
+ Button,
611
+ {
612
+ variant: "primary",
613
+ size: "l",
614
+ onClick: handleVerify,
615
+ disabled: !canVerify,
616
+ isLoading: verifying,
617
+ children: labels.onboarding.connectKalshiModal.actions.verifyConnection
618
+ }
619
+ )
620
+ ] })
621
+ ] })
622
+ ] }) })
623
+ ]
624
+ }
625
+ ) });
626
+ };
627
+ ConnectKalshiModal.displayName = "ConnectKalshiModal";
628
+
629
+ // src/onboarding/steps/connect-onchain-modal.tsx
630
+ import { useCallback as useCallback4, useState as useState4 } from "react";
631
+ import { useLabels as useLabels5 } from "@agg-market/hooks";
632
+ import * as Dialog2 from "@radix-ui/react-dialog";
633
+ import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
634
+ var ConnectOnchainModal = ({
635
+ open,
636
+ onOpenChange,
637
+ onConnect
638
+ }) => {
639
+ const labels = useLabels5();
640
+ const [connecting, setConnecting] = useState4(false);
641
+ const [error, setError] = useState4();
642
+ const handleCancel = useCallback4(() => {
643
+ onOpenChange(false);
644
+ }, [onOpenChange]);
645
+ const handleConnect = useCallback4(() => __async(void 0, null, function* () {
646
+ if (connecting)
647
+ return;
648
+ setConnecting(true);
649
+ setError(void 0);
650
+ try {
651
+ yield onConnect();
652
+ onOpenChange(false);
653
+ } catch (err) {
654
+ setError(
655
+ err instanceof Error ? err.message : labels.onboarding.connectOnchainModal.fallbackError
656
+ );
657
+ } finally {
658
+ setConnecting(false);
659
+ }
660
+ }), [connecting, labels.onboarding.connectOnchainModal.fallbackError, onConnect, onOpenChange]);
661
+ const handleOpenChange = useCallback4(
662
+ (value) => {
663
+ if (value) {
664
+ setError(void 0);
665
+ setConnecting(false);
666
+ }
667
+ onOpenChange(value);
668
+ },
669
+ [onOpenChange]
670
+ );
671
+ return /* @__PURE__ */ jsx5(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs5(
672
+ Modal.Container,
673
+ {
674
+ maxWidth: "600px",
675
+ "aria-label": labels.onboarding.connectOnchainModal.ariaLabel,
676
+ classNames: { container: "!rounded-agg-lg" },
677
+ children: [
678
+ /* @__PURE__ */ jsx5(Dialog2.Title, { className: "sr-only", children: labels.onboarding.connectOnchainModal.title }),
679
+ /* @__PURE__ */ jsx5(
680
+ Modal.Header,
681
+ {
682
+ hideClose: false,
683
+ hideBorder: true,
684
+ classNames: {
685
+ root: "!min-h-0",
686
+ container: "!py-[18px] !px-8"
687
+ }
688
+ }
689
+ ),
690
+ /* @__PURE__ */ jsx5(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-8 items-center", children: [
691
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-4 items-center text-center", children: [
692
+ /* @__PURE__ */ jsx5("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectOnchainModal.title }),
693
+ /* @__PURE__ */ jsx5("p", { className: "text-agg-base text-center leading-agg-6 text-agg-foreground whitespace-pre-line", children: labels.onboarding.connectOnchainModal.description })
694
+ ] }),
695
+ /* @__PURE__ */ jsxs5("div", { className: "flex w-full flex-col items-center gap-4 rounded-agg-xl bg-agg-secondary-hover p-6", children: [
696
+ /* @__PURE__ */ jsx5("p", { className: "text-agg-sm font-agg-bold uppercase leading-agg-5 text-agg-muted-foreground", children: labels.onboarding.connectOnchainModal.supportedVenuesLabel }),
697
+ /* @__PURE__ */ jsx5("div", { className: "flex flex-wrap items-center justify-center gap-x-4 gap-y-3", children: ONCHAIN_VENUES.map((venue, index) => /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-[6px]", children: [
698
+ index > 0 && /* @__PURE__ */ jsx5("span", { className: "mr-2.5 h-3 w-px bg-agg-separator" }),
699
+ /* @__PURE__ */ jsx5(VenueLogo, { venue, size: "ms" }),
700
+ /* @__PURE__ */ jsx5("span", { className: "text-agg-base text-agg-foreground", children: labels.venues[venue] })
701
+ ] }, venue)) })
702
+ ] }),
703
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-6 items-center", children: [
704
+ /* @__PURE__ */ jsxs5("div", { className: "flex flex-col gap-3 items-center", children: [
705
+ error ? /* @__PURE__ */ jsxs5("div", { className: "flex items-center gap-2", children: [
706
+ /* @__PURE__ */ jsx5(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
707
+ /* @__PURE__ */ jsx5("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
708
+ ] }) : null,
709
+ /* @__PURE__ */ jsx5(Button, { variant: "primary", size: "l", onClick: handleConnect, isLoading: connecting, children: labels.onboarding.connectOnchainModal.connect })
710
+ ] }),
711
+ /* @__PURE__ */ jsx5(
712
+ Button,
713
+ {
714
+ variant: "tertiary",
715
+ size: "m",
716
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
717
+ onClick: handleCancel,
718
+ children: labels.onboarding.connectOnchainModal.cancel
719
+ }
720
+ )
721
+ ] })
722
+ ] }) })
723
+ ]
724
+ }
725
+ ) });
726
+ };
727
+ ConnectOnchainModal.displayName = "ConnectOnchainModal";
728
+
729
+ // src/onboarding/index.tsx
730
+ import { Fragment, jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
731
+ var OnboardingModal = ({
732
+ open,
733
+ onOpenChange,
734
+ onProfileSubmit,
735
+ onConnectOnchain,
736
+ onConnectKalshi,
737
+ onComplete,
738
+ howItWorksIcons,
739
+ connectedOnchain = false,
740
+ connectedKalshi = false
741
+ }) => {
742
+ var _a;
743
+ const labels = useLabels6();
744
+ const [step, setStep] = useState5(ONBOARDING_STEPS.HOW_IT_WORKS);
745
+ const stepLabels = {
746
+ [ONBOARDING_STEPS.HOW_IT_WORKS]: labels.onboarding.modal.stepHowItWorks,
747
+ [ONBOARDING_STEPS.PROFILE_SETUP]: labels.onboarding.modal.stepProfileSetup,
748
+ [ONBOARDING_STEPS.CONNECT_ACCOUNTS]: labels.onboarding.modal.stepConnectAccounts
749
+ };
750
+ const resolvedTitle = (_a = stepLabels[step]) != null ? _a : labels.onboarding.modal.title;
751
+ const [kalshiModalOpen, setKalshiModalOpen] = useState5(false);
752
+ const [kalshiConnected, setKalshiConnected] = useState5(false);
753
+ const [onchainModalOpen, setOnchainModalOpen] = useState5(false);
754
+ const [onchainConnected, setOnchainConnected] = useState5(false);
755
+ useEffect(() => {
756
+ if (open) {
757
+ setStep(ONBOARDING_STEPS.HOW_IT_WORKS);
758
+ setKalshiConnected(false);
759
+ setOnchainConnected(false);
760
+ }
761
+ }, [open]);
762
+ const handleHowItWorksContinue = useCallback5(() => {
763
+ setStep(ONBOARDING_STEPS.PROFILE_SETUP);
764
+ }, []);
765
+ const handleProfileContinue = useCallback5(
766
+ (data) => {
767
+ onProfileSubmit == null ? void 0 : onProfileSubmit(data);
768
+ setStep(ONBOARDING_STEPS.CONNECT_ACCOUNTS);
769
+ },
770
+ [onProfileSubmit]
771
+ );
772
+ const handleConnectContinue = useCallback5(() => {
773
+ onComplete == null ? void 0 : onComplete();
774
+ }, [onComplete]);
775
+ const handleOpenOnchainModal = useCallback5(() => {
776
+ setOnchainModalOpen(true);
777
+ }, []);
778
+ const handleOnchainConnect = useCallback5(() => __async(void 0, null, function* () {
779
+ yield onConnectOnchain == null ? void 0 : onConnectOnchain();
780
+ setOnchainConnected(true);
781
+ }), [onConnectOnchain]);
782
+ const handleOpenKalshiModal = useCallback5(() => {
783
+ setKalshiModalOpen(true);
784
+ }, []);
785
+ const handleKalshiVerify = useCallback5(
786
+ (credentials) => __async(void 0, null, function* () {
787
+ yield onConnectKalshi == null ? void 0 : onConnectKalshi(credentials);
788
+ setKalshiConnected(true);
789
+ }),
790
+ [onConnectKalshi]
791
+ );
792
+ return /* @__PURE__ */ jsxs6(Fragment, { children: [
793
+ /* @__PURE__ */ jsx6(Modal, { open, onOpenChange, children: /* @__PURE__ */ jsxs6(
794
+ Modal.Container,
795
+ {
796
+ maxWidth: "600px",
797
+ "aria-label": resolvedTitle,
798
+ classNames: { container: "!rounded-agg-lg" },
799
+ children: [
800
+ /* @__PURE__ */ jsx6(Dialog3.Title, { className: "sr-only", children: resolvedTitle }),
801
+ /* @__PURE__ */ jsxs6(Modal.Body, { classNames: { root: "px-5 py-6 sm:px-10 sm:py-8" }, children: [
802
+ step === ONBOARDING_STEPS.HOW_IT_WORKS && /* @__PURE__ */ jsx6(HowItWorksStep, { onContinue: handleHowItWorksContinue, icons: howItWorksIcons }),
803
+ step === ONBOARDING_STEPS.PROFILE_SETUP && /* @__PURE__ */ jsx6(ProfileSetupStep, { onContinue: handleProfileContinue }),
804
+ step === ONBOARDING_STEPS.CONNECT_ACCOUNTS && /* @__PURE__ */ jsx6(
805
+ ConnectAccountsStep,
806
+ {
807
+ onConnectOnchain: handleOpenOnchainModal,
808
+ onConnectKalshi: handleOpenKalshiModal,
809
+ onContinue: handleConnectContinue,
810
+ connectedOnchain: connectedOnchain || onchainConnected,
811
+ connectedKalshi: connectedKalshi || kalshiConnected
812
+ }
813
+ )
814
+ ] })
815
+ ]
816
+ }
817
+ ) }),
818
+ /* @__PURE__ */ jsx6(
819
+ ConnectOnchainModal,
820
+ {
821
+ open: onchainModalOpen,
822
+ onOpenChange: setOnchainModalOpen,
823
+ onConnect: handleOnchainConnect
824
+ }
825
+ ),
826
+ /* @__PURE__ */ jsx6(
827
+ ConnectKalshiModal,
828
+ {
829
+ open: kalshiModalOpen,
830
+ onOpenChange: setKalshiModalOpen,
831
+ onVerify: handleKalshiVerify
832
+ }
833
+ )
834
+ ] });
835
+ };
836
+ OnboardingModal.displayName = "OnboardingModal";
837
+
838
+ export {
839
+ HowItWorksStep,
840
+ ProfileSetupStep,
841
+ ConnectAccountsStep,
842
+ ConnectKalshiModal,
843
+ ConnectOnchainModal,
844
+ OnboardingModal
845
+ };