tf-checkout-react 1.7.31 → 2.0.0-beta.1

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 (454) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +141 -1033
  3. package/dist/checkout.css +17 -0
  4. package/dist/index.d.mts +3946 -0
  5. package/dist/index.d.ts +3946 -30
  6. package/dist/index.esm.js +9176 -0
  7. package/dist/index.esm.js.map +1 -0
  8. package/dist/index.js +9330 -6
  9. package/dist/index.js.map +1 -0
  10. package/dist/styles/addons.css +75 -0
  11. package/dist/styles/auth.css +294 -0
  12. package/dist/styles/billing.css +98 -0
  13. package/dist/styles/confirmation.css +51 -0
  14. package/dist/styles/foundation.css +146 -0
  15. package/dist/styles/payment.css +179 -0
  16. package/dist/styles/primitives.css +356 -0
  17. package/dist/styles/seat-map.css +46 -0
  18. package/dist/styles/tickets.css +285 -0
  19. package/dist/styles/verification-confirmation.css +258 -0
  20. package/package.json +93 -78
  21. package/src/.d.ts +1 -1
  22. package/src/CardInput.tsx +374 -0
  23. package/src/EmbeddedCheckout.tsx +400 -0
  24. package/src/ResumedCheckout.tsx +132 -0
  25. package/src/auth/AuthModal.tsx +238 -0
  26. package/src/auth/ForgotPasswordForm.tsx +93 -0
  27. package/src/auth/LoginForm.tsx +104 -0
  28. package/src/auth/PasswordInput.tsx +33 -0
  29. package/src/auth/RegisterForm.tsx +333 -0
  30. package/src/auth/ResetPasswordForm.tsx +112 -0
  31. package/src/auth/index.ts +5 -0
  32. package/src/checkout.css +17 -0
  33. package/src/configure.ts +29 -0
  34. package/src/confirmer.ts +439 -0
  35. package/src/index.ts +41 -30
  36. package/src/instance.ts +21 -0
  37. package/src/sections/AddOns.tsx +241 -0
  38. package/src/sections/BillingInfo.tsx +790 -0
  39. package/src/sections/Confirmation.tsx +146 -0
  40. package/src/sections/IDVerification.tsx +76 -0
  41. package/src/sections/OrderConfirmation.tsx +277 -0
  42. package/src/sections/OrderIDVerification.tsx +117 -0
  43. package/src/sections/OrderSummary.tsx +84 -0
  44. package/src/sections/Payment.tsx +557 -0
  45. package/src/sections/SeatMap.tsx +512 -0
  46. package/src/sections/Tickets.tsx +573 -0
  47. package/src/sections/billing/BillingAddressFields.tsx +138 -0
  48. package/src/sections/billing/BuyerField.tsx +75 -0
  49. package/src/sections/billing/TicketHoldersCard.tsx +124 -0
  50. package/src/sections/billing/fieldRules.ts +43 -0
  51. package/src/sections/billing/types.ts +10 -0
  52. package/src/sections/index.ts +15 -0
  53. package/src/sections/seatMap.utils.ts +105 -0
  54. package/src/styles/addons.css +75 -0
  55. package/src/styles/auth.css +294 -0
  56. package/src/styles/billing.css +98 -0
  57. package/src/styles/confirmation.css +51 -0
  58. package/src/styles/foundation.css +146 -0
  59. package/src/styles/payment.css +179 -0
  60. package/src/styles/primitives.css +356 -0
  61. package/src/styles/seat-map.css +46 -0
  62. package/src/styles/tickets.css +285 -0
  63. package/src/styles/verification-confirmation.css +258 -0
  64. package/src/typings.d.ts +2 -2
  65. package/src/ui/Button.tsx +38 -0
  66. package/src/ui/Card.tsx +54 -0
  67. package/src/ui/CheckoutProvider.tsx +172 -0
  68. package/src/ui/CustomFields.tsx +195 -0
  69. package/src/ui/Field.tsx +114 -0
  70. package/src/ui/I18nProvider.tsx +36 -0
  71. package/src/ui/InstallmentPicker.tsx +69 -0
  72. package/src/ui/Loader.tsx +12 -0
  73. package/src/ui/PaymentMethods.tsx +133 -0
  74. package/src/ui/PriceLine.tsx +24 -0
  75. package/src/ui/QuantitySelect.tsx +50 -0
  76. package/src/ui/Stepper.tsx +36 -0
  77. package/src/ui/Timer.tsx +34 -0
  78. package/src/ui/TimerBanner.tsx +55 -0
  79. package/src/ui/cx.ts +3 -0
  80. package/src/ui/index.ts +54 -0
  81. package/src/ui/theme.ts +83 -0
  82. package/src/useCheckout.ts +35 -0
  83. package/src/xendit.ts +438 -0
  84. package/dist/adapters/customFields.d.ts +0 -12
  85. package/dist/adapters/index.d.ts +0 -1
  86. package/dist/api/auth.d.ts +0 -27
  87. package/dist/api/cart.d.ts +0 -2
  88. package/dist/api/checkout.d.ts +0 -3
  89. package/dist/api/common.d.ts +0 -11
  90. package/dist/api/guestTicketDelegation.d.ts +0 -47
  91. package/dist/api/index.d.ts +0 -82
  92. package/dist/api/interceptors.d.ts +0 -1
  93. package/dist/api/orders.d.ts +0 -2
  94. package/dist/api/payment.d.ts +0 -5
  95. package/dist/api/preRegistrationComplete.d.ts +0 -3
  96. package/dist/api/publicRequest.d.ts +0 -9
  97. package/dist/api/resale.d.ts +0 -5
  98. package/dist/components/account-settings/index.d.ts +0 -3
  99. package/dist/components/addonsContainer/AddonComponent.d.ts +0 -18
  100. package/dist/components/addonsContainer/SimpleAddonsContainer.d.ts +0 -20
  101. package/dist/components/addonsContainer/adapters/index.d.ts +0 -12
  102. package/dist/components/addonsContainer/index.d.ts +0 -22
  103. package/dist/components/addonsContainer/normalizers/index.d.ts +0 -1
  104. package/dist/components/addonsContainer/useAddons.d.ts +0 -23
  105. package/dist/components/addonsContainer/utils/index.d.ts +0 -16
  106. package/dist/components/billing-info-container/hooks/index.d.ts +0 -3
  107. package/dist/components/billing-info-container/hooks/usePaymentContext.d.ts +0 -5
  108. package/dist/components/billing-info-container/hooks/usePaymentRedirect.d.ts +0 -14
  109. package/dist/components/billing-info-container/hooks/useStripePayment.d.ts +0 -18
  110. package/dist/components/billing-info-container/index.d.ts +0 -69
  111. package/dist/components/billing-info-container/utils.d.ts +0 -59
  112. package/dist/components/common/Checkbox.d.ts +0 -11
  113. package/dist/components/common/CheckboxField/index.d.ts +0 -9
  114. package/dist/components/common/CopyField.d.ts +0 -12
  115. package/dist/components/common/CopyMessageModal.d.ts +0 -7
  116. package/dist/components/common/CustomField.d.ts +0 -26
  117. package/dist/components/common/DatePickerField.d.ts +0 -20
  118. package/dist/components/common/FieldSection/index.d.ts +0 -19
  119. package/dist/components/common/FieldSection/utils/index.d.ts +0 -8
  120. package/dist/components/common/FormikPhoneNumberField.d.ts +0 -11
  121. package/dist/components/common/Loader.d.ts +0 -2
  122. package/dist/components/common/ModalComponent/index.d.ts +0 -16
  123. package/dist/components/common/NativeSelectFeild/index.d.ts +0 -21
  124. package/dist/components/common/PhoneNumberField.d.ts +0 -14
  125. package/dist/components/common/PoweredBy.d.ts +0 -2
  126. package/dist/components/common/RadioField.d.ts +0 -11
  127. package/dist/components/common/RadioGroupField/index.d.ts +0 -17
  128. package/dist/components/common/RedirectModal.d.ts +0 -7
  129. package/dist/components/common/SelectField/index.d.ts +0 -19
  130. package/dist/components/common/SnackbarAlert.d.ts +0 -13
  131. package/dist/components/common/index.d.ts +0 -11
  132. package/dist/components/common/socials.d.ts +0 -10
  133. package/dist/components/confirmModal/index.d.ts +0 -10
  134. package/dist/components/confirmationContainer/config.d.ts +0 -1
  135. package/dist/components/confirmationContainer/index.d.ts +0 -46
  136. package/dist/components/confirmationContainer/social-buttons.d.ts +0 -16
  137. package/dist/components/countdown/index.d.ts +0 -14
  138. package/dist/components/delegationsContainer/IssueComponent.d.ts +0 -10
  139. package/dist/components/delegationsContainer/IssueTicketForm.d.ts +0 -9
  140. package/dist/components/delegationsContainer/TicketsAssignedTable.d.ts +0 -11
  141. package/dist/components/delegationsContainer/TicketsAvailableTable.d.ts +0 -11
  142. package/dist/components/delegationsContainer/index.d.ts +0 -10
  143. package/dist/components/forgotPasswordModal/index.d.ts +0 -12
  144. package/dist/components/idVerificationContainer/VerificationPendingModal.d.ts +0 -10
  145. package/dist/components/idVerificationContainer/constants.d.ts +0 -21
  146. package/dist/components/idVerificationContainer/index.d.ts +0 -16
  147. package/dist/components/index.d.ts +0 -12
  148. package/dist/components/loginForm/index.d.ts +0 -31
  149. package/dist/components/loginModal/SignUpForm.d.ts +0 -10
  150. package/dist/components/loginModal/constants.d.ts +0 -39
  151. package/dist/components/loginModal/index.d.ts +0 -22
  152. package/dist/components/myTicketsContainer/index.d.ts +0 -16
  153. package/dist/components/myTicketsContainer/row.d.ts +0 -3
  154. package/dist/components/myTicketsContainer/tableConfig.d.ts +0 -5
  155. package/dist/components/orderDetailsContainer/CustomFieldsForm.d.ts +0 -12
  156. package/dist/components/orderDetailsContainer/TicketHolderCustomFields.d.ts +0 -10
  157. package/dist/components/orderDetailsContainer/index.d.ts +0 -66
  158. package/dist/components/orderDetailsContainer/ticketsTable.d.ts +0 -46
  159. package/dist/components/orderDetailsContainer/utils/index.d.ts +0 -6
  160. package/dist/components/paymentContainer/OrderDetails.d.ts +0 -9
  161. package/dist/components/paymentContainer/PaymentPlanSection.d.ts +0 -10
  162. package/dist/components/paymentContainer/handlePayment.d.ts +0 -15
  163. package/dist/components/paymentContainer/index.d.ts +0 -39
  164. package/dist/components/preRegistration/FieldsSection.d.ts +0 -19
  165. package/dist/components/preRegistration/Influancers.d.ts +0 -2
  166. package/dist/components/preRegistration/PreRegistrationComplete.d.ts +0 -13
  167. package/dist/components/preRegistration/PreRegistrationInformations.d.ts +0 -2
  168. package/dist/components/preRegistration/Prewards.d.ts +0 -2
  169. package/dist/components/preRegistration/ShareOptions.d.ts +0 -2
  170. package/dist/components/preRegistration/constants.d.ts +0 -2
  171. package/dist/components/preRegistration/index.d.ts +0 -23
  172. package/dist/components/preRegistration/utils.d.ts +0 -12
  173. package/dist/components/registerForm/adapters/index.d.ts +0 -4
  174. package/dist/components/registerForm/constants.d.ts +0 -1
  175. package/dist/components/registerForm/index.d.ts +0 -16
  176. package/dist/components/registerModal/index.d.ts +0 -12
  177. package/dist/components/resetPasswordContainer/index.d.ts +0 -10
  178. package/dist/components/rsvpContainer/index.d.ts +0 -7
  179. package/dist/components/seatMapContainer/SeatMapComponent.d.ts +0 -8
  180. package/dist/components/seatMapContainer/TicketsSection.d.ts +0 -9
  181. package/dist/components/seatMapContainer/addToCart.d.ts +0 -14
  182. package/dist/components/seatMapContainer/index.d.ts +0 -2
  183. package/dist/components/seatMapContainer/utils.d.ts +0 -6
  184. package/dist/components/signupModal/index.d.ts +0 -12
  185. package/dist/components/ticketResale/index.d.ts +0 -12
  186. package/dist/components/ticketResaleModal/index.d.ts +0 -19
  187. package/dist/components/ticketsContainer/AccessCodeSection.d.ts +0 -7
  188. package/dist/components/ticketsContainer/InfoIcon.d.ts +0 -5
  189. package/dist/components/ticketsContainer/PromoCodeSection.d.ts +0 -15
  190. package/dist/components/ticketsContainer/ReferralLogic.d.ts +0 -5
  191. package/dist/components/ticketsContainer/TicketRow.d.ts +0 -13
  192. package/dist/components/ticketsContainer/TicketsSection.d.ts +0 -20
  193. package/dist/components/ticketsContainer/TimeSlotTicketRow.d.ts +0 -19
  194. package/dist/components/ticketsContainer/TimeSlotsSection.d.ts +0 -25
  195. package/dist/components/ticketsContainer/index.d.ts +0 -93
  196. package/dist/components/ticketsContainer/utils.d.ts +0 -13
  197. package/dist/components/timerWidget/index.d.ts +0 -16
  198. package/dist/components/waitingList/index.d.ts +0 -9
  199. package/dist/constants/index.d.ts +0 -7
  200. package/dist/env.d.ts +0 -16
  201. package/dist/hoc/CustomFields/index.d.ts +0 -3
  202. package/dist/hoc/index.d.ts +0 -1
  203. package/dist/hooks/index.d.ts +0 -1
  204. package/dist/hooks/useCookieListener.d.ts +0 -1
  205. package/dist/hooks/useEventListener.d.ts +0 -1
  206. package/dist/hooks/useLocalStorageListener.d.ts +0 -1
  207. package/dist/hooks/useOnline.d.ts +0 -1
  208. package/dist/hooks/usePixel.d.ts +0 -6
  209. package/dist/images/Polygon.png +0 -0
  210. package/dist/images/cross.svg +0 -44
  211. package/dist/images/done.svg +0 -3
  212. package/dist/images/edit.svg +0 -10
  213. package/dist/images/email.svg +0 -1
  214. package/dist/images/instagram.svg +0 -5
  215. package/dist/images/logo-ttf.png +0 -0
  216. package/dist/images/spotify.svg +0 -6
  217. package/dist/images/user.svg +0 -1
  218. package/dist/images/xmark.svg +0 -92
  219. package/dist/normalizers/index.d.ts +0 -4
  220. package/dist/tf-checkout-react.cjs.development.js +0 -16149
  221. package/dist/tf-checkout-react.cjs.development.js.map +0 -1
  222. package/dist/tf-checkout-react.cjs.production.min.js +0 -2
  223. package/dist/tf-checkout-react.cjs.production.min.js.map +0 -1
  224. package/dist/tf-checkout-react.esm.js +0 -16116
  225. package/dist/tf-checkout-react.esm.js.map +0 -1
  226. package/dist/tf-checkout-styles.css +0 -1
  227. package/dist/types/add_on.d.ts +0 -8
  228. package/dist/types/billing-info-data.d.ts +0 -27
  229. package/dist/types/checkoutPageConfigs.d.ts +0 -13
  230. package/dist/types/index.d.ts +0 -6
  231. package/dist/types/order-data.d.ts +0 -15
  232. package/dist/types/payment-field.d.ts +0 -6
  233. package/dist/types/payment-plan-configuration.d.ts +0 -18
  234. package/dist/types/referral-promotion.d.ts +0 -6
  235. package/dist/types/verification.d.ts +0 -12
  236. package/dist/utils/adaptStripeErrors.d.ts +0 -8
  237. package/dist/utils/auth.d.ts +0 -21
  238. package/dist/utils/cookies.d.ts +0 -3
  239. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +0 -23
  240. package/dist/utils/createMarkup.d.ts +0 -3
  241. package/dist/utils/customFields.d.ts +0 -35
  242. package/dist/utils/downloadPDF.d.ts +0 -1
  243. package/dist/utils/form.d.ts +0 -3
  244. package/dist/utils/formikErrorFocus.d.ts +0 -2
  245. package/dist/utils/getDomain.d.ts +0 -1
  246. package/dist/utils/getImage.d.ts +0 -1
  247. package/dist/utils/getQueryVariable.d.ts +0 -1
  248. package/dist/utils/htmlNodeFromString.d.ts +0 -1
  249. package/dist/utils/index.d.ts +0 -15
  250. package/dist/utils/isBrowser.d.ts +0 -1
  251. package/dist/utils/isValidNumber.d.ts +0 -1
  252. package/dist/utils/jsonUtils.d.ts +0 -1
  253. package/dist/utils/replaceVarInString.d.ts +0 -1
  254. package/dist/utils/setConfigs.d.ts +0 -11
  255. package/dist/utils/showZero.d.ts +0 -1
  256. package/dist/validators/index.d.ts +0 -8
  257. package/src/adapters/customFields.ts +0 -85
  258. package/src/adapters/index.ts +0 -1
  259. package/src/api/auth.ts +0 -88
  260. package/src/api/cart.ts +0 -28
  261. package/src/api/checkout.ts +0 -28
  262. package/src/api/common.ts +0 -190
  263. package/src/api/guestTicketDelegation.ts +0 -79
  264. package/src/api/index.ts +0 -346
  265. package/src/api/interceptors.ts +0 -77
  266. package/src/api/orders.ts +0 -30
  267. package/src/api/payment.ts +0 -77
  268. package/src/api/preRegistrationComplete.ts +0 -37
  269. package/src/api/publicRequest.ts +0 -47
  270. package/src/api/resale.ts +0 -28
  271. package/src/assets/images/Polygon.png +0 -0
  272. package/src/assets/images/cross.svg +0 -44
  273. package/src/assets/images/done.svg +0 -3
  274. package/src/assets/images/edit.svg +0 -10
  275. package/src/assets/images/email.svg +0 -1
  276. package/src/assets/images/instagram.svg +0 -5
  277. package/src/assets/images/logo-ttf.png +0 -0
  278. package/src/assets/images/spotify.svg +0 -6
  279. package/src/assets/images/user.svg +0 -1
  280. package/src/assets/images/xmark.svg +0 -92
  281. package/src/components/account-settings/index.tsx +0 -161
  282. package/src/components/account-settings/style.css +0 -200
  283. package/src/components/addonsContainer/AddonComponent.tsx +0 -204
  284. package/src/components/addonsContainer/SimpleAddonsContainer.tsx +0 -459
  285. package/src/components/addonsContainer/adapters/index.tsx +0 -62
  286. package/src/components/addonsContainer/index.tsx +0 -353
  287. package/src/components/addonsContainer/normalizers/index.ts +0 -5
  288. package/src/components/addonsContainer/useAddons.ts +0 -248
  289. package/src/components/addonsContainer/utils/index.tsx +0 -231
  290. package/src/components/billing-info-container/hooks/index.ts +0 -3
  291. package/src/components/billing-info-container/hooks/usePaymentContext.ts +0 -22
  292. package/src/components/billing-info-container/hooks/usePaymentRedirect.ts +0 -145
  293. package/src/components/billing-info-container/hooks/useStripePayment.ts +0 -119
  294. package/src/components/billing-info-container/index.tsx +0 -1695
  295. package/src/components/billing-info-container/style.css +0 -150
  296. package/src/components/billing-info-container/utils.tsx +0 -413
  297. package/src/components/common/Checkbox.tsx +0 -51
  298. package/src/components/common/CheckboxField/index.tsx +0 -41
  299. package/src/components/common/CopyField.tsx +0 -53
  300. package/src/components/common/CopyMessageModal.tsx +0 -34
  301. package/src/components/common/CustomField.tsx +0 -168
  302. package/src/components/common/DatePickerField.tsx +0 -126
  303. package/src/components/common/FieldSection/index.tsx +0 -141
  304. package/src/components/common/FieldSection/utils/index.tsx +0 -92
  305. package/src/components/common/FormikPhoneNumberField.tsx +0 -51
  306. package/src/components/common/Loader.tsx +0 -8
  307. package/src/components/common/ModalComponent/index.tsx +0 -68
  308. package/src/components/common/NativeSelectFeild/index.tsx +0 -86
  309. package/src/components/common/PhoneNumberField.tsx +0 -117
  310. package/src/components/common/PoweredBy.tsx +0 -15
  311. package/src/components/common/RadioField.tsx +0 -36
  312. package/src/components/common/RadioGroupField/index.tsx +0 -76
  313. package/src/components/common/RedirectModal.tsx +0 -43
  314. package/src/components/common/SelectField/index.tsx +0 -104
  315. package/src/components/common/SnackbarAlert.tsx +0 -52
  316. package/src/components/common/index.tsx +0 -11
  317. package/src/components/common/socials.tsx +0 -33
  318. package/src/components/confirmModal/index.tsx +0 -60
  319. package/src/components/confirmationContainer/config.ts +0 -79
  320. package/src/components/confirmationContainer/index.tsx +0 -349
  321. package/src/components/confirmationContainer/social-buttons.tsx +0 -149
  322. package/src/components/confirmationContainer/style.css +0 -206
  323. package/src/components/countdown/index.tsx +0 -100
  324. package/src/components/countdown/style.css +0 -10
  325. package/src/components/delegationsContainer/IssueComponent.tsx +0 -156
  326. package/src/components/delegationsContainer/IssueTicketForm.tsx +0 -109
  327. package/src/components/delegationsContainer/TicketsAssignedTable.tsx +0 -55
  328. package/src/components/delegationsContainer/TicketsAvailableTable.tsx +0 -54
  329. package/src/components/delegationsContainer/index.tsx +0 -83
  330. package/src/components/forgotPasswordModal/index.tsx +0 -138
  331. package/src/components/forgotPasswordModal/style.css +0 -47
  332. package/src/components/idVerificationContainer/VerificationPendingModal.tsx +0 -47
  333. package/src/components/idVerificationContainer/constants.ts +0 -27
  334. package/src/components/idVerificationContainer/index.tsx +0 -323
  335. package/src/components/index.ts +0 -12
  336. package/src/components/loginForm/index.tsx +0 -202
  337. package/src/components/loginModal/SignUpForm.tsx +0 -329
  338. package/src/components/loginModal/constants.ts +0 -46
  339. package/src/components/loginModal/index.tsx +0 -263
  340. package/src/components/loginModal/style.css +0 -116
  341. package/src/components/myTicketsContainer/index.tsx +0 -228
  342. package/src/components/myTicketsContainer/row.tsx +0 -46
  343. package/src/components/myTicketsContainer/style.css +0 -40
  344. package/src/components/myTicketsContainer/tableConfig.tsx +0 -80
  345. package/src/components/myTicketsContainer/types.d.ts +0 -41
  346. package/src/components/orderDetailsContainer/CustomFieldsForm.tsx +0 -75
  347. package/src/components/orderDetailsContainer/TicketHolderCustomFields.tsx +0 -100
  348. package/src/components/orderDetailsContainer/index.tsx +0 -586
  349. package/src/components/orderDetailsContainer/style.css +0 -77
  350. package/src/components/orderDetailsContainer/ticketsTable.tsx +0 -246
  351. package/src/components/orderDetailsContainer/utils/index.tsx +0 -55
  352. package/src/components/paymentContainer/OrderDetails.tsx +0 -277
  353. package/src/components/paymentContainer/PaymentPlanSection.tsx +0 -169
  354. package/src/components/paymentContainer/handlePayment.ts +0 -86
  355. package/src/components/paymentContainer/index.tsx +0 -643
  356. package/src/components/paymentContainer/style.css +0 -196
  357. package/src/components/preRegistration/FieldsSection.tsx +0 -150
  358. package/src/components/preRegistration/Influancers.tsx +0 -34
  359. package/src/components/preRegistration/PreRegistrationComplete.tsx +0 -186
  360. package/src/components/preRegistration/PreRegistrationInformations.tsx +0 -60
  361. package/src/components/preRegistration/Prewards.tsx +0 -41
  362. package/src/components/preRegistration/ShareOptions.tsx +0 -77
  363. package/src/components/preRegistration/constants.tsx +0 -169
  364. package/src/components/preRegistration/index.tsx +0 -330
  365. package/src/components/preRegistration/style.css +0 -3
  366. package/src/components/preRegistration/utils.ts +0 -163
  367. package/src/components/registerForm/adapters/index.tsx +0 -10
  368. package/src/components/registerForm/constants.tsx +0 -98
  369. package/src/components/registerForm/index.tsx +0 -188
  370. package/src/components/registerModal/index.tsx +0 -154
  371. package/src/components/registerModal/style.css +0 -18
  372. package/src/components/resetPasswordContainer/index.tsx +0 -102
  373. package/src/components/resetPasswordContainer/style.css +0 -36
  374. package/src/components/rsvpContainer/index.tsx +0 -126
  375. package/src/components/seatMapContainer/SeatMapComponent.tsx +0 -77
  376. package/src/components/seatMapContainer/TicketsSection.tsx +0 -286
  377. package/src/components/seatMapContainer/addToCart.ts +0 -66
  378. package/src/components/seatMapContainer/index.tsx +0 -443
  379. package/src/components/seatMapContainer/utils.ts +0 -133
  380. package/src/components/signupModal/index.tsx +0 -178
  381. package/src/components/signupModal/style.css +0 -58
  382. package/src/components/ticketResale/index.tsx +0 -86
  383. package/src/components/ticketResaleModal/index.tsx +0 -224
  384. package/src/components/ticketResaleModal/style.css +0 -28
  385. package/src/components/ticketsContainer/AccessCodeSection.tsx +0 -50
  386. package/src/components/ticketsContainer/InfoIcon.tsx +0 -35
  387. package/src/components/ticketsContainer/PromoCodeSection.tsx +0 -116
  388. package/src/components/ticketsContainer/ReferralLogic.tsx +0 -33
  389. package/src/components/ticketsContainer/TicketRow.tsx +0 -107
  390. package/src/components/ticketsContainer/TicketsSection.tsx +0 -350
  391. package/src/components/ticketsContainer/TimeSlotTicketRow.tsx +0 -243
  392. package/src/components/ticketsContainer/TimeSlotsSection.tsx +0 -194
  393. package/src/components/ticketsContainer/index.tsx +0 -986
  394. package/src/components/ticketsContainer/style.css +0 -178
  395. package/src/components/ticketsContainer/utils.ts +0 -35
  396. package/src/components/timerWidget/index.tsx +0 -97
  397. package/src/components/timerWidget/style.css +0 -35
  398. package/src/components/waitingList/index.tsx +0 -190
  399. package/src/components/waitingList/style.css +0 -27
  400. package/src/constants/index.ts +0 -3
  401. package/src/env.ts +0 -29
  402. package/src/hoc/CustomFields/index.tsx +0 -85
  403. package/src/hoc/index.ts +0 -1
  404. package/src/hooks/index.ts +0 -1
  405. package/src/hooks/useCookieListener.ts +0 -32
  406. package/src/hooks/useEventListener.ts +0 -32
  407. package/src/hooks/useLocalStorageListener.ts +0 -32
  408. package/src/hooks/useOnline.ts +0 -21
  409. package/src/hooks/usePixel.ts +0 -88
  410. package/src/normalizers/index.ts +0 -49
  411. package/src/types/add_on.ts +0 -8
  412. package/src/types/api/auth.d.ts +0 -63
  413. package/src/types/api/axiosResponse.d.ts +0 -6
  414. package/src/types/api/cart.d.ts +0 -73
  415. package/src/types/api/checkout.d.ts +0 -92
  416. package/src/types/api/common.d.ts +0 -153
  417. package/src/types/api/guestTicketDelegation.d.ts +0 -18
  418. package/src/types/api/orders.d.ts +0 -116
  419. package/src/types/api/payment.d.ts +0 -180
  420. package/src/types/api/preRegistration.d.ts +0 -11
  421. package/src/types/api/preRegistrationComplete.d.ts +0 -95
  422. package/src/types/api/ticketResale.d.ts +0 -13
  423. package/src/types/billing-info-data.ts +0 -37
  424. package/src/types/checkoutPageConfigs.ts +0 -13
  425. package/src/types/formFields.d.ts +0 -29
  426. package/src/types/index.ts +0 -6
  427. package/src/types/order-data.ts +0 -16
  428. package/src/types/payment-field.ts +0 -7
  429. package/src/types/payment-plan-configuration.ts +0 -19
  430. package/src/types/pre-registration-complete.d.ts +0 -47
  431. package/src/types/referral-promotion.ts +0 -7
  432. package/src/types/seatMap.d.ts +0 -159
  433. package/src/types/verification.ts +0 -12
  434. package/src/utils/adaptStripeErrors.ts +0 -26
  435. package/src/utils/auth.ts +0 -45
  436. package/src/utils/cookies.ts +0 -73
  437. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +0 -81
  438. package/src/utils/createMarkup.ts +0 -1
  439. package/src/utils/customFields.ts +0 -80
  440. package/src/utils/downloadPDF.tsx +0 -42
  441. package/src/utils/form.ts +0 -34
  442. package/src/utils/formikErrorFocus.ts +0 -24
  443. package/src/utils/getDomain.ts +0 -21
  444. package/src/utils/getImage.ts +0 -14
  445. package/src/utils/getQueryVariable.ts +0 -13
  446. package/src/utils/htmlNodeFromString.ts +0 -6
  447. package/src/utils/index.ts +0 -15
  448. package/src/utils/isBrowser.ts +0 -2
  449. package/src/utils/isValidNumber.ts +0 -8
  450. package/src/utils/jsonUtils.ts +0 -8
  451. package/src/utils/replaceVarInString.ts +0 -9
  452. package/src/utils/setConfigs.ts +0 -24
  453. package/src/utils/showZero.tsx +0 -10
  454. package/src/validators/index.ts +0 -61
@@ -0,0 +1,133 @@
1
+ /**
2
+ * `<PaymentMethods>` — a controlled radio-list of payment methods (icon + label
3
+ * per row), matching the hosted checkout's iconed selector. Presentational only:
4
+ * it renders the choices + the selected row's extra input (and hosts a card
5
+ * field in the card row via `children`/`inputSlotFor`). It does NOT own the Pay
6
+ * button or `placeOrder` — `<Payment/>` builds the options and maps a selection
7
+ * back to a `placeOrder` request.
8
+ */
9
+ import React, { type FC, type ReactNode } from 'react'
10
+
11
+ import { cx } from './cx'
12
+ import { Field, Input } from './Field'
13
+
14
+ // The method descriptor + row shape live in the SDK so both platforms render
15
+ // the SAME option list. Imported for local use and re-exported for consumers
16
+ // that already import them from here.
17
+ import type {
18
+ PaymentMethodId,
19
+ PaymentMethodOption,
20
+ } from 'tf-checkout-shared'
21
+
22
+ export type { PaymentMethodId, PaymentMethodOption }
23
+
24
+ export interface PaymentMethodsProps {
25
+ options: PaymentMethodOption[]
26
+ /** Selected `option.value` (controlled). */
27
+ selected: string
28
+ onSelect: (value: string) => void
29
+ /** Extra-field values keyed by `option.value`. */
30
+ extraValues: Record<string, { cashtag?: string; phoneNumber?: string }>
31
+ onExtraChange: (
32
+ value: string,
33
+ patch: { cashtag?: string; phoneNumber?: string }
34
+ ) => void
35
+ /** Reveal required extra-field errors after the buyer attempts payment. */
36
+ showValidation?: boolean
37
+ /** Rendered inside the row whose `value === inputSlotFor` (e.g. `<CardInput/>`). */
38
+ children?: ReactNode
39
+ inputSlotFor?: string
40
+ className?: string
41
+ }
42
+
43
+ const EXTRA_LABEL: Record<'cashtag' | 'phoneNumber', string> = {
44
+ cashtag: 'Jenius $cashtag',
45
+ phoneNumber: 'OVO phone number',
46
+ }
47
+
48
+ export const PaymentMethods: FC<PaymentMethodsProps> = ({
49
+ options,
50
+ selected,
51
+ onSelect,
52
+ extraValues,
53
+ onExtraChange,
54
+ showValidation = false,
55
+ children,
56
+ inputSlotFor,
57
+ className,
58
+ }) => (
59
+ <div
60
+ className={cx('tf-checkout-payment__methods', className)}
61
+ role="radiogroup"
62
+ aria-label="Payment method"
63
+ >
64
+ {options.map((o) => {
65
+ const isSelected = o.value === selected
66
+ const extraValue =
67
+ o.extra === 'phoneNumber'
68
+ ? extraValues[o.value]?.phoneNumber
69
+ : extraValues[o.value]?.cashtag
70
+ const extraInvalid =
71
+ Boolean(isSelected && o.extra && showValidation) && !extraValue?.trim()
72
+ return (
73
+ <label
74
+ key={o.value}
75
+ className={cx(
76
+ 'tf-checkout-payment__method',
77
+ isSelected && 'tf-checkout-payment__method--selected'
78
+ )}
79
+ >
80
+ <span className="tf-checkout-payment__method-head">
81
+ <input
82
+ type="radio"
83
+ name="tf-pay-method"
84
+ className="tf-checkout-payment__method-radio"
85
+ checked={isSelected}
86
+ onChange={() => onSelect(o.value)}
87
+ />
88
+ {o.iconUrl && (
89
+ <img className="tf-checkout-payment__method-icon" src={o.iconUrl} alt="" />
90
+ )}
91
+ <span className="tf-checkout-payment__method-label">{o.label}</span>
92
+ </span>
93
+
94
+ {isSelected && (o.value === inputSlotFor || o.extra) && (
95
+ <div className="tf-checkout-payment__method-body">
96
+ {o.value === inputSlotFor && children}
97
+ {o.extra && (
98
+ <Field
99
+ label={`${EXTRA_LABEL[o.extra]} *`}
100
+ error={extraInvalid ? 'This field is required.' : undefined}
101
+ invalid={extraInvalid}
102
+ >
103
+ <Input
104
+ inputMode={o.extra === 'phoneNumber' ? 'tel' : 'text'}
105
+ required
106
+ invalid={extraInvalid}
107
+ aria-invalid={extraInvalid}
108
+ placeholder={
109
+ o.extra === 'phoneNumber' ? 'e.g. 081234567890' : '$cashtag'
110
+ }
111
+ value={
112
+ o.extra === 'phoneNumber'
113
+ ? (extraValues[o.value]?.phoneNumber ?? '')
114
+ : (extraValues[o.value]?.cashtag ?? '')
115
+ }
116
+ onChange={(e) =>
117
+ onExtraChange(
118
+ o.value,
119
+ o.extra === 'phoneNumber'
120
+ ? { phoneNumber: e.target.value }
121
+ : { cashtag: e.target.value }
122
+ )
123
+ }
124
+ />
125
+ </Field>
126
+ )}
127
+ </div>
128
+ )}
129
+ </label>
130
+ )
131
+ })}
132
+ </div>
133
+ )
@@ -0,0 +1,24 @@
1
+ import React, { type FC, type ReactNode } from 'react'
2
+
3
+ import { cx } from './cx'
4
+
5
+ /** A price with optional struck-through original + a fees/deposit note. */
6
+ export const PriceLine: FC<{
7
+ currency?: string
8
+ amount: number | string
9
+ /** Struck-through pre-discount price. */
10
+ original?: number | string
11
+ /** e.g. "incl. fees" or "50% deposit". */
12
+ note?: ReactNode
13
+ className?: string
14
+ }> = ({ currency, amount, original, note, className }) => (
15
+ <span className={cx('tf-checkout-price', className)}>
16
+ {original != null && (
17
+ <span className="tf-checkout-price__original">
18
+ {currency} {original}
19
+ </span>
20
+ )}
21
+ {currency} {amount}
22
+ {note != null && <span className="tf-checkout-price__fees">{note}</span>}
23
+ </span>
24
+ )
@@ -0,0 +1,50 @@
1
+ /**
2
+ * `<QuantitySelect>` — a compact quantity dropdown (0…max), the control the old
3
+ * checkout used for tickets and add-ons (not a +/- stepper).
4
+ */
5
+ import React, { type FC } from 'react'
6
+
7
+ import { cx } from './cx'
8
+
9
+ export interface QuantitySelectProps {
10
+ value: number
11
+ onChange: (value: number) => void
12
+ /** Minimum purchasable quantity when buying (0 = none is always allowed). */
13
+ min?: number
14
+ max?: number
15
+ /** Step between options (the old checkout's `multiplier`). */
16
+ step?: number
17
+ disabled?: boolean
18
+ className?: string
19
+ }
20
+
21
+ export const QuantitySelect: FC<QuantitySelectProps> = ({
22
+ value,
23
+ onChange,
24
+ min = 0,
25
+ max = 10,
26
+ step = 1,
27
+ disabled,
28
+ className,
29
+ }) => {
30
+ // 0 (buy none) is always offered; the first non-zero option honors the ticket's
31
+ // minimum, then steps up to the cap — so a min-2 type offers 0, 2, 3, … not 1.
32
+ const cap = Math.min(max, 50)
33
+ const lo = Math.max(1, min)
34
+ const options: number[] = [0]
35
+ for (let n = lo; n <= cap; n += step) options.push(n)
36
+ return (
37
+ <select
38
+ className={cx('tf-checkout-qty', className)}
39
+ value={value}
40
+ disabled={disabled}
41
+ onChange={(e) => onChange(Number(e.target.value))}
42
+ >
43
+ {options.map((n) => (
44
+ <option key={n} value={n}>
45
+ {n}
46
+ </option>
47
+ ))}
48
+ </select>
49
+ )
50
+ }
@@ -0,0 +1,36 @@
1
+ import React, { type FC } from 'react'
2
+
3
+ import { cx } from './cx'
4
+
5
+ /** Quantity ± control (ticket / add-on quantities). */
6
+ export const Stepper: FC<{
7
+ value: number
8
+ onChange: (value: number) => void
9
+ min?: number
10
+ max?: number
11
+ step?: number
12
+ disabled?: boolean
13
+ className?: string
14
+ }> = ({ value, onChange, min = 0, max = Infinity, step = 1, disabled, className }) => (
15
+ <div className={cx('tf-checkout-stepper', className)}>
16
+ <button
17
+ type="button"
18
+ className="tf-checkout-stepper__btn"
19
+ aria-label="Decrease"
20
+ disabled={disabled || value <= min}
21
+ onClick={() => onChange(Math.max(min, value - step))}
22
+ >
23
+
24
+ </button>
25
+ <span className="tf-checkout-stepper__value">{value}</span>
26
+ <button
27
+ type="button"
28
+ className="tf-checkout-stepper__btn"
29
+ aria-label="Increase"
30
+ disabled={disabled || value >= max}
31
+ onClick={() => onChange(Math.min(max, value + step))}
32
+ >
33
+ +
34
+ </button>
35
+ </div>
36
+ )
@@ -0,0 +1,34 @@
1
+ import React, { type FC, type ReactNode } from 'react'
2
+
3
+ import { cx } from './cx'
4
+
5
+ const clock = (s: number) => {
6
+ const v = Math.max(0, Math.floor(s))
7
+ return v >= 3600
8
+ ? `${Math.floor(v / 3600)}:${String(Math.floor((v % 3600) / 60)).padStart(
9
+ 2,
10
+ '0'
11
+ )}:${String(v % 60).padStart(2, '0')}`
12
+ : `${Math.floor(v / 60)}:${String(v % 60).padStart(2, '0')}`
13
+ }
14
+
15
+ /** Reservation countdown. Pass `checkout.secondsLeft`. */
16
+ export const Timer: FC<{
17
+ seconds: number
18
+ /** Below this many seconds it turns urgent (default 60). */
19
+ urgentAt?: number
20
+ /** Text before the clock, e.g. "Reserved for". */
21
+ label?: ReactNode
22
+ className?: string
23
+ }> = ({ seconds, urgentAt = 60, label, className }) => (
24
+ <span
25
+ className={cx(
26
+ 'tf-checkout-timer',
27
+ seconds <= urgentAt && 'tf-checkout-timer--urgent',
28
+ className
29
+ )}
30
+ >
31
+ {label != null && <span>{label}</span>}
32
+ {clock(seconds)}
33
+ </span>
34
+ )
@@ -0,0 +1,55 @@
1
+ /**
2
+ * `<TimerBanner>` — the reservation countdown banner the old checkout showed at
3
+ * the top of the add-ons / billing / payment steps: "Please complete your
4
+ * purchase before the timer reaches zero." + mm:ss, with a dismiss X. Feed it
5
+ * `checkout.secondsLeft`. Renders nothing when there's no live reservation.
6
+ */
7
+ import React, { useState, type FC } from 'react'
8
+
9
+ import { cx } from './cx'
10
+
11
+ const clock = (s: number) => {
12
+ const m = String(Math.floor(s / 60)).padStart(2, '0')
13
+ const ss = String(s % 60).padStart(2, '0')
14
+ return `${m}:${ss}`
15
+ }
16
+
17
+ export interface TimerBannerProps {
18
+ seconds?: number
19
+ /** Show red styling at/under this many seconds. Default 60. */
20
+ urgentAt?: number
21
+ message?: string
22
+ className?: string
23
+ }
24
+
25
+ export const TimerBanner: FC<TimerBannerProps> = ({
26
+ seconds,
27
+ urgentAt = 60,
28
+ message = 'Please complete your purchase before the timer reaches zero.',
29
+ className,
30
+ }) => {
31
+ const [dismissed, setDismissed] = useState(false)
32
+ if (seconds === undefined || seconds <= 0 || dismissed) return null
33
+ const urgent = seconds <= urgentAt
34
+ return (
35
+ <div
36
+ role="status"
37
+ className={cx(
38
+ 'tf-checkout-timerbanner',
39
+ urgent && 'tf-checkout-timerbanner--urgent',
40
+ className
41
+ )}
42
+ >
43
+ <span className="tf-checkout-timerbanner__msg">{message}</span>
44
+ <span className="tf-checkout-timerbanner__clock">{clock(seconds)}</span>
45
+ <button
46
+ type="button"
47
+ className="tf-checkout-timerbanner__close"
48
+ aria-label="Dismiss"
49
+ onClick={() => setDismissed(true)}
50
+ >
51
+ ×
52
+ </button>
53
+ </div>
54
+ )
55
+ }
package/src/ui/cx.ts ADDED
@@ -0,0 +1,3 @@
1
+ /** Join truthy class names (tiny, dependency-free). */
2
+ export const cx = (...parts: Array<string | false | null | undefined>): string =>
3
+ parts.filter(Boolean).join(' ')
@@ -0,0 +1,54 @@
1
+ /**
2
+ * tf-checkout UI kit — the themeable primitives every section composes.
3
+ * All scoped under `.tf-checkout`, all `tf-checkout-*` BEM classes, all take a
4
+ * `className`. Styles load automatically from the package entry point.
5
+ */
6
+ export {
7
+ CheckoutProvider,
8
+ useCheckoutContext,
9
+ useCheckoutValidation,
10
+ type CheckoutProviderProps,
11
+ } from './CheckoutProvider'
12
+ export { themeToVars, type CheckoutTheme } from './theme'
13
+ export { cx } from './cx'
14
+ export {
15
+ Card,
16
+ SectionHeader,
17
+ Pill,
18
+ type CardProps,
19
+ type SectionHeaderProps,
20
+ } from './Card'
21
+ export { Button, type ButtonProps } from './Button'
22
+ export {
23
+ Field,
24
+ FieldRow,
25
+ Input,
26
+ Textarea,
27
+ Select,
28
+ Checkbox,
29
+ type InputProps,
30
+ type TextareaProps,
31
+ type SelectProps,
32
+ type CheckboxProps,
33
+ } from './Field'
34
+ export {
35
+ CustomFieldInput,
36
+ CustomFieldGroupFields,
37
+ customFieldsComplete,
38
+ type CustomFieldInputProps,
39
+ type CustomFieldGroupFieldsProps,
40
+ } from './CustomFields'
41
+ export {
42
+ PaymentMethods,
43
+ type PaymentMethodsProps,
44
+ type PaymentMethodOption,
45
+ type PaymentMethodId,
46
+ } from './PaymentMethods'
47
+ export { Stepper } from './Stepper'
48
+ export { QuantitySelect, type QuantitySelectProps } from './QuantitySelect'
49
+ export { PriceLine } from './PriceLine'
50
+ export { Timer } from './Timer'
51
+ export { TimerBanner, type TimerBannerProps } from './TimerBanner'
52
+ export { Loader } from './Loader'
53
+ export { useInstallmentPicker } from './InstallmentPicker'
54
+ export { I18nProvider, useT, type I18nProviderProps } from './I18nProvider'
@@ -0,0 +1,83 @@
1
+ /**
2
+ * The checkout theme — a structured, documented token set. Pass any subset to
3
+ * `<CheckoutProvider theme={…}>`; each token maps to a `--tf-checkout-*` CSS
4
+ * custom property that `checkout.css` (and every component) reads. Anything you
5
+ * omit falls back to the stylesheet default.
6
+ */
7
+ import type { CSSProperties } from 'react'
8
+
9
+ export interface CheckoutTheme {
10
+ /** `'dark'` adds the `tf-checkout--dark` class (dark default palette). */
11
+ colorScheme?: 'light' | 'dark'
12
+
13
+ // color
14
+ /** Primary color — buttons, step badges, focus ring, links. */
15
+ accent?: string
16
+ /** Hover state for `accent` (defaults near `accent`). */
17
+ accentHover?: string
18
+ /** Text/icon color on top of `accent`. */
19
+ accentContrast?: string
20
+ /** Card background. */
21
+ surface?: string
22
+ /** Subtle fill (summary rows, muted pills). */
23
+ surfaceMuted?: string
24
+ /** Primary text. */
25
+ text?: string
26
+ /** Secondary text (labels, "incl. fees", hints). */
27
+ muted?: string
28
+ /** Borders + dividers. */
29
+ border?: string
30
+ /** Error text + invalid field borders. */
31
+ error?: string
32
+ /** Success (confirmation check). */
33
+ success?: string
34
+
35
+ // shape
36
+ /** Corner radius for cards. */
37
+ radiusCard?: string
38
+ /** Corner radius for inputs / buttons. */
39
+ radiusControl?: string
40
+ /** Card shadow. */
41
+ shadow?: string
42
+
43
+ // type
44
+ /** Font family for the whole component tree. */
45
+ font?: string
46
+ /** Base font size (e.g. `15px`). */
47
+ fontSize?: string
48
+
49
+ // layout
50
+ /** Max width of the checkout column. */
51
+ maxWidth?: string
52
+ }
53
+
54
+ const MAP: Record<keyof Omit<CheckoutTheme, 'colorScheme'>, string> = {
55
+ accent: '--tf-checkout-accent',
56
+ accentHover: '--tf-checkout-accent-hover',
57
+ accentContrast: '--tf-checkout-accent-contrast',
58
+ surface: '--tf-checkout-surface',
59
+ surfaceMuted: '--tf-checkout-surface-muted',
60
+ text: '--tf-checkout-text',
61
+ muted: '--tf-checkout-muted',
62
+ border: '--tf-checkout-border',
63
+ error: '--tf-checkout-error',
64
+ success: '--tf-checkout-success',
65
+ radiusCard: '--tf-checkout-radius-card',
66
+ radiusControl: '--tf-checkout-radius-control',
67
+ shadow: '--tf-checkout-shadow',
68
+ font: '--tf-checkout-font',
69
+ fontSize: '--tf-checkout-font-size',
70
+ maxWidth: '--tf-checkout-max-width',
71
+ }
72
+
73
+ /** Turn a theme into inline `--tf-checkout-*` custom properties for the root. */
74
+ export const themeToVars = (theme?: CheckoutTheme): CSSProperties => {
75
+ const out: Record<string, string> = {}
76
+ if (theme) {
77
+ for (const key of Object.keys(MAP) as (keyof typeof MAP)[]) {
78
+ const value = theme[key]
79
+ if (value != null) out[MAP[key]] = value
80
+ }
81
+ }
82
+ return out as CSSProperties
83
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Web `useCheckout` — a thin injector: the SDK's `useCheckout` with the web
3
+ * platform ports pre-wired (Stripe confirmer, popup provider page, inline
4
+ * Xendit). ALL the DX (countdown, isBusy, promo/referrer/waiting-list, auto ID
5
+ * verification, the flat snapshot) lives in the SDK's hook, so web and React
6
+ * Native share it — this file only supplies what's browser-specific.
7
+ *
8
+ * configureCheckout({ env: 'PROD', clientId, clientSecret }) // once, at app start
9
+ * const checkout = useCheckout()
10
+ * await checkout.setTickets(eventId, selections)
11
+ * checkout.setBilling(b)
12
+ * await checkout.placeOrder('card') // <CardInput/> rendered
13
+ */
14
+ import {
15
+ useCheckout as useSharedCheckout,
16
+ type CheckoutOptions,
17
+ type CheckoutPorts,
18
+ type UseCheckout,
19
+ } from 'tf-checkout-shared'
20
+
21
+ import { webConfirmer, webPorts } from './instance'
22
+
23
+ export interface UseCheckoutOptions {
24
+ /** Extra platform ports merged over the web defaults — e.g. MSI's
25
+ * `onInstallmentOffers` picker. Read once, at first render. */
26
+ ports?: Omit<CheckoutPorts, 'confirmer'>
27
+ /** Wallet/redirect engine options (merchant identity, redirect URL). */
28
+ options?: CheckoutOptions
29
+ }
30
+
31
+ export const useCheckout = (opts: UseCheckoutOptions = {}): UseCheckout =>
32
+ useSharedCheckout({
33
+ ports: { confirmer: webConfirmer, ...webPorts, ...opts.ports },
34
+ options: opts.options,
35
+ })