tf-checkout-react 1.7.30 → 2.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) 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 +3930 -0
  5. package/dist/index.d.ts +3930 -30
  6. package/dist/index.esm.js +9123 -0
  7. package/dist/index.esm.js.map +1 -0
  8. package/dist/index.js +9277 -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 +231 -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 +743 -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 +541 -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 +119 -0
  50. package/src/sections/billing/types.ts +10 -0
  51. package/src/sections/index.ts +15 -0
  52. package/src/sections/seatMap.utils.ts +105 -0
  53. package/src/styles/addons.css +75 -0
  54. package/src/styles/auth.css +294 -0
  55. package/src/styles/billing.css +98 -0
  56. package/src/styles/confirmation.css +51 -0
  57. package/src/styles/foundation.css +146 -0
  58. package/src/styles/payment.css +179 -0
  59. package/src/styles/primitives.css +356 -0
  60. package/src/styles/seat-map.css +46 -0
  61. package/src/styles/tickets.css +285 -0
  62. package/src/styles/verification-confirmation.css +258 -0
  63. package/src/typings.d.ts +2 -2
  64. package/src/ui/Button.tsx +38 -0
  65. package/src/ui/Card.tsx +54 -0
  66. package/src/ui/CheckoutProvider.tsx +172 -0
  67. package/src/ui/CustomFields.tsx +195 -0
  68. package/src/ui/Field.tsx +114 -0
  69. package/src/ui/I18nProvider.tsx +36 -0
  70. package/src/ui/InstallmentPicker.tsx +69 -0
  71. package/src/ui/Loader.tsx +12 -0
  72. package/src/ui/PaymentMethods.tsx +133 -0
  73. package/src/ui/PriceLine.tsx +24 -0
  74. package/src/ui/QuantitySelect.tsx +50 -0
  75. package/src/ui/Stepper.tsx +36 -0
  76. package/src/ui/Timer.tsx +34 -0
  77. package/src/ui/TimerBanner.tsx +55 -0
  78. package/src/ui/cx.ts +3 -0
  79. package/src/ui/index.ts +54 -0
  80. package/src/ui/theme.ts +83 -0
  81. package/src/useCheckout.ts +35 -0
  82. package/src/xendit.ts +438 -0
  83. package/dist/adapters/customFields.d.ts +0 -12
  84. package/dist/adapters/index.d.ts +0 -1
  85. package/dist/api/auth.d.ts +0 -27
  86. package/dist/api/cart.d.ts +0 -2
  87. package/dist/api/checkout.d.ts +0 -3
  88. package/dist/api/common.d.ts +0 -11
  89. package/dist/api/guestTicketDelegation.d.ts +0 -47
  90. package/dist/api/index.d.ts +0 -82
  91. package/dist/api/interceptors.d.ts +0 -1
  92. package/dist/api/orders.d.ts +0 -2
  93. package/dist/api/payment.d.ts +0 -5
  94. package/dist/api/preRegistrationComplete.d.ts +0 -3
  95. package/dist/api/publicRequest.d.ts +0 -9
  96. package/dist/api/resale.d.ts +0 -5
  97. package/dist/components/account-settings/index.d.ts +0 -3
  98. package/dist/components/addonsContainer/AddonComponent.d.ts +0 -18
  99. package/dist/components/addonsContainer/SimpleAddonsContainer.d.ts +0 -20
  100. package/dist/components/addonsContainer/adapters/index.d.ts +0 -12
  101. package/dist/components/addonsContainer/index.d.ts +0 -22
  102. package/dist/components/addonsContainer/normalizers/index.d.ts +0 -1
  103. package/dist/components/addonsContainer/useAddons.d.ts +0 -23
  104. package/dist/components/addonsContainer/utils/index.d.ts +0 -16
  105. package/dist/components/billing-info-container/hooks/index.d.ts +0 -3
  106. package/dist/components/billing-info-container/hooks/usePaymentContext.d.ts +0 -5
  107. package/dist/components/billing-info-container/hooks/usePaymentRedirect.d.ts +0 -14
  108. package/dist/components/billing-info-container/hooks/useStripePayment.d.ts +0 -18
  109. package/dist/components/billing-info-container/index.d.ts +0 -69
  110. package/dist/components/billing-info-container/utils.d.ts +0 -59
  111. package/dist/components/common/Checkbox.d.ts +0 -11
  112. package/dist/components/common/CheckboxField/index.d.ts +0 -9
  113. package/dist/components/common/CopyField.d.ts +0 -12
  114. package/dist/components/common/CopyMessageModal.d.ts +0 -7
  115. package/dist/components/common/CustomField.d.ts +0 -26
  116. package/dist/components/common/DatePickerField.d.ts +0 -20
  117. package/dist/components/common/FieldSection/index.d.ts +0 -19
  118. package/dist/components/common/FieldSection/utils/index.d.ts +0 -8
  119. package/dist/components/common/FormikPhoneNumberField.d.ts +0 -11
  120. package/dist/components/common/Loader.d.ts +0 -2
  121. package/dist/components/common/ModalComponent/index.d.ts +0 -16
  122. package/dist/components/common/NativeSelectFeild/index.d.ts +0 -21
  123. package/dist/components/common/PhoneNumberField.d.ts +0 -14
  124. package/dist/components/common/PoweredBy.d.ts +0 -2
  125. package/dist/components/common/RadioField.d.ts +0 -11
  126. package/dist/components/common/RadioGroupField/index.d.ts +0 -17
  127. package/dist/components/common/RedirectModal.d.ts +0 -7
  128. package/dist/components/common/SelectField/index.d.ts +0 -19
  129. package/dist/components/common/SnackbarAlert.d.ts +0 -13
  130. package/dist/components/common/index.d.ts +0 -11
  131. package/dist/components/common/socials.d.ts +0 -10
  132. package/dist/components/confirmModal/index.d.ts +0 -10
  133. package/dist/components/confirmationContainer/config.d.ts +0 -1
  134. package/dist/components/confirmationContainer/index.d.ts +0 -46
  135. package/dist/components/confirmationContainer/social-buttons.d.ts +0 -16
  136. package/dist/components/countdown/index.d.ts +0 -14
  137. package/dist/components/delegationsContainer/IssueComponent.d.ts +0 -10
  138. package/dist/components/delegationsContainer/IssueTicketForm.d.ts +0 -9
  139. package/dist/components/delegationsContainer/TicketsAssignedTable.d.ts +0 -11
  140. package/dist/components/delegationsContainer/TicketsAvailableTable.d.ts +0 -11
  141. package/dist/components/delegationsContainer/index.d.ts +0 -10
  142. package/dist/components/forgotPasswordModal/index.d.ts +0 -12
  143. package/dist/components/idVerificationContainer/VerificationPendingModal.d.ts +0 -10
  144. package/dist/components/idVerificationContainer/constants.d.ts +0 -21
  145. package/dist/components/idVerificationContainer/index.d.ts +0 -16
  146. package/dist/components/index.d.ts +0 -12
  147. package/dist/components/loginForm/index.d.ts +0 -31
  148. package/dist/components/loginModal/SignUpForm.d.ts +0 -10
  149. package/dist/components/loginModal/constants.d.ts +0 -39
  150. package/dist/components/loginModal/index.d.ts +0 -22
  151. package/dist/components/myTicketsContainer/index.d.ts +0 -16
  152. package/dist/components/myTicketsContainer/row.d.ts +0 -3
  153. package/dist/components/myTicketsContainer/tableConfig.d.ts +0 -5
  154. package/dist/components/orderDetailsContainer/CustomFieldsForm.d.ts +0 -12
  155. package/dist/components/orderDetailsContainer/TicketHolderCustomFields.d.ts +0 -10
  156. package/dist/components/orderDetailsContainer/index.d.ts +0 -66
  157. package/dist/components/orderDetailsContainer/ticketsTable.d.ts +0 -46
  158. package/dist/components/orderDetailsContainer/utils/index.d.ts +0 -6
  159. package/dist/components/paymentContainer/OrderDetails.d.ts +0 -9
  160. package/dist/components/paymentContainer/PaymentPlanSection.d.ts +0 -10
  161. package/dist/components/paymentContainer/handlePayment.d.ts +0 -15
  162. package/dist/components/paymentContainer/index.d.ts +0 -39
  163. package/dist/components/preRegistration/FieldsSection.d.ts +0 -19
  164. package/dist/components/preRegistration/Influancers.d.ts +0 -2
  165. package/dist/components/preRegistration/PreRegistrationComplete.d.ts +0 -13
  166. package/dist/components/preRegistration/PreRegistrationInformations.d.ts +0 -2
  167. package/dist/components/preRegistration/Prewards.d.ts +0 -2
  168. package/dist/components/preRegistration/ShareOptions.d.ts +0 -2
  169. package/dist/components/preRegistration/constants.d.ts +0 -2
  170. package/dist/components/preRegistration/index.d.ts +0 -23
  171. package/dist/components/preRegistration/utils.d.ts +0 -12
  172. package/dist/components/registerForm/adapters/index.d.ts +0 -4
  173. package/dist/components/registerForm/constants.d.ts +0 -1
  174. package/dist/components/registerForm/index.d.ts +0 -16
  175. package/dist/components/registerModal/index.d.ts +0 -12
  176. package/dist/components/resetPasswordContainer/index.d.ts +0 -10
  177. package/dist/components/rsvpContainer/index.d.ts +0 -7
  178. package/dist/components/seatMapContainer/SeatMapComponent.d.ts +0 -8
  179. package/dist/components/seatMapContainer/TicketsSection.d.ts +0 -9
  180. package/dist/components/seatMapContainer/addToCart.d.ts +0 -14
  181. package/dist/components/seatMapContainer/index.d.ts +0 -2
  182. package/dist/components/seatMapContainer/utils.d.ts +0 -6
  183. package/dist/components/signupModal/index.d.ts +0 -12
  184. package/dist/components/ticketResale/index.d.ts +0 -12
  185. package/dist/components/ticketResaleModal/index.d.ts +0 -19
  186. package/dist/components/ticketsContainer/AccessCodeSection.d.ts +0 -7
  187. package/dist/components/ticketsContainer/InfoIcon.d.ts +0 -5
  188. package/dist/components/ticketsContainer/PromoCodeSection.d.ts +0 -15
  189. package/dist/components/ticketsContainer/ReferralLogic.d.ts +0 -5
  190. package/dist/components/ticketsContainer/TicketRow.d.ts +0 -13
  191. package/dist/components/ticketsContainer/TicketsSection.d.ts +0 -20
  192. package/dist/components/ticketsContainer/TimeSlotTicketRow.d.ts +0 -19
  193. package/dist/components/ticketsContainer/TimeSlotsSection.d.ts +0 -25
  194. package/dist/components/ticketsContainer/index.d.ts +0 -93
  195. package/dist/components/ticketsContainer/utils.d.ts +0 -13
  196. package/dist/components/timerWidget/index.d.ts +0 -16
  197. package/dist/components/waitingList/index.d.ts +0 -9
  198. package/dist/constants/index.d.ts +0 -7
  199. package/dist/env.d.ts +0 -16
  200. package/dist/hoc/CustomFields/index.d.ts +0 -3
  201. package/dist/hoc/index.d.ts +0 -1
  202. package/dist/hooks/index.d.ts +0 -1
  203. package/dist/hooks/useCookieListener.d.ts +0 -1
  204. package/dist/hooks/useEventListener.d.ts +0 -1
  205. package/dist/hooks/useLocalStorageListener.d.ts +0 -1
  206. package/dist/hooks/useOnline.d.ts +0 -1
  207. package/dist/hooks/usePixel.d.ts +0 -6
  208. package/dist/images/Polygon.png +0 -0
  209. package/dist/images/cross.svg +0 -44
  210. package/dist/images/done.svg +0 -3
  211. package/dist/images/edit.svg +0 -10
  212. package/dist/images/email.svg +0 -1
  213. package/dist/images/instagram.svg +0 -5
  214. package/dist/images/logo-ttf.png +0 -0
  215. package/dist/images/spotify.svg +0 -6
  216. package/dist/images/user.svg +0 -1
  217. package/dist/images/xmark.svg +0 -92
  218. package/dist/normalizers/index.d.ts +0 -4
  219. package/dist/tf-checkout-react.cjs.development.js +0 -16149
  220. package/dist/tf-checkout-react.cjs.development.js.map +0 -1
  221. package/dist/tf-checkout-react.cjs.production.min.js +0 -2
  222. package/dist/tf-checkout-react.cjs.production.min.js.map +0 -1
  223. package/dist/tf-checkout-react.esm.js +0 -16116
  224. package/dist/tf-checkout-react.esm.js.map +0 -1
  225. package/dist/tf-checkout-styles.css +0 -1
  226. package/dist/types/add_on.d.ts +0 -8
  227. package/dist/types/billing-info-data.d.ts +0 -27
  228. package/dist/types/checkoutPageConfigs.d.ts +0 -13
  229. package/dist/types/index.d.ts +0 -6
  230. package/dist/types/order-data.d.ts +0 -15
  231. package/dist/types/payment-field.d.ts +0 -6
  232. package/dist/types/payment-plan-configuration.d.ts +0 -18
  233. package/dist/types/referral-promotion.d.ts +0 -6
  234. package/dist/types/verification.d.ts +0 -12
  235. package/dist/utils/adaptStripeErrors.d.ts +0 -8
  236. package/dist/utils/auth.d.ts +0 -21
  237. package/dist/utils/cookies.d.ts +0 -3
  238. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +0 -23
  239. package/dist/utils/createMarkup.d.ts +0 -3
  240. package/dist/utils/customFields.d.ts +0 -35
  241. package/dist/utils/downloadPDF.d.ts +0 -1
  242. package/dist/utils/form.d.ts +0 -3
  243. package/dist/utils/formikErrorFocus.d.ts +0 -2
  244. package/dist/utils/getDomain.d.ts +0 -1
  245. package/dist/utils/getImage.d.ts +0 -1
  246. package/dist/utils/getQueryVariable.d.ts +0 -1
  247. package/dist/utils/htmlNodeFromString.d.ts +0 -1
  248. package/dist/utils/index.d.ts +0 -15
  249. package/dist/utils/isBrowser.d.ts +0 -1
  250. package/dist/utils/isValidNumber.d.ts +0 -1
  251. package/dist/utils/jsonUtils.d.ts +0 -1
  252. package/dist/utils/replaceVarInString.d.ts +0 -1
  253. package/dist/utils/setConfigs.d.ts +0 -11
  254. package/dist/utils/showZero.d.ts +0 -1
  255. package/dist/validators/index.d.ts +0 -8
  256. package/src/adapters/customFields.ts +0 -85
  257. package/src/adapters/index.ts +0 -1
  258. package/src/api/auth.ts +0 -88
  259. package/src/api/cart.ts +0 -28
  260. package/src/api/checkout.ts +0 -28
  261. package/src/api/common.ts +0 -190
  262. package/src/api/guestTicketDelegation.ts +0 -79
  263. package/src/api/index.ts +0 -346
  264. package/src/api/interceptors.ts +0 -77
  265. package/src/api/orders.ts +0 -30
  266. package/src/api/payment.ts +0 -77
  267. package/src/api/preRegistrationComplete.ts +0 -37
  268. package/src/api/publicRequest.ts +0 -47
  269. package/src/api/resale.ts +0 -28
  270. package/src/assets/images/Polygon.png +0 -0
  271. package/src/assets/images/cross.svg +0 -44
  272. package/src/assets/images/done.svg +0 -3
  273. package/src/assets/images/edit.svg +0 -10
  274. package/src/assets/images/email.svg +0 -1
  275. package/src/assets/images/instagram.svg +0 -5
  276. package/src/assets/images/logo-ttf.png +0 -0
  277. package/src/assets/images/spotify.svg +0 -6
  278. package/src/assets/images/user.svg +0 -1
  279. package/src/assets/images/xmark.svg +0 -92
  280. package/src/components/account-settings/index.tsx +0 -161
  281. package/src/components/account-settings/style.css +0 -200
  282. package/src/components/addonsContainer/AddonComponent.tsx +0 -204
  283. package/src/components/addonsContainer/SimpleAddonsContainer.tsx +0 -459
  284. package/src/components/addonsContainer/adapters/index.tsx +0 -62
  285. package/src/components/addonsContainer/index.tsx +0 -353
  286. package/src/components/addonsContainer/normalizers/index.ts +0 -5
  287. package/src/components/addonsContainer/useAddons.ts +0 -248
  288. package/src/components/addonsContainer/utils/index.tsx +0 -231
  289. package/src/components/billing-info-container/hooks/index.ts +0 -3
  290. package/src/components/billing-info-container/hooks/usePaymentContext.ts +0 -22
  291. package/src/components/billing-info-container/hooks/usePaymentRedirect.ts +0 -145
  292. package/src/components/billing-info-container/hooks/useStripePayment.ts +0 -119
  293. package/src/components/billing-info-container/index.tsx +0 -1695
  294. package/src/components/billing-info-container/style.css +0 -150
  295. package/src/components/billing-info-container/utils.tsx +0 -413
  296. package/src/components/common/Checkbox.tsx +0 -51
  297. package/src/components/common/CheckboxField/index.tsx +0 -41
  298. package/src/components/common/CopyField.tsx +0 -53
  299. package/src/components/common/CopyMessageModal.tsx +0 -34
  300. package/src/components/common/CustomField.tsx +0 -168
  301. package/src/components/common/DatePickerField.tsx +0 -126
  302. package/src/components/common/FieldSection/index.tsx +0 -141
  303. package/src/components/common/FieldSection/utils/index.tsx +0 -92
  304. package/src/components/common/FormikPhoneNumberField.tsx +0 -51
  305. package/src/components/common/Loader.tsx +0 -8
  306. package/src/components/common/ModalComponent/index.tsx +0 -68
  307. package/src/components/common/NativeSelectFeild/index.tsx +0 -86
  308. package/src/components/common/PhoneNumberField.tsx +0 -117
  309. package/src/components/common/PoweredBy.tsx +0 -15
  310. package/src/components/common/RadioField.tsx +0 -36
  311. package/src/components/common/RadioGroupField/index.tsx +0 -76
  312. package/src/components/common/RedirectModal.tsx +0 -43
  313. package/src/components/common/SelectField/index.tsx +0 -104
  314. package/src/components/common/SnackbarAlert.tsx +0 -52
  315. package/src/components/common/index.tsx +0 -11
  316. package/src/components/common/socials.tsx +0 -33
  317. package/src/components/confirmModal/index.tsx +0 -60
  318. package/src/components/confirmationContainer/config.ts +0 -79
  319. package/src/components/confirmationContainer/index.tsx +0 -349
  320. package/src/components/confirmationContainer/social-buttons.tsx +0 -149
  321. package/src/components/confirmationContainer/style.css +0 -206
  322. package/src/components/countdown/index.tsx +0 -100
  323. package/src/components/countdown/style.css +0 -10
  324. package/src/components/delegationsContainer/IssueComponent.tsx +0 -156
  325. package/src/components/delegationsContainer/IssueTicketForm.tsx +0 -109
  326. package/src/components/delegationsContainer/TicketsAssignedTable.tsx +0 -55
  327. package/src/components/delegationsContainer/TicketsAvailableTable.tsx +0 -54
  328. package/src/components/delegationsContainer/index.tsx +0 -83
  329. package/src/components/forgotPasswordModal/index.tsx +0 -138
  330. package/src/components/forgotPasswordModal/style.css +0 -47
  331. package/src/components/idVerificationContainer/VerificationPendingModal.tsx +0 -47
  332. package/src/components/idVerificationContainer/constants.ts +0 -27
  333. package/src/components/idVerificationContainer/index.tsx +0 -323
  334. package/src/components/index.ts +0 -12
  335. package/src/components/loginForm/index.tsx +0 -202
  336. package/src/components/loginModal/SignUpForm.tsx +0 -329
  337. package/src/components/loginModal/constants.ts +0 -46
  338. package/src/components/loginModal/index.tsx +0 -263
  339. package/src/components/loginModal/style.css +0 -116
  340. package/src/components/myTicketsContainer/index.tsx +0 -228
  341. package/src/components/myTicketsContainer/row.tsx +0 -46
  342. package/src/components/myTicketsContainer/style.css +0 -40
  343. package/src/components/myTicketsContainer/tableConfig.tsx +0 -80
  344. package/src/components/myTicketsContainer/types.d.ts +0 -41
  345. package/src/components/orderDetailsContainer/CustomFieldsForm.tsx +0 -75
  346. package/src/components/orderDetailsContainer/TicketHolderCustomFields.tsx +0 -100
  347. package/src/components/orderDetailsContainer/index.tsx +0 -586
  348. package/src/components/orderDetailsContainer/style.css +0 -77
  349. package/src/components/orderDetailsContainer/ticketsTable.tsx +0 -246
  350. package/src/components/orderDetailsContainer/utils/index.tsx +0 -55
  351. package/src/components/paymentContainer/OrderDetails.tsx +0 -277
  352. package/src/components/paymentContainer/PaymentPlanSection.tsx +0 -169
  353. package/src/components/paymentContainer/handlePayment.ts +0 -86
  354. package/src/components/paymentContainer/index.tsx +0 -643
  355. package/src/components/paymentContainer/style.css +0 -196
  356. package/src/components/preRegistration/FieldsSection.tsx +0 -150
  357. package/src/components/preRegistration/Influancers.tsx +0 -34
  358. package/src/components/preRegistration/PreRegistrationComplete.tsx +0 -186
  359. package/src/components/preRegistration/PreRegistrationInformations.tsx +0 -60
  360. package/src/components/preRegistration/Prewards.tsx +0 -41
  361. package/src/components/preRegistration/ShareOptions.tsx +0 -77
  362. package/src/components/preRegistration/constants.tsx +0 -169
  363. package/src/components/preRegistration/index.tsx +0 -330
  364. package/src/components/preRegistration/style.css +0 -3
  365. package/src/components/preRegistration/utils.ts +0 -163
  366. package/src/components/registerForm/adapters/index.tsx +0 -10
  367. package/src/components/registerForm/constants.tsx +0 -98
  368. package/src/components/registerForm/index.tsx +0 -188
  369. package/src/components/registerModal/index.tsx +0 -154
  370. package/src/components/registerModal/style.css +0 -18
  371. package/src/components/resetPasswordContainer/index.tsx +0 -102
  372. package/src/components/resetPasswordContainer/style.css +0 -36
  373. package/src/components/rsvpContainer/index.tsx +0 -126
  374. package/src/components/seatMapContainer/SeatMapComponent.tsx +0 -77
  375. package/src/components/seatMapContainer/TicketsSection.tsx +0 -286
  376. package/src/components/seatMapContainer/addToCart.ts +0 -66
  377. package/src/components/seatMapContainer/index.tsx +0 -443
  378. package/src/components/seatMapContainer/utils.ts +0 -133
  379. package/src/components/signupModal/index.tsx +0 -178
  380. package/src/components/signupModal/style.css +0 -58
  381. package/src/components/ticketResale/index.tsx +0 -86
  382. package/src/components/ticketResaleModal/index.tsx +0 -224
  383. package/src/components/ticketResaleModal/style.css +0 -28
  384. package/src/components/ticketsContainer/AccessCodeSection.tsx +0 -50
  385. package/src/components/ticketsContainer/InfoIcon.tsx +0 -35
  386. package/src/components/ticketsContainer/PromoCodeSection.tsx +0 -116
  387. package/src/components/ticketsContainer/ReferralLogic.tsx +0 -33
  388. package/src/components/ticketsContainer/TicketRow.tsx +0 -107
  389. package/src/components/ticketsContainer/TicketsSection.tsx +0 -350
  390. package/src/components/ticketsContainer/TimeSlotTicketRow.tsx +0 -243
  391. package/src/components/ticketsContainer/TimeSlotsSection.tsx +0 -194
  392. package/src/components/ticketsContainer/index.tsx +0 -986
  393. package/src/components/ticketsContainer/style.css +0 -178
  394. package/src/components/ticketsContainer/utils.ts +0 -35
  395. package/src/components/timerWidget/index.tsx +0 -97
  396. package/src/components/timerWidget/style.css +0 -35
  397. package/src/components/waitingList/index.tsx +0 -190
  398. package/src/components/waitingList/style.css +0 -27
  399. package/src/constants/index.ts +0 -3
  400. package/src/env.ts +0 -29
  401. package/src/hoc/CustomFields/index.tsx +0 -85
  402. package/src/hoc/index.ts +0 -1
  403. package/src/hooks/index.ts +0 -1
  404. package/src/hooks/useCookieListener.ts +0 -32
  405. package/src/hooks/useEventListener.ts +0 -32
  406. package/src/hooks/useLocalStorageListener.ts +0 -32
  407. package/src/hooks/useOnline.ts +0 -21
  408. package/src/hooks/usePixel.ts +0 -88
  409. package/src/normalizers/index.ts +0 -49
  410. package/src/types/add_on.ts +0 -8
  411. package/src/types/api/auth.d.ts +0 -63
  412. package/src/types/api/axiosResponse.d.ts +0 -6
  413. package/src/types/api/cart.d.ts +0 -73
  414. package/src/types/api/checkout.d.ts +0 -92
  415. package/src/types/api/common.d.ts +0 -153
  416. package/src/types/api/guestTicketDelegation.d.ts +0 -18
  417. package/src/types/api/orders.d.ts +0 -116
  418. package/src/types/api/payment.d.ts +0 -180
  419. package/src/types/api/preRegistration.d.ts +0 -11
  420. package/src/types/api/preRegistrationComplete.d.ts +0 -95
  421. package/src/types/api/ticketResale.d.ts +0 -13
  422. package/src/types/billing-info-data.ts +0 -37
  423. package/src/types/checkoutPageConfigs.ts +0 -13
  424. package/src/types/formFields.d.ts +0 -29
  425. package/src/types/index.ts +0 -6
  426. package/src/types/order-data.ts +0 -16
  427. package/src/types/payment-field.ts +0 -7
  428. package/src/types/payment-plan-configuration.ts +0 -19
  429. package/src/types/pre-registration-complete.d.ts +0 -47
  430. package/src/types/referral-promotion.ts +0 -7
  431. package/src/types/seatMap.d.ts +0 -159
  432. package/src/types/verification.ts +0 -12
  433. package/src/utils/adaptStripeErrors.ts +0 -26
  434. package/src/utils/auth.ts +0 -45
  435. package/src/utils/cookies.ts +0 -73
  436. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +0 -81
  437. package/src/utils/createMarkup.ts +0 -1
  438. package/src/utils/customFields.ts +0 -80
  439. package/src/utils/downloadPDF.tsx +0 -42
  440. package/src/utils/form.ts +0 -34
  441. package/src/utils/formikErrorFocus.ts +0 -24
  442. package/src/utils/getDomain.ts +0 -21
  443. package/src/utils/getImage.ts +0 -14
  444. package/src/utils/getQueryVariable.ts +0 -13
  445. package/src/utils/htmlNodeFromString.ts +0 -6
  446. package/src/utils/index.ts +0 -15
  447. package/src/utils/isBrowser.ts +0 -2
  448. package/src/utils/isValidNumber.ts +0 -8
  449. package/src/utils/jsonUtils.ts +0 -8
  450. package/src/utils/replaceVarInString.ts +0 -9
  451. package/src/utils/setConfigs.ts +0 -24
  452. package/src/utils/showZero.tsx +0 -10
  453. package/src/validators/index.ts +0 -61
@@ -0,0 +1,285 @@
1
+ /* ============================ Tickets section ============================ */
2
+ .tf-checkout-tickets__loading {
3
+ display: grid;
4
+ min-height: 160px;
5
+ place-items: center;
6
+ color: var(--tf-checkout-muted);
7
+ }
8
+
9
+ .tf-checkout-tickets__loading-spinner {
10
+ width: 36px;
11
+ height: 36px;
12
+ border-width: 3px;
13
+ }
14
+
15
+ .tf-checkout-tickets.tf-checkout-card {
16
+ padding: 0;
17
+ border: 0;
18
+ border-radius: 0;
19
+ background: transparent;
20
+ box-shadow: none;
21
+ }
22
+ .tf-checkout-tickets__row {
23
+ display: flex;
24
+ align-items: center;
25
+ gap: 20px;
26
+ min-height: 78px;
27
+ padding: 11px 0;
28
+ border: 0;
29
+ }
30
+ .tf-checkout-tickets__info {
31
+ flex: 1;
32
+ min-width: 0;
33
+ }
34
+ .tf-checkout-tickets__name {
35
+ display: flex;
36
+ align-items: baseline;
37
+ gap: var(--tf-checkout-space-2);
38
+ font-weight: 700;
39
+ font-size: 14px;
40
+ line-height: 1.25;
41
+ }
42
+ .tf-checkout-tickets__description-toggle {
43
+ appearance: none;
44
+ border: 0;
45
+ padding: 0;
46
+ color: var(--tf-checkout-accent);
47
+ background: transparent;
48
+ cursor: pointer;
49
+ font: inherit;
50
+ font-size: 12px;
51
+ font-weight: 600;
52
+ }
53
+ .tf-checkout-tickets__description {
54
+ margin: calc(-1 * var(--tf-checkout-space-2)) 0 var(--tf-checkout-space-3);
55
+ color: var(--tf-checkout-muted);
56
+ font-size: 13px;
57
+ line-height: 1.5;
58
+ }
59
+ .tf-checkout-tickets__description > :first-child {
60
+ margin-top: 0;
61
+ }
62
+ .tf-checkout-tickets__description > :last-child {
63
+ margin-bottom: 0;
64
+ }
65
+ /* Price block — bold amount, an optional struck original, a muted "(… with
66
+ fees)" sub-line, and a deposit tag for tables. Stacked like the old checkout. */
67
+ .tf-checkout-tickets__price {
68
+ margin-top: 5px;
69
+ display: flex;
70
+ flex-direction: column;
71
+ gap: 1px;
72
+ }
73
+ .tf-checkout-tickets__old {
74
+ font-size: 13px;
75
+ color: var(--tf-checkout-muted);
76
+ text-decoration: line-through;
77
+ }
78
+ .tf-checkout-tickets__amount {
79
+ font-size: 17px;
80
+ line-height: 1.15;
81
+ font-weight: 800;
82
+ color: var(--tf-checkout-text);
83
+ }
84
+ .tf-checkout-tickets__amount--free {
85
+ color: var(--tf-checkout-text);
86
+ letter-spacing: 0.02em;
87
+ }
88
+ .tf-checkout-tickets__fees {
89
+ font-size: 14px;
90
+ line-height: 1.3;
91
+ color: var(--tf-checkout-text);
92
+ }
93
+ .tf-checkout-tickets__deposit {
94
+ margin-top: 2px;
95
+ font-size: 16px;
96
+ font-weight: 800;
97
+ letter-spacing: 0.03em;
98
+ color: var(--tf-checkout-text);
99
+ }
100
+ .tf-checkout-tickets__soldout {
101
+ font-size: 15px;
102
+ font-weight: 400;
103
+ color: var(--tf-checkout-text);
104
+ text-align: right;
105
+ white-space: nowrap;
106
+ }
107
+ /* "Tables" divider — groups table types below the regular tickets. */
108
+ .tf-checkout-tickets__group {
109
+ margin: 14px 0 8px;
110
+ padding: 12px 16px;
111
+ border: 0;
112
+ border-radius: 4px;
113
+ background: var(--tf-checkout-surface-muted);
114
+ color: var(--tf-checkout-muted);
115
+ font-size: 15px;
116
+ font-weight: 500;
117
+ letter-spacing: 0;
118
+ text-transform: uppercase;
119
+ text-align: center;
120
+ }
121
+ /* Time-slot session heading */
122
+ .tf-checkout-tickets__slot-time {
123
+ margin: var(--tf-checkout-space-3) 0 2px;
124
+ font-size: 13px;
125
+ font-weight: 700;
126
+ letter-spacing: 0.02em;
127
+ color: var(--tf-checkout-accent);
128
+ }
129
+ /* Promo / access code */
130
+ .tf-checkout-tickets__promo {
131
+ margin: 18px 0;
132
+ }
133
+ /* Promo/access toggle — a full-width secondary button, like the old checkout's
134
+ "Got a promo code?" bar (not a bare text link). */
135
+ .tf-checkout-tickets__promo-toggle {
136
+ display: block;
137
+ width: 100%;
138
+ padding: 12px 16px;
139
+ border: 0;
140
+ border-radius: 0;
141
+ background: var(--tf-checkout-text);
142
+ color: var(--tf-checkout-surface);
143
+ font: inherit;
144
+ font-size: 16px;
145
+ font-weight: 400;
146
+ text-align: center;
147
+ cursor: pointer;
148
+ transition: border-color 0.12s, background 0.12s;
149
+ }
150
+ .tf-checkout-tickets__promo-toggle:hover {
151
+ background: color-mix(in srgb, var(--tf-checkout-text) 78%, var(--tf-checkout-surface));
152
+ }
153
+ .tf-checkout-tickets__wl-toggle {
154
+ border: 0;
155
+ background: transparent;
156
+ color: var(--tf-checkout-accent);
157
+ font: inherit;
158
+ font-weight: 600;
159
+ cursor: pointer;
160
+ padding: 4px 0;
161
+ }
162
+ /* Waiting list */
163
+ .tf-checkout-tickets__wl {
164
+ margin: var(--tf-checkout-space-2) 0 var(--tf-checkout-space-3);
165
+ padding: var(--tf-checkout-space-3);
166
+ border-radius: var(--tf-checkout-radius-control);
167
+ background: var(--tf-checkout-surface-muted);
168
+ }
169
+ .tf-checkout-tickets__wl-done {
170
+ color: var(--tf-checkout-success);
171
+ }
172
+ /* Compact quantity dropdown (tickets + add-ons). */
173
+ .tf-checkout-qty {
174
+ width: 70px;
175
+ height: 45px;
176
+ padding: 6px 12px;
177
+ font: inherit;
178
+ font-size: 18px;
179
+ font-weight: 700;
180
+ color: var(--tf-checkout-text);
181
+ background: var(--tf-checkout-surface);
182
+ border: 2px solid var(--tf-checkout-text);
183
+ border-radius: 0;
184
+ cursor: pointer;
185
+ }
186
+ .tf-checkout-qty:focus {
187
+ outline: none;
188
+ border-color: var(--tf-checkout-accent);
189
+ }
190
+ /* Quantity cell — the dropdown, prefixed with a "Guests" label on table types
191
+ (whose quantity is a guest count, not a ticket count). */
192
+ .tf-checkout-tickets__qty {
193
+ display: flex;
194
+ flex-direction: column;
195
+ align-items: flex-end;
196
+ gap: 4px;
197
+ }
198
+ .tf-checkout-tickets__guests {
199
+ font-size: 14px;
200
+ font-weight: 400;
201
+ letter-spacing: 0;
202
+ text-transform: uppercase;
203
+ color: var(--tf-checkout-text);
204
+ }
205
+
206
+ .tf-checkout-tickets > .tf-checkout-button {
207
+ min-height: 48px;
208
+ margin-top: 18px;
209
+ border-radius: 4px;
210
+ font-size: 16px;
211
+ font-weight: 600;
212
+ }
213
+
214
+ @media (max-width: 520px) {
215
+ .tf-checkout-tickets__row {
216
+ gap: 12px;
217
+ }
218
+ .tf-checkout-qty {
219
+ width: 64px;
220
+ }
221
+ }
222
+
223
+ /* ============================ Timer banner ============================ */
224
+ .tf-checkout-timerbanner {
225
+ position: fixed;
226
+ top: 125px;
227
+ right: 15px;
228
+ z-index: 9;
229
+ box-sizing: border-box;
230
+ width: min(300px, calc(100vw - 30px));
231
+ padding: 25px 42px 15px 50px;
232
+ overflow: hidden;
233
+ border-radius: 20px;
234
+ background: #000;
235
+ box-shadow: 0 0 12px rgb(0 0 0 / 38%);
236
+ color: #fff;
237
+ font-size: 13px;
238
+ line-height: 1.4;
239
+ pointer-events: auto;
240
+ }
241
+ .tf-checkout-timerbanner::before {
242
+ content: '!';
243
+ position: absolute;
244
+ top: 50%;
245
+ left: 17px;
246
+ display: grid;
247
+ width: 20px;
248
+ height: 20px;
249
+ place-items: center;
250
+ border: 2px solid currentColor;
251
+ border-radius: 50%;
252
+ font-size: 13px;
253
+ font-weight: 800;
254
+ line-height: 1;
255
+ transform: translateY(-50%);
256
+ }
257
+ .tf-checkout-timerbanner__msg {
258
+ display: block;
259
+ }
260
+ .tf-checkout-timerbanner__clock {
261
+ display: block;
262
+ margin-top: 10px;
263
+ font-weight: 700;
264
+ font-variant-numeric: tabular-nums;
265
+ }
266
+ .tf-checkout-timerbanner--urgent {
267
+ color: #fff;
268
+ }
269
+ .tf-checkout-timerbanner__close {
270
+ position: absolute;
271
+ top: 15px;
272
+ right: 15px;
273
+ border: 0;
274
+ background: transparent;
275
+ color: #fff;
276
+ cursor: pointer;
277
+ font: inherit;
278
+ font-size: 18px;
279
+ line-height: 1;
280
+ opacity: 0.75;
281
+ padding: 1px 3px;
282
+ }
283
+ .tf-checkout-timerbanner__close:hover {
284
+ opacity: 1;
285
+ }
@@ -0,0 +1,258 @@
1
+ /* ============================ ID verification ============================ */
2
+ .tf-checkout-idverify__done {
3
+ color: var(--tf-checkout-success);
4
+ font-weight: 600;
5
+ }
6
+
7
+ .tf-checkout-confirmation-page__loading {
8
+ padding: 32px;
9
+ text-align: center;
10
+ color: var(--tf-checkout-muted);
11
+ display: grid;
12
+ min-height: 220px;
13
+ place-items: center;
14
+ }
15
+
16
+ .tf-checkout-loader--page {
17
+ width: 40px;
18
+ height: 40px;
19
+ border-width: 4px;
20
+ }
21
+
22
+ .tf-checkout-section-loader {
23
+ display: grid;
24
+ min-height: 96px;
25
+ color: var(--tf-checkout-muted);
26
+ place-items: center;
27
+ }
28
+
29
+ .tf-checkout-confirmation-page {
30
+ gap: 24px;
31
+ }
32
+
33
+ .tf-checkout-confirmation-page__header {
34
+ display: grid;
35
+ gap: 12px;
36
+ text-align: center;
37
+ }
38
+
39
+ .tf-checkout-confirmation-page__event {
40
+ display: grid;
41
+ gap: 4px;
42
+ padding: 16px 0;
43
+ border-top: 1px solid var(--tf-checkout-border);
44
+ border-bottom: 1px solid var(--tf-checkout-border);
45
+ }
46
+
47
+ .tf-checkout-confirmation-page__custom {
48
+ line-height: 1.5;
49
+ }
50
+
51
+ .tf-checkout-confirmation-page__rewards {
52
+ display: grid;
53
+ gap: 8px;
54
+ }
55
+
56
+ .tf-checkout-confirmation-page__rewards > div {
57
+ display: flex;
58
+ justify-content: space-between;
59
+ gap: 16px;
60
+ }
61
+
62
+ /* Legacy-compatible confirmation structure. White-labels that already style
63
+ * these selectors keep their proven UX; unstyled consumers get the same clean
64
+ * two-column confirmation and referral layout by default. */
65
+ .tf-checkout .confirmation-page {
66
+ width: 100%;
67
+ max-width: 960px;
68
+ margin: 20px auto 30px;
69
+ padding: 20px;
70
+ overflow: hidden;
71
+ color: var(--tf-checkout-text);
72
+ font-family: var(--tf-checkout-font);
73
+ font-weight: 300;
74
+ text-align: center;
75
+ }
76
+ .tf-checkout .confirmation-page .header-container {
77
+ display: flex;
78
+ width: 100%;
79
+ padding: 16px;
80
+ border-radius: var(--tf-checkout-radius-card);
81
+ }
82
+ .tf-checkout .confirmation-page .header-product-text {
83
+ width: 100%;
84
+ text-align: left;
85
+ }
86
+ .tf-checkout .confirmation-page .title {
87
+ margin: 8px 0;
88
+ font-size: 22px;
89
+ font-weight: 600;
90
+ }
91
+ .tf-checkout .confirmation-page .event-details {
92
+ margin: 20px 0;
93
+ padding: 15px 0;
94
+ border-top: 1px solid var(--tf-checkout-border);
95
+ border-bottom: 1px solid var(--tf-checkout-border);
96
+ }
97
+ .tf-checkout .confirmation-page .event-title {
98
+ margin-bottom: 10px;
99
+ font-size: 18px;
100
+ font-weight: 700;
101
+ }
102
+ .tf-checkout .confirmation-page .event-date,
103
+ .tf-checkout .confirmation-page .event-location {
104
+ color: var(--tf-checkout-muted);
105
+ font-size: 15px;
106
+ font-weight: 500;
107
+ line-height: 1.5;
108
+ }
109
+ .tf-checkout .confirmation-page .share-message-section {
110
+ line-height: 20px;
111
+ }
112
+ .tf-checkout .confirmation-page .main,
113
+ .tf-checkout .confirmation-page .helper {
114
+ display: block;
115
+ }
116
+ .tf-checkout .confirmation-page .helper {
117
+ margin-top: 4px;
118
+ }
119
+ .tf-checkout .confirmation-page .order-details-button-container {
120
+ margin: 10px;
121
+ }
122
+ .tf-checkout .confirmation-page .view-order-button {
123
+ display: inline-block;
124
+ min-width: 150px;
125
+ padding: 10px 18px;
126
+ border-radius: var(--tf-checkout-radius-control);
127
+ background: var(--tf-checkout-text);
128
+ color: var(--tf-checkout-surface);
129
+ font-weight: 600;
130
+ line-height: 1.75;
131
+ text-decoration: none;
132
+ }
133
+ .tf-checkout .confirmation-page .referral_text_image_section {
134
+ width: 55%;
135
+ margin-top: 28px;
136
+ text-align: left;
137
+ }
138
+ .tf-checkout .confirmation-page .referral_title_text {
139
+ font-size: 31px;
140
+ font-weight: 500;
141
+ }
142
+ .tf-checkout .confirmation-page .strong-text {
143
+ font-weight: 700;
144
+ }
145
+ .tf-checkout .confirmation-page .referral_text {
146
+ margin: 8px 0;
147
+ color: var(--tf-checkout-muted);
148
+ }
149
+ .tf-checkout .confirmation-page .invitation_section {
150
+ float: left;
151
+ width: 55%;
152
+ text-align: left;
153
+ }
154
+ .tf-checkout .confirmation-page .invitation_title {
155
+ margin: 17px 32px 21px;
156
+ font-size: 22px;
157
+ font-weight: 600;
158
+ text-align: center;
159
+ }
160
+ .tf-checkout .confirmation-page .share-by-link {
161
+ display: flex;
162
+ align-items: center;
163
+ }
164
+ .tf-checkout .confirmation-page .share-by-link.label {
165
+ color: var(--tf-checkout-muted);
166
+ font-size: 16px;
167
+ font-weight: 400;
168
+ }
169
+ .tf-checkout .confirmation-page .share-btn-inner {
170
+ display: flex;
171
+ width: 71%;
172
+ margin-left: 12px;
173
+ }
174
+ .tf-checkout .confirmation-page .share-input {
175
+ width: 100%;
176
+ min-width: 180px;
177
+ height: 40px;
178
+ padding: 0 10px;
179
+ border: 1px dashed var(--tf-checkout-border);
180
+ background: var(--tf-checkout-surface);
181
+ color: var(--tf-checkout-muted);
182
+ font: inherit;
183
+ }
184
+ .tf-checkout .confirmation-page .share-by-link-copy-icon {
185
+ height: 40px;
186
+ padding: 0 22px;
187
+ border: 0;
188
+ border-radius: 0 4px 4px 0;
189
+ background: #3bb599;
190
+ color: #fff;
191
+ font: inherit;
192
+ font-weight: 600;
193
+ cursor: pointer;
194
+ }
195
+ .tf-checkout .confirmation-page .pricing-section {
196
+ float: right;
197
+ width: 36%;
198
+ margin-top: -157px;
199
+ padding-bottom: 30px;
200
+ text-align: right;
201
+ }
202
+ .tf-checkout .confirmation-page .pricing-section_wrapper {
203
+ display: flex;
204
+ align-items: center;
205
+ margin-bottom: 4px;
206
+ font-size: 16px;
207
+ text-align: left;
208
+ }
209
+ .tf-checkout .confirmation-page .pricing-section_label {
210
+ max-width: 145px;
211
+ margin-right: 14px;
212
+ font-size: 16px;
213
+ font-weight: 600;
214
+ }
215
+ .tf-checkout .confirmation-page .pricing-section_sublabel {
216
+ font-size: 13px;
217
+ font-weight: 400;
218
+ }
219
+ .tf-checkout .confirmation-page .pricing-section_price {
220
+ margin-left: auto;
221
+ font-size: 20px;
222
+ font-weight: 700;
223
+ }
224
+ .tf-checkout .confirmation-page .social-media-btns {
225
+ display: flex;
226
+ gap: 4px;
227
+ margin: 13px 0;
228
+ }
229
+ .tf-checkout .confirmation-page .social-media-sharing {
230
+ padding: 9px 18px;
231
+ border-radius: 5px;
232
+ background: #1877f2;
233
+ color: #fff;
234
+ font-size: 12px;
235
+ text-decoration: none;
236
+ }
237
+ .tf-checkout .confirmation-page .social-media-sharing:nth-child(2) {
238
+ background: #25d366;
239
+ }
240
+ @media (max-width: 700px) {
241
+ .tf-checkout .confirmation-page .referral_text_image_section,
242
+ .tf-checkout .confirmation-page .invitation_section,
243
+ .tf-checkout .confirmation-page .pricing-section {
244
+ float: none;
245
+ width: 100%;
246
+ }
247
+ .tf-checkout .confirmation-page .pricing-section {
248
+ margin-top: 5px;
249
+ }
250
+ .tf-checkout .confirmation-page .share-by-link {
251
+ flex-direction: column;
252
+ align-items: stretch;
253
+ }
254
+ .tf-checkout .confirmation-page .share-btn-inner {
255
+ width: 100%;
256
+ margin-left: 0;
257
+ }
258
+ }
package/src/typings.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  declare module '*.css' {
2
- const content: {[className: string]: string}
2
+ const content: { [className: string]: string }
3
3
  export default content
4
- }
4
+ }
@@ -0,0 +1,38 @@
1
+ import React, { forwardRef, type ButtonHTMLAttributes } from 'react'
2
+
3
+ import { cx } from './cx'
4
+ import { Loader } from './Loader'
5
+
6
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
7
+ /** Visual weight. */
8
+ variant?: 'primary' | 'secondary' | 'ghost'
9
+ /** Stretch to full width. */
10
+ block?: boolean
11
+ /** Show a spinner and disable. */
12
+ loading?: boolean
13
+ }
14
+
15
+ /** The one shared button — token-driven variants, loading state, `className`. */
16
+ export const Button = forwardRef<HTMLButtonElement, ButtonProps>(
17
+ (
18
+ { variant = 'primary', block, loading, className, disabled, children, ...rest },
19
+ ref
20
+ ) => (
21
+ <button
22
+ ref={ref}
23
+ type="button"
24
+ className={cx(
25
+ 'tf-checkout-button',
26
+ `tf-checkout-button--${variant}`,
27
+ block && 'tf-checkout-button--block',
28
+ className
29
+ )}
30
+ disabled={disabled || loading}
31
+ {...rest}
32
+ >
33
+ {loading && <Loader />}
34
+ {children}
35
+ </button>
36
+ )
37
+ )
38
+ Button.displayName = 'Button'
@@ -0,0 +1,54 @@
1
+ /**
2
+ * `Card` + `SectionHeader` — the shell every checkout section shares: a rounded
3
+ * surface with a numbered step badge, a title, and optional right-aligned pills
4
+ * (totals, a countdown, a loading chip). Keeps all sections visually identical
5
+ * without each re-authoring the header markup.
6
+ */
7
+ import React, { type FC, type HTMLAttributes, type ReactNode } from 'react'
8
+
9
+ import { cx } from './cx'
10
+
11
+ export interface CardProps extends HTMLAttributes<HTMLDivElement> {
12
+ className?: string
13
+ }
14
+
15
+ /** A themed surface (`.tf-checkout-card`). Spreads through any div props. */
16
+ export const Card: FC<CardProps> = ({ className, children, ...rest }) => (
17
+ <div className={cx('tf-checkout-card', className)} {...rest}>
18
+ {children}
19
+ </div>
20
+ )
21
+
22
+ export interface SectionHeaderProps {
23
+ /** Badge content — a step number, an icon, `✓`. Omit for no badge. */
24
+ step?: ReactNode
25
+ title: ReactNode
26
+ /** Right-aligned chips (total, timer, "loading…"). */
27
+ pills?: ReactNode
28
+ className?: string
29
+ }
30
+
31
+ export const SectionHeader: FC<SectionHeaderProps> = ({
32
+ step,
33
+ title,
34
+ pills,
35
+ className,
36
+ }) => (
37
+ <div className={cx('tf-checkout-card__header', className)}>
38
+ {step != null && <span className="tf-checkout-card__step">{step}</span>}
39
+ <span className="tf-checkout-card__title">{title}</span>
40
+ {pills != null && <span className="tf-checkout-card__pills">{pills}</span>}
41
+ </div>
42
+ )
43
+
44
+ /** A single right-aligned chip for a `SectionHeader`'s `pills`. */
45
+ export const Pill: FC<{ muted?: boolean; children: ReactNode }> = ({
46
+ muted,
47
+ children,
48
+ }) => (
49
+ <span
50
+ className={cx('tf-checkout-card__pill', muted && 'tf-checkout-card__pill--muted')}
51
+ >
52
+ {children}
53
+ </span>
54
+ )