tf-checkout-react 1.6.6 → 1.7.2

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 (137) hide show
  1. package/README.md +401 -59
  2. package/dist/adapters/customFields.d.ts +1 -0
  3. package/dist/api/checkout.d.ts +2 -0
  4. package/dist/api/common.d.ts +1 -0
  5. package/dist/api/index.d.ts +2 -0
  6. package/dist/api/preRegistrationComplete.d.ts +1 -1
  7. package/dist/components/addonsContainer/AddonComponent.d.ts +6 -1
  8. package/dist/components/addonsContainer/SimpleAddonsContainer.d.ts +17 -0
  9. package/dist/components/addonsContainer/index.d.ts +6 -1
  10. package/dist/components/billing-info-container/hooks/index.d.ts +3 -0
  11. package/dist/components/billing-info-container/hooks/usePaymentContext.d.ts +5 -0
  12. package/dist/components/billing-info-container/hooks/usePaymentRedirect.d.ts +14 -0
  13. package/dist/components/billing-info-container/hooks/useStripePayment.d.ts +18 -0
  14. package/dist/components/billing-info-container/index.d.ts +13 -2
  15. package/dist/components/billing-info-container/utils.d.ts +26 -1
  16. package/dist/components/common/DatePickerField.d.ts +7 -1
  17. package/dist/components/common/PhoneNumberField.d.ts +1 -1
  18. package/dist/components/confirmationContainer/index.d.ts +4 -1
  19. package/dist/components/countdown/index.d.ts +1 -1
  20. package/dist/components/forgotPasswordModal/index.d.ts +2 -1
  21. package/dist/components/myTicketsContainer/index.d.ts +3 -2
  22. package/dist/components/orderDetailsContainer/index.d.ts +8 -1
  23. package/dist/components/paymentContainer/OrderDetails.d.ts +9 -0
  24. package/dist/components/paymentContainer/handlePayment.d.ts +15 -0
  25. package/dist/components/paymentContainer/index.d.ts +12 -6
  26. package/dist/components/preRegistration/FieldsSection.d.ts +7 -1
  27. package/dist/components/preRegistration/PreRegistrationComplete.d.ts +8 -0
  28. package/dist/components/preRegistration/constants.d.ts +2 -2
  29. package/dist/components/preRegistration/index.d.ts +6 -0
  30. package/dist/components/resetPasswordContainer/index.d.ts +2 -2
  31. package/dist/components/ticketsContainer/InfoIcon.d.ts +5 -0
  32. package/dist/components/ticketsContainer/TicketsSection.d.ts +3 -2
  33. package/dist/components/ticketsContainer/TimeSlotsSection.d.ts +25 -0
  34. package/dist/components/ticketsContainer/index.d.ts +29 -5
  35. package/dist/components/timerWidget/index.d.ts +2 -1
  36. package/dist/constants/index.d.ts +5 -0
  37. package/dist/index.d.ts +4 -1
  38. package/dist/tf-checkout-react.cjs.development.js +11284 -9565
  39. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  40. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  41. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  42. package/dist/tf-checkout-react.esm.js +11293 -9577
  43. package/dist/tf-checkout-react.esm.js.map +1 -1
  44. package/dist/tf-checkout-styles.css +1 -1
  45. package/dist/types/add_on.d.ts +1 -0
  46. package/dist/types/checkoutPageConfigs.d.ts +1 -1
  47. package/dist/types/order-data.d.ts +3 -1
  48. package/dist/utils/auth.d.ts +8 -0
  49. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +1 -0
  50. package/dist/utils/customFields.d.ts +11 -0
  51. package/dist/utils/getDomain.d.ts +1 -1
  52. package/dist/utils/index.d.ts +1 -1
  53. package/dist/utils/setConfigs.d.ts +1 -0
  54. package/package.json +14 -8
  55. package/src/adapters/customFields.ts +7 -1
  56. package/src/api/auth.ts +2 -1
  57. package/src/api/checkout.ts +9 -4
  58. package/src/api/common.ts +49 -2
  59. package/src/api/index.ts +1 -0
  60. package/src/api/interceptors.ts +7 -23
  61. package/src/api/preRegistrationComplete.ts +1 -1
  62. package/src/api/publicRequest.ts +10 -0
  63. package/src/components/addonsContainer/AddonComponent.tsx +96 -11
  64. package/src/components/addonsContainer/SimpleAddonsContainer.tsx +420 -0
  65. package/src/components/addonsContainer/index.tsx +198 -47
  66. package/src/components/billing-info-container/hooks/index.ts +3 -0
  67. package/src/components/billing-info-container/hooks/usePaymentContext.ts +22 -0
  68. package/src/components/billing-info-container/hooks/usePaymentRedirect.ts +147 -0
  69. package/src/components/billing-info-container/hooks/useStripePayment.ts +121 -0
  70. package/src/components/billing-info-container/index.tsx +859 -418
  71. package/src/components/billing-info-container/{utils.ts → utils.tsx} +124 -1
  72. package/src/components/common/CheckboxField/index.tsx +1 -1
  73. package/src/components/common/CustomField.tsx +39 -3
  74. package/src/components/common/DatePickerField.tsx +25 -10
  75. package/src/components/common/PhoneNumberField.tsx +4 -2
  76. package/src/components/common/SnackbarAlert.tsx +32 -34
  77. package/src/components/confirmationContainer/config.ts +3 -3
  78. package/src/components/confirmationContainer/index.tsx +20 -1
  79. package/src/components/confirmationContainer/social-buttons.tsx +5 -3
  80. package/src/components/confirmationContainer/style.css +9 -5
  81. package/src/components/countdown/index.tsx +22 -22
  82. package/src/components/delegationsContainer/IssueComponent.tsx +2 -1
  83. package/src/components/forgotPasswordModal/index.tsx +44 -13
  84. package/src/components/loginForm/index.tsx +1 -1
  85. package/src/components/loginModal/index.tsx +19 -27
  86. package/src/components/loginModal/style.css +3 -1
  87. package/src/components/myTicketsContainer/index.tsx +13 -9
  88. package/src/components/orderDetailsContainer/index.tsx +206 -174
  89. package/src/components/paymentContainer/OrderDetails.tsx +257 -0
  90. package/src/components/paymentContainer/handlePayment.ts +86 -0
  91. package/src/components/paymentContainer/index.tsx +299 -259
  92. package/src/components/paymentContainer/style.css +141 -0
  93. package/src/components/preRegistration/FieldsSection.tsx +8 -0
  94. package/src/components/preRegistration/PreRegistrationComplete.tsx +138 -118
  95. package/src/components/preRegistration/PreRegistrationInformations.tsx +21 -15
  96. package/src/components/preRegistration/constants.tsx +10 -4
  97. package/src/components/preRegistration/index.tsx +233 -179
  98. package/src/components/preRegistration/style.css +3 -0
  99. package/src/components/registerForm/constants.tsx +3 -1
  100. package/src/components/registerForm/index.tsx +3 -3
  101. package/src/components/registerModal/index.tsx +47 -72
  102. package/src/components/resetPasswordContainer/index.tsx +20 -14
  103. package/src/components/seatMapContainer/TicketsSection.tsx +2 -2
  104. package/src/components/signupModal/index.tsx +13 -6
  105. package/src/components/ticketResale/index.tsx +7 -0
  106. package/src/components/ticketsContainer/InfoIcon.tsx +35 -0
  107. package/src/components/ticketsContainer/PromoCodeSection.tsx +34 -28
  108. package/src/components/ticketsContainer/TicketRow.tsx +1 -1
  109. package/src/components/ticketsContainer/TicketsSection.tsx +189 -57
  110. package/src/components/ticketsContainer/TimeSlotsSection.tsx +120 -0
  111. package/src/components/ticketsContainer/index.tsx +268 -106
  112. package/src/components/timerWidget/index.tsx +15 -3
  113. package/src/components/timerWidget/style.css +2 -1
  114. package/src/constants/index.ts +2 -0
  115. package/src/env.ts +14 -6
  116. package/src/hoc/CustomFields/index.tsx +9 -1
  117. package/src/index.ts +7 -2
  118. package/src/types/add_on.ts +1 -0
  119. package/src/types/api/cart.d.ts +8 -0
  120. package/src/types/api/checkout.d.ts +58 -7
  121. package/src/types/api/common.d.ts +30 -0
  122. package/src/types/api/orders.d.ts +19 -3
  123. package/src/types/api/payment.d.ts +6 -2
  124. package/src/types/api/preRegistrationComplete.d.ts +2 -2
  125. package/src/types/checkoutPageConfigs.ts +1 -1
  126. package/src/types/order-data.ts +3 -1
  127. package/src/types/pre-registration-complete.d.ts +6 -1
  128. package/src/utils/auth.ts +32 -0
  129. package/src/utils/cookies.ts +42 -11
  130. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +3 -1
  131. package/src/utils/customFields.ts +22 -0
  132. package/src/utils/getDomain.ts +10 -4
  133. package/src/utils/index.ts +1 -1
  134. package/src/utils/setConfigs.ts +3 -1
  135. package/dist/components/stripePayment/index.d.ts +0 -24
  136. package/src/components/stripePayment/index.tsx +0 -281
  137. package/src/components/stripePayment/style.css +0 -60
@@ -1 +1 @@
1
- .button-container{display:flex;justify-content:center;padding:20px}.billing-info-container{margin:0 auto;max-width:800px}.billing-info-container .is-half{width:49%}.billing-info-container p{color:#000}.billing-info-container .main-header{font-size:2rem;font-weight:600}.billing-info-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.billing-info-container__singleField{margin-top:15px}button{margin-top:10px}.account-actions-block{color:#182026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif;margin-top:10px}.MuiButtonBase-root.MuiButton-root,.MuiButtonBase-root.MuiButton-root:hover,.login-register-button{background-color:#212529;border:#f28051;border-radius:5px;color:#fff;cursor:pointer;display:block;font-family:Inter-Bold;font-size:26px;font-weight:700;line-height:1.15;margin-top:10px;min-height:46px;outline:none;overflow:hidden;padding:14px 12px 12px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;width:49%}.logo-image-container{margin-top:5px;text-align:center;width:49%}.logo-image-container img{height:30px}.login-block{align-items:center;display:flex;flex-direction:column}.login-register-button:hover{background-color:#505050!important;border-color:#505050!important}.login-register-block{display:flex;justify-content:space-between}@media only screen and (max-width:820px){.billing-info-container{width:90%}.billing-info-container .main-header{font-size:1.5rem}}.email-checking{margin-bottom:15px}.forgot-password-modal .forgot-password-container{margin:0 auto;max-width:800px}.forgot-password-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.forgot-password-modal .forgot-password-container__singleField{margin-top:15px}.forgot-password-modal .forgot-password-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.forgot-password-modal .forgot-password-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.forgot-password-modal .login{margin-top:10px;text-align:center}.forgot-password-modal .login span{cursor:pointer}.forgot-password-modal .login span:hover{text-decoration:underline}.forgot-password-modal button[disabled]{cursor:unset;opacity:.7}.modal-title{align-items:center;background-color:#fff;display:flex;font-family:Inter;font-size:18px;font-weight:700;height:49px;line-height:22px;padding-left:25px;position:relative}.login-modal-body{padding:15px 25px}.login-modal-body input{background:#fff!important}.login-modal-body__email,.login-modal-body__password{margin-bottom:20px}.login-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin:10px 0;outline:none;padding:10px;width:100%}.login-action-button button:hover{background-color:#505050;border-color:#505050}.server_auth__error{color:red;font-family:Inter;font-size:12px;font-style:normal;padding-left:25px;padding-top:15px}.info-text-for-login{font-size:14px;margin-bottom:4px;padding-left:10px}.forgot-password{text-align:center}.forgot-password span{cursor:pointer}.forgot-password span:hover{text-decoration:underline}.signup-modal .signup-container{margin:0 auto;max-width:800px}.signup-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.signup-modal .signup-container .is-half{width:49%}.signup-modal .signup-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.signup-modal .signup-container__singleField{margin-top:15px}.signup-modal button{margin-top:10px}.signup-modal .signup-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.signup-modal .signup-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.signup-modal .login{margin-top:10px;text-align:center}.signup-modal .login span{cursor:pointer}.signup-modal .login span:hover{text-decoration:underline}.signup-modal button[disabled]{cursor:unset;opacity:.7}.timer{background-color:#000;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=);background-position:15px;background-repeat:no-repeat;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;margin:0 0 6px;max-width:300px;overflow:hidden;padding:15px 15px 15px 50px;pointer-events:auto;position:absolute;right:15px;width:300px}.timer .close-icon{cursor:pointer;display:flex;position:absolute;right:10px;top:10px}.timer .countdown{font-weight:700;margin-top:10px}.payment_page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.payment_page .order_info_section{padding:15px 0}.payment_page .order_info_section .order_info_block{padding-bottom:15px;padding-top:15px}.payment_page .order_info_section .order_info_block .field-underline{border-bottom:1px solid #000;padding-bottom:15px}.payment_page .order_info_section .order_info_block .order_info_title{font-size:14px;font-weight:700;padding-bottom:3px}.payment_page .order_info_section .order_info_block .order_info_text{font-size:16px;line-height:1.15;outline:none}.payment_page .MuiBox-root{margin-left:auto;margin-right:auto;padding:20px;text-align:center}.payment_page .payment_info_label{padding:20px 0;text-align:center}.payment_page .payment_form{color:#fff;padding:20px}.payment_page .payment_form input,.payment_page .payment_form label{color:#fff}.payment_page .payment_button{padding-top:20px;text-align:center}.payment_page .payment_plan .payment_plan_block .payment_plan_text{padding-bottom:10px}.payment_page .payment_plan .payment_plan_highlight{font-weight:700}.card_form_inner{background:#232323;border-radius:8px;margin:0 auto 20px;min-width:325px;padding:15px;width:50%}.card_form_inner .card_label_text{color:#fff}.card_form_inner .StripeElement{margin:5px 0 10px}.card_label_text{color:#fff}.payment_button{padding-top:15px;text-align:center}.payment_button button{background-color:#212529;border-radius:8px;color:#fff;cursor:pointer;font-size:26px;padding:15px 30px;transition:opacity .5s;width:200px}.payment_button button:hover{opacity:.7}.disabled-payment-button button{opacity:.3;pointer-events:none;user-select:none}.checkout_error_block{color:#e53935;font-weight:600;padding:15px 0}.zip_element p{margin-bottom:0}.zip_element input{background-color:#000;border:none;color:#fff;font-size:18px;margin-top:5px;outline:none;width:100%}.confirmation-page{margin:0 auto;max-width:1024px}.confirmation-page button{margin-top:inherit}.confirmation-page .strong-text{font-weight:700}.confirmation-page .title{color:#333;font-size:24px;font-weight:600}.confirmation-page .share-message-section{background:#dff0d8;border:1px solid #d6e9c6;border-radius:5px;color:#2c7221;display:flex;flex-direction:column;margin:20px 0;padding:15px}.confirmation-page .main{font-size:15px;font-weight:700}.confirmation-page .helper,.confirmation-page .main{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.confirmation-page .helper{font-size:14px;margin-top:5px}.confirmation-page .referral_text_image_section{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.confirmation-page .referral_text_section{margin:10px}.confirmation-page .referral_title_text{color:#f08057;font-size:28px;padding-bottom:10px}.confirmation-page .referral_text{font-size:18px}.confirmation-page .referral_text_image_section img{margin:10px;max-width:200px}.confirmation-page .share_wrapper{column-gap:5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:10px}.confirmation-page .invitation_title{font-size:22px;padding-bottom:12px;padding-top:12px}.confirmation-page .share_section{display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 -10px}.confirmation-page .invitation_section{flex:1 1;padding:0 5px}.confirmation-page .share_buttons{display:grid;flex-wrap:wrap;margin:0 -7px}.confirmation-page .convenient_buttons{margin-top:10px}.confirmation-page .social-media-btns{grid-gap:5px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.confirmation-page .sharing-btn{background-color:#000;flex:1 1;min-width:130px}.confirmation-page .sharing-btn a{text-decoration:none}.confirmation-page .share-by-link{background:#000;color:#fff;padding:10px}.confirmation-page .share-by-link.label{margin:0;padding:0;text-align:left}.confirmation-page .share-btn-inner{align-items:center;background-color:#000;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-flex;padding:0;text-align:left;width:100%}.confirmation-page .share-input{background-color:#fff;border:none;outline:none;padding:5px;text-align:left;width:300px}.confirmation-page .share-text{display:block;font-size:13px;font-weight:600;padding-top:8px;width:100%}.confirmation-page .pricing-section_wrapper{background:#e3e3e3;border:1px solid #dcdcdc;display:grid;grid-template-columns:1fr 1fr;margin:10px 0;padding:15px}.confirmation-page .pricing-section_label{font-weight:600}.confirmation-page .pricing-section_sublabel{font-size:14px;font-weight:100}.confirmation-page .pricing-section_price{font-weight:600;text-align:right}.confirmation-page .share-by-link-copy-icon{align-items:center;background-color:#32325d;border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;margin-left:8px;padding:10px;transition:all .15s ease}.confirmation-page .share-by-link-copy-icon:hover{background-color:#505050}.confirmation-page .share-by-link-copy-icon img{width:14px}.confirmation-page .social-media-sharing{background-color:#000;color:#fff;cursor:pointer;padding:10px;text-align:center}.confirmation-page .share-icon{border-radius:4px;display:inline-flex}@media only screen and (max-width:1050px){.confirmation-page .share_wrapper{column-gap:0;display:grid;grid-template-columns:unset;margin:15px}}@media only screen and (max-width:480px){.confirmation-page .social-media-btns{grid-template-columns:unset}.confirmation-page .share-input{width:250px}}body{margin:0;padding:0}.event-detail__tier{background-color:#fff;padding:17px 35px 20px}.event-detail__tier-name{color:#000;font-family:Inter-Bold;font-family:Bebas Neue;font-size:.85rem;font-weight:700;letter-spacing:.2em;line-height:1.3;margin-bottom:8px;margin-top:16px;padding-right:20%;text-transform:uppercase}.event-detail__tier-status{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin-top:8px;width:100%}.event-detail__tier-status.ticket-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;font-weight:700;letter-spacing:.2em;line-height:1.5;margin-bottom:10px;width:200px}.event-tickets-container{align-items:center;display:flex;justify-content:space-between}.event-detail__tier-status.ticket-button.true{background-color:#c1c3c6;border-color:#afb0b1}.event-detail__tier-price{color:#000;font-family:Inter-Bold;font-size:1.5rem;line-height:1;text-align:center}.event-detail__tier-price p{margin:0}.event-detail__tier-price .fees{font-size:14px;margin-top:4px;text-align:left}.event-detail__tier-price .old-price{color:red;font-size:1.3rem;margin-bottom:5px;text-decoration:line-through}.alert-info{align-items:center;background-color:#d9edf7;border:1px solid #bce8f1;border-radius:4px;color:#3a87ad;display:flex;font-size:1em;justify-content:center;margin:0 35px;padding:8px 15px;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.alert-info svg{margin-right:4px}.event-detail__tier-state{color:#30bc9d;font-family:Inter-Bold;font-size:.75rem;font-weight:300;line-height:1;text-align:right;text-transform:uppercase}.event-detail__tier-state .ticket-not-started-message{color:#000;text-align:left;text-transform:none;width:50px}.promo-code-block input{font-size:14px;padding:1px 8px}.book-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;display:block;font-size:26px;font-weight:700;height:50px;letter-spacing:.2em;line-height:1.5;margin:25px auto 10px;text-align:center;width:100%}.book-button:hover{background-color:#505050;border-color:#505050}.loader-container{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.get-tickets-paper::-webkit-scrollbar{width:5px}.get-tickets-paper::-webkit-scrollbar-track{background:#f1f1f1}.get-tickets-paper::-webkit-scrollbar-thumb{background:#888}.get-tickets-paper::-webkit-scrollbar-thumb:hover{background:#555}.get-tickets .get-tickets__selectbox{width:100%}.disabled{pointer-events:none;user-select:none}.hidden{display:none}.event-closed-message{font-family:Bebas Neue;letter-spacing:.5px}.countdown p{margin:0}.countdown .title{font-weight:700}.countdown .message{font-weight:700;margin-top:20px}.waiting-list{padding:17px 35px 20px}.waiting-list .field-item{margin-bottom:30px}.waiting-list .waiting-list-button{width:100%!important}.waiting-list .waiting-list-button:hover{background-color:#505050}.waiting-list .success-message{margin-bottom:15px;text-align:center}.waiting-list .success-message p{margin:0}.waiting-list .no-tickets-text{font-weight:700;text-align:center}.waiting-list .added-success-message{font-size:22px;margin-bottom:10px}.my-ticket{padding:30px}.my-ticket-table{margin-top:30px}.my-ticket .loading{background-color:rgba(0,0,0,.4);height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%}.my-ticket .event-info,.my-ticket .loading{align-items:center;display:flex}.my-ticket thead th{font-weight:700}.my-ticket .event-info img{margin-right:10px;width:50px}.my-ticket .order-details-button{background-color:#32325d;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 14px;transition:all .15s ease}.my-ticket .order-details-button:hover{background-color:#505050}.order-details{margin:0 auto;max-width:940px}.order-details .loading{align-items:center;background-color:rgba(0,0,0,.4);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1400}.order-details .layout-title{font-size:24px;font-weight:400}.order-details .sub-title{font-size:18px;font-weight:400;margin:10px 0}.order-details .order-summary-box{margin-top:30px}.order-details .total-row td,.order-details th{color:#fff;font-weight:700}.order-details .tickets-box{margin-top:30px}.order-details .ticket-add-on-table{background-color:#fcf8e3}.order-details .action-button{background-color:#212529;border:1px solid #fff;border-radius:0;color:#fff;cursor:pointer;display:block;font-family:Bebas Neue;font-size:14px;font-weight:400;line-height:normal;margin-bottom:20px;margin-top:20px;min-height:auto;outline:none;overflow:hidden;padding:12px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:uppercase;width:max-content}.order-details .download-button:hover{background-color:#505050}.order-details .personal-link{padding:20px 0}.order-details .total-referrer{padding:0 0 20px}.resale-modal .field-box{display:flex;margin-bottom:10px}.resale-modal .field-box .icon{align-items:center;display:flex;height:56px;justify-content:center;min-width:44px}.resale-modal .field-box .empty-box{min-width:44px}.resale-modal .resale-action-button button{background-color:#212529;color:#fff;cursor:pointer;width:100%}.resale-modal .resale-action-button button[disabled]{opacity:.7}.resale-modal .resale-action-button button:hover{background-color:#505050;border-color:#505050;width:100%}.reset-password{margin:0 auto;max-width:300px;padding:14px}.reset-password .title{font-size:20px;font-weight:700}.reset-password .field-item{margin-top:14px}.reset-password .action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:14px;outline:none;padding:10px;text-transform:uppercase;width:100%}.reset-password .action-button button:hover:enabled{background-color:#505050;border-color:#505050}.reset-password .action-button button[disabled]{cursor:unset;opacity:.7}
1
+ .button-container{display:flex;justify-content:center;padding:20px}.billing-info-container{margin:0 auto;max-width:800px}.billing-info-container .is-half{width:49%}.billing-info-container p{color:#000}.billing-info-container .main-header{font-size:2rem;font-weight:600}.billing-info-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.billing-info-container__singleField{margin-top:15px}button{margin-top:10px}.account-actions-block{color:#182026;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif;margin-top:10px}.MuiButtonBase-root.MuiButton-root,.MuiButtonBase-root.MuiButton-root:hover,.login-register-button{background-color:#212529;border:#f28051;border-radius:5px;color:#fff;cursor:pointer;display:block;font-family:Inter-Bold;font-size:26px;font-weight:700;line-height:1.15;margin-top:10px;min-height:46px;outline:none;overflow:hidden;padding:14px 12px 12px;position:relative;text-align:center;text-overflow:ellipsis;text-transform:uppercase;width:49%}.logo-image-container{margin-top:5px;text-align:center;width:49%}.logo-image-container img{height:30px}.login-block{align-items:center;display:flex;flex-direction:column}.login-register-button:hover{background-color:#505050!important;border-color:#505050!important}.login-register-block{display:flex;justify-content:space-between}@media only screen and (max-width:820px){.billing-info-container{width:90%}.billing-info-container .main-header{font-size:1.5rem}}.email-checking{margin-bottom:15px}.timer{background-color:#000;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=);background-position:15px;background-repeat:no-repeat;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;color:#fff;margin:0 0 6px;max-width:300px;overflow:hidden;padding:15px 15px 15px 50px;pointer-events:auto;position:fixed;right:15px;width:300px;z-index:9}.timer .close-icon{cursor:pointer;display:flex;position:absolute;right:10px;top:10px}.timer .countdown{font-weight:700;margin-top:10px}.forgot-password-modal .forgot-password-container{margin:0 auto;max-width:800px}.forgot-password-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.forgot-password-modal .forgot-password-container__singleField{margin-top:15px}.forgot-password-modal .forgot-password-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.forgot-password-modal .forgot-password-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.forgot-password-modal .login{margin-top:10px;text-align:center}.forgot-password-modal .login span{cursor:pointer}.forgot-password-modal .login span:hover{text-decoration:underline}.forgot-password-modal button[disabled]{cursor:unset;opacity:.7}.modal-title{align-items:center;background-color:#fff;display:flex;font-family:Inter;font-size:18px;font-weight:700;height:49px;line-height:22px;padding-left:25px;position:relative}.login-modal-body{padding:15px 25px}.login-modal-body input{background:#fff!important}.login-modal-body__email,.login-modal-body__password{margin-bottom:20px}.login-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin:10px 0;outline:none;padding:10px;width:100%}.login-action-button button:hover{background-color:#505050;border-color:#505050}.login-logo-tff{height:60px}.server_auth__error{color:red;font-family:Inter;font-size:12px;font-style:normal;padding-left:25px;padding-top:15px}.info-text-for-login{font-size:14px;margin-bottom:4px;padding-left:10px}.forgot-password{text-align:center}.forgot-password span{cursor:pointer}.forgot-password span:hover{text-decoration:underline}.payment_page{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.payment_page .order_info_section{padding:15px 0}.payment_page .order_info_section .order_info_block{padding-bottom:15px;padding-top:15px}.payment_page .order_info_section .order_info_block .field-underline{border-bottom:1px solid #000;padding-bottom:15px}.payment_page .order_info_section .order_info_block .order_info_title{font-size:14px;font-weight:700;padding-bottom:3px}.payment_page .order_info_section .order_info_block .order_info_text{font-size:16px;line-height:1.15;outline:none}.payment_page .MuiBox-root{margin-left:auto;margin-right:auto;padding:20px;text-align:center}.payment_page .payment_info_label{padding:20px 0;text-align:center}.payment_page .payment_form{color:#fff;padding:20px}.payment_page .payment_form input,.payment_page .payment_form label{color:#fff}.payment_page .payment_button{padding-top:20px;text-align:center}.payment_page .payment_method_selector{display:flex;gap:12px;justify-content:center;margin-bottom:20px}.payment_page .payment_method_option{background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s ease}.payment_page .payment_method_option:hover{border-color:#999}.payment_page .payment_method_option.selected{background-color:#e3f2fd;border-color:#1976d2;color:#1976d2}.payment_page .payment_plan .payment_plan_block .payment_plan_text{padding-bottom:10px}.payment_page .payment_plan .payment_plan_highlight{font-weight:700}.mobile-order-summary{display:none}@media (max-width:767px){.mobile-order-summary{background-color:#f8f8f8;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);display:block;margin-bottom:15px}.mobile-order-summary-content{align-items:flex-start;cursor:pointer;display:flex;padding:15px}.mobile-order-info-container:after{content:"⌃";display:inline-block;float:right;font-size:15px;font-weight:900;left:6px;position:relative;top:-2px;transform:rotate(180deg);transition:transform .25s,top .25s}.mobile-order-info-container.open:after{top:2px;transform:rotate(0deg)}.mobile-order-info-container.order-info-container-left{text-align:left}.mobile-order-info-container.order-info-container-right{text-align:right}.mobile-order-icon{color:#1976d2;margin-right:15px;padding-top:2px}.mobile-order-info{flex:1}.mobile-order-text{color:#666;font-size:14px;margin-bottom:4px}.mobile-order-total{color:#333;font-size:18px;font-weight:700;margin-bottom:8px}.mobile-order-timer{align-items:center;border-top:1px dashed #ddd;display:flex;margin-top:8px;padding-top:8px}.mobile-timer-icon{color:#f44336;margin-right:8px}.mobile-timer-text{color:#666;font-size:13px}.mobile-timer-countdown{color:#f44336;font-weight:700}.mobile-order-expand{color:#666;padding-top:2px}.order_info_section.collapsed{display:none!important}.order_info_section.expanded{display:grid!important;margin-top:10px}}.signup-modal .signup-container{margin:0 auto;max-width:800px}.signup-modal .title{background-color:#fff;font-family:Inter;font-size:18px;font-weight:700}.signup-modal .signup-container .is-half{width:49%}.signup-modal .signup-container__twoFields{display:flex;justify-content:space-between;margin-top:15px}.signup-modal .signup-container__singleField{margin-top:15px}.signup-modal button{margin-top:10px}.signup-modal .signup-action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:10px;outline:none;padding:10px;text-transform:uppercase;width:100%}.signup-modal .signup-action-button button:hover:enabled{background-color:#505050;border-color:#505050}.signup-modal .login{margin-top:10px;text-align:center}.signup-modal .login span{cursor:pointer}.signup-modal .login span:hover{text-decoration:underline}.signup-modal button[disabled]{cursor:unset;opacity:.7}.confirmation-page{margin:0 auto;max-width:1024px}.confirmation-page button{margin-top:inherit}.confirmation-page .strong-text{font-weight:700}.confirmation-page .title{color:#333;font-size:24px;font-weight:600}.confirmation-page .share-message-section{background:#dff0d8;border:1px solid #d6e9c6;border-radius:5px;color:#2c7221;display:flex;flex-direction:column;margin:20px 0;padding:15px}.confirmation-page .main{font-size:15px;font-weight:700}.confirmation-page .helper,.confirmation-page .main{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,Icons16,sans-serif}.confirmation-page .helper{font-size:14px;margin-top:5px}.confirmation-page .referral_text_image_section{align-items:center;display:flex;flex-wrap:wrap;justify-content:space-between;margin:20px 0}.confirmation-page .referral_text_section{margin:10px}.confirmation-page .referral_title_text{color:#f08057;font-size:28px;padding-bottom:10px}.confirmation-page .referral_text{font-size:18px}.confirmation-page .referral_text_image_section img{margin:10px;max-width:200px}.confirmation-page .share_wrapper{column-gap:5rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));margin:10px}.confirmation-page .invitation_title{font-size:22px;padding-bottom:12px;padding-top:12px}.confirmation-page .share_section{display:flex;flex-wrap:wrap;justify-content:space-between;margin:0 -10px}.confirmation-page .invitation_section{flex:1 1;padding:0 5px}.confirmation-page .share_buttons{display:grid;flex-wrap:wrap;margin:0 -7px}.confirmation-page .convenient_buttons{margin-top:10px}.confirmation-page .social-media-btns{grid-gap:5px;display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.confirmation-page .sharing-btn{background-color:#000;flex:1 1;min-width:130px}.confirmation-page .sharing-btn a{text-decoration:none}.confirmation-page .share-by-link{background:#000;color:#fff;padding:10px}.confirmation-page .share-by-link.label{margin:0;padding:0;text-align:left}.confirmation-page .share-btn-inner{align-items:center;background-color:#000;box-sizing:border-box;color:#fff;cursor:pointer;display:inline-flex;padding:0;text-align:left;width:100%}.confirmation-page .share-input{background-color:#fff;border:none;outline:none;padding:5px;text-align:left;width:300px}.confirmation-page .share-text{display:block;font-size:13px;font-weight:600;padding-top:8px;width:100%}.confirmation-page .pricing-section_wrapper{background:#e3e3e3;border:1px solid #dcdcdc;display:grid;grid-template-columns:1fr 1fr;margin:10px 0;padding:15px}.confirmation-page .pricing-section_label{font-weight:600}.confirmation-page .pricing-section_sublabel{font-size:14px;font-weight:100}.confirmation-page .pricing-section_price{font-weight:600;text-align:right}.confirmation-page .share-by-link-copy-icon{align-items:center;background-color:#32325d;border-radius:4px;color:#fff;cursor:pointer;display:flex;justify-content:center;margin-left:8px;padding:10px;transition:all .15s ease}.confirmation-page .share-by-link-copy-icon:hover{background-color:#505050}.confirmation-page .share-by-link-copy-icon img{width:14px}.confirmation-page .social-media-sharing{background-color:#000;color:#fff;cursor:pointer;padding:10px;text-align:center}.confirmation-page .share-icon{border-radius:4px;display:inline-flex}@media only screen and (max-width:1050px){.confirmation-page .share_wrapper{column-gap:0;display:grid;grid-template-columns:unset;margin:15px}}@media only screen and (max-width:480px){.confirmation-page .social-media-btns{grid-template-columns:unset}.confirmation-page .share-input{width:250px}}.twitter-btn{background-color:#000!important}body{margin:0;padding:0}.event-detail__tier{background-color:#fff;padding:17px 35px 20px}.event-detail__tier-name{color:#000;font-family:Inter-Bold;font-family:Bebas Neue;font-size:.85rem;font-weight:700;letter-spacing:.2em;line-height:1.3;margin-bottom:8px;margin-top:16px;padding-right:20%;text-transform:uppercase}.event-detail__tier-status{align-items:center;display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between;margin-top:8px;width:100%}.event-detail__tier-status.ticket-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;font-weight:700;letter-spacing:.2em;line-height:1.5;margin-bottom:10px;width:200px}.event-tickets-container{align-items:center;display:flex;justify-content:space-between}.event-detail__tier-status.ticket-button.true{background-color:#c1c3c6;border-color:#afb0b1}.event-detail__tier-price{color:#000;font-family:Inter-Bold;font-size:1.5rem;line-height:1;text-align:center}.event-detail__tier-price p{margin:0}.event-detail__tier-price .fees{font-size:14px;margin-top:4px;text-align:left}.event-detail__tier-price .old-price{color:red;font-size:1.3rem;margin-bottom:5px;text-decoration:line-through}.alert-info{align-items:center;background-color:#d9edf7;border:1px solid #bce8f1;border-radius:4px;color:#3a87ad;display:flex;font-size:1em;justify-content:center;margin:0 35px;padding:8px 15px;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.alert-info svg{margin-right:4px}.event-detail__tier-state{color:#30bc9d;font-family:Inter-Bold;font-size:.75rem;font-weight:300;line-height:1;text-align:right;text-transform:uppercase}.event-detail__tier-state .ticket-not-started-message{color:#000;text-align:left;text-transform:none;width:50px}.promo-code-block input{font-size:14px;padding:1px 8px}.book-button{background-color:#212529;border:3px solid #000;border-radius:0;color:#fff;cursor:pointer;display:block;font-size:26px;font-weight:700;height:50px;letter-spacing:.2em;line-height:1.5;margin:25px auto 10px;text-align:center;width:100%}.book-button:hover{background-color:#505050;border-color:#505050}.loader-container{align-items:center;display:flex;height:100%;justify-content:center;width:100%}.get-tickets-paper::-webkit-scrollbar{width:5px}.get-tickets-paper::-webkit-scrollbar-track{background:#f1f1f1}.get-tickets-paper::-webkit-scrollbar-thumb{background:#888}.get-tickets-paper::-webkit-scrollbar-thumb:hover{background:#555}.get-tickets .get-tickets__selectbox{width:100%}.disabled{pointer-events:none;user-select:none}.hidden{display:none}.event-closed-message{font-family:Bebas Neue;letter-spacing:.5px}.countdown p{margin:0}.countdown .title{font-weight:700}.countdown .message{font-weight:700;margin-top:20px}.waiting-list{padding:17px 35px 20px}.waiting-list .field-item{margin-bottom:30px}.waiting-list .waiting-list-button{width:100%!important}.waiting-list .waiting-list-button:hover{background-color:#505050}.waiting-list .success-message{margin-bottom:15px;text-align:center}.waiting-list .success-message p{margin:0}.waiting-list .no-tickets-text{font-weight:700;text-align:center}.waiting-list .added-success-message{font-size:22px;margin-bottom:10px}.preregistration_confirmation_header{margin-bottom:2rem}.my-ticket{padding:30px}.my-ticket-table{margin-top:30px}.my-ticket .loading{background-color:rgba(0,0,0,.4);height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%}.my-ticket .event-info,.my-ticket .loading{align-items:center;display:flex}.my-ticket thead th{font-weight:700}.my-ticket .event-info img{margin-right:10px;width:50px}.my-ticket .order-details-button{background-color:#32325d;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:10px 14px;transition:all .15s ease}.my-ticket .order-details-button:hover{background-color:#505050}.order-details{margin:0 auto;max-width:940px}.order-details .loading{align-items:center;background-color:rgba(0,0,0,.4);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1400}.order-details .layout-title{font-size:24px;font-weight:400}.order-details .sub-title{font-size:18px;font-weight:400;margin:10px 0}.order-details .order-summary-box{margin-top:30px}.order-details .total-row td,.order-details th{color:#fff;font-weight:700}.order-details .tickets-box{margin-top:30px}.order-details .ticket-add-on-table{background-color:#fcf8e3}.order-details .action-button{background-color:#212529;border:1px solid #fff;border-radius:0;color:#fff;cursor:pointer;display:block;font-family:Bebas Neue;font-size:14px;font-weight:400;line-height:normal;margin-bottom:20px;margin-top:20px;min-height:auto;outline:none;overflow:hidden;padding:12px;position:relative;text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:uppercase;width:max-content}.order-details .download-button:hover{background-color:#505050}.order-details .personal-link{padding:20px 0}.order-details .total-referrer{padding:0 0 20px}.resale-modal .field-box{display:flex;margin-bottom:10px}.resale-modal .field-box .icon{align-items:center;display:flex;height:56px;justify-content:center;min-width:44px}.resale-modal .field-box .empty-box{min-width:44px}.resale-modal .resale-action-button button{background-color:#212529;color:#fff;cursor:pointer;width:100%}.resale-modal .resale-action-button button[disabled]{opacity:.7}.resale-modal .resale-action-button button:hover{background-color:#505050;border-color:#505050;width:100%}.reset-password{margin:0 auto;max-width:300px;padding:14px}.reset-password .title{font-size:20px;font-weight:700}.reset-password .field-item{margin-top:14px}.reset-password .action-button button{background-color:#212529;border:none;border-radius:0;color:#fff;cursor:pointer;font-size:26px;font-weight:600;height:45px;line-height:18px;margin-top:14px;outline:none;padding:10px;text-transform:uppercase;width:100%}.reset-password .action-button button:hover:enabled{background-color:#505050;border-color:#505050}.reset-password .action-button button[disabled]{cursor:unset;opacity:.7}
@@ -3,5 +3,6 @@ export interface IAddOn {
3
3
  name: string;
4
4
  groupName: string | null;
5
5
  price: string;
6
+ cost: string;
6
7
  quantity: string | number;
7
8
  }
@@ -2,7 +2,7 @@ export interface ICheckoutPageConfigs {
2
2
  age_required: boolean;
3
3
  event_id: string;
4
4
  has_add_on: boolean;
5
- minimum_age: number | string | null;
5
+ minimum_age?: number | string | null;
6
6
  names_required: boolean;
7
7
  phone_required: boolean;
8
8
  skip_billing_page: boolean;
@@ -2,7 +2,7 @@ import { IAddOn } from './add_on';
2
2
  export interface IOrderData {
3
3
  id: string;
4
4
  product_name: string;
5
- ticketType: string;
5
+ ticketType: string | Array<any>;
6
6
  quantity: string | number;
7
7
  price: string | number;
8
8
  total: string | number;
@@ -10,4 +10,6 @@ export interface IOrderData {
10
10
  guest_count: string | number;
11
11
  pay_now: string | number;
12
12
  add_ons: IAddOn[];
13
+ cost: string | number;
14
+ expires_at?: number;
13
15
  }
@@ -1,3 +1,4 @@
1
+ import { AxiosError } from 'axios';
1
2
  export declare const setLoggedUserData: (data: IProfileData) => {
2
3
  id: string | number;
3
4
  first_name: string;
@@ -11,3 +12,10 @@ export declare const setLoggedUserData: (data: IProfileData) => {
11
12
  state: string | number;
12
13
  zip: string | number;
13
14
  };
15
+ interface LogoutUserParams {
16
+ onLogoutSuccess?: () => void;
17
+ onLogoutError?: (error: AxiosError) => void;
18
+ setIsLogged?: (isLogged: boolean) => void;
19
+ }
20
+ export declare const logoutUser: ({ onLogoutSuccess, onLogoutError, setIsLogged, }: LogoutUserParams) => Promise<void>;
21
+ export {};
@@ -17,6 +17,7 @@ interface IUserCredentialsValues {
17
17
  emailLogged?: string;
18
18
  firstNameLogged?: string;
19
19
  lastNameLogged?: string;
20
+ phoneLogged?: string;
20
21
  }
21
22
  export declare const createCheckoutDataBodyWithDefaultHolder: (ticketsQuantity: number, logedInValues: Record<string, string | undefined>, includeDob?: boolean, userCredentials?: IUserCredentialsValues) => ICheckoutBody;
22
23
  export {};
@@ -21,4 +21,15 @@ export declare const getDataWithCustomFields: (initialData: IBillingInfoData[],
21
21
  uniqueId?: string | undefined;
22
22
  };
23
23
  };
24
+ export declare const getAddOnDataWithCustomFields: (customFields: any) => {
25
+ addOnDataWithCustomFields: never[];
26
+ } | {
27
+ addOnDataWithCustomFields: {
28
+ fields: {
29
+ id: number;
30
+ groupClassname: string;
31
+ groupItems: any[];
32
+ }[];
33
+ };
34
+ };
24
35
  export declare const getFieldsKeys: (customFields: any) => any[];
@@ -1 +1 @@
1
- export declare function getDomain(url: string, subdomain?: string): string;
1
+ export declare function getDomain(url: string, subdomain?: string, publicSuffix?: string): string;
@@ -9,7 +9,7 @@ export { createMarkup } from './createMarkup';
9
9
  export { replaceVarInString } from './replaceVarInString';
10
10
  export { isBrowser } from './isBrowser';
11
11
  export { getFormInitialValues } from './form';
12
- export { setLoggedUserData } from './auth';
12
+ export { setLoggedUserData, logoutUser } from './auth';
13
13
  export { getDataWithCustomFields, getFieldsKeys } from './customFields';
14
14
  export { createElementFromHTML } from './htmlNodeFromString';
15
15
  export { isJson } from './jsonUtils';
@@ -4,6 +4,7 @@ export interface IConfigs {
4
4
  CLIENT_SECRET: string;
5
5
  STRIPE_PUBLISHABLE_KEY: string;
6
6
  X_SOURCE_ORIGIN: string;
7
+ FEES_STYLE: string;
7
8
  [key: string]: string | number;
8
9
  }
9
10
  export declare const CONFIGS: IConfigs;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.6.6",
2
+ "version": "1.7.2",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -18,9 +18,13 @@
18
18
  "prepare": "tsdx build",
19
19
  "size": "size-limit",
20
20
  "analyze": "size-limit --why",
21
- "release:beta": "npm version $(semver $(npm info $(npm info . name) version) -i prerelease --preid beta)",
22
- "release:patch": "npm version $(semver $(npm info $(npm info . name) version) -i patch)",
23
- "release:minor": "npm version $(semver $(npm info $(npm info . name) version) -i minor)",
21
+ "release:beta": "npm version prerelease --preid beta",
22
+ "release:patch": "npm version patch",
23
+ "release:minor": "npm version minor",
24
+ "publish:current": "export $(cat .env | xargs) && npm publish && git push && git push --tags",
25
+ "publish:patch": "export $(cat .env | xargs) && npm version patch && npm publish && git push && git push --tags",
26
+ "publish:minor": "export $(cat .env | xargs) && npm version minor && npm publish && git push && git push --tags",
27
+ "publish:beta": "export $(cat .env | xargs) && npm version prerelease --preid beta && npm publish --tag beta && git push && git push --tags",
24
28
  "start-example": "PORT=3002 parcel example/index.html --dist-dir example-dist --no-cache"
25
29
  },
26
30
  "peerDependencies": {
@@ -84,13 +88,14 @@
84
88
  "@emotion/react": "^11.7.0",
85
89
  "@emotion/styled": "^11.6.0",
86
90
  "@fortawesome/fontawesome-svg-core": "^6.1.1",
91
+ "@mui/icons-material": "^5.18.0",
87
92
  "@mui/material": "^5.2.2",
88
93
  "@mui/private-theming": "^5.11.1",
89
94
  "@mui/styles": "^5.2.2",
90
95
  "@mui/x-date-pickers": "^5.0.1",
91
- "@stripe/react-stripe-js": "^1.6.0",
92
- "@stripe/stripe-js": "^1.21.1",
93
- "axios": "^0.24.0",
96
+ "@stripe/react-stripe-js": "^5.2.0",
97
+ "@stripe/stripe-js": "^8.1.0",
98
+ "axios": "^1.9.0",
94
99
  "clsx": "^1.1.1",
95
100
  "formik": "^2.2.9",
96
101
  "jwt-decode": "^3.1.2",
@@ -105,7 +110,8 @@
105
110
  "react-countdown": "^2.3.2",
106
111
  "react-inlinesvg": "^2.3.0",
107
112
  "react-router-dom": "^6.0.2",
108
- "react-share": "^4.4.0",
113
+ "react-share": "^5.2.2",
114
+ "react-tooltip": "^5.28.0",
109
115
  "rollup-plugin-svg": "^2.0.0",
110
116
  "tf-seat-map-view": "9.4.7-beta.33",
111
117
  "yup": "^0.32.11"
@@ -61,10 +61,12 @@ export const fieldDataAdapter = (field: IGroupItem) => {
61
61
  export const customFieldsDataAdapter = (data: any) => {
62
62
  const adaptedTicketFields: Array<IGroupItem> = []
63
63
  const adaptedOrderFields: Array<IGroupItem> = []
64
+ const adaptedAddOnFields: Array<IGroupItem> = []
64
65
 
65
66
  _forEach(data, field => {
66
67
  const ticketFields = _get(field, 'ticket.group.fields')
67
68
  const orderFields = _get(field, 'order.group.fields')
69
+ const addOnFields = _get(field, 'add-on.group.fields')
68
70
 
69
71
  _forEach(ticketFields, ticketField => {
70
72
  adaptedTicketFields.push(fieldDataAdapter(ticketField))
@@ -73,7 +75,11 @@ export const customFieldsDataAdapter = (data: any) => {
73
75
  _forEach(orderFields, orderField => {
74
76
  adaptedOrderFields.push(fieldDataAdapter(orderField))
75
77
  })
78
+
79
+ _forEach(addOnFields, addOnField => {
80
+ adaptedAddOnFields.push(fieldDataAdapter(addOnField))
81
+ })
76
82
  })
77
83
 
78
- return { ticketsFields: adaptedTicketFields, orderFields: adaptedOrderFields }
84
+ return { ticketsFields: adaptedTicketFields, orderFields: adaptedOrderFields, addOnFields: adaptedAddOnFields }
79
85
  }
package/src/api/auth.ts CHANGED
@@ -27,7 +27,8 @@ export const register = async (data: FormData): Promise<IProfileResponse> => {
27
27
  }
28
28
 
29
29
  export const getProfileData = async (): Promise<IProfileResponse> => {
30
- const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> = await publicRequest.get('/customer/profile/')
30
+ const response: AxiosResponse<IProfileResponse, AxiosRequestConfig> =
31
+ await publicRequest.get('/customer/profile/')
31
32
  return response.data
32
33
  }
33
34
 
@@ -1,5 +1,6 @@
1
1
  import { AxiosRequestConfig, AxiosResponse } from 'axios'
2
2
 
3
+ import { ICheckoutResponse } from '../types/api/checkout'
3
4
  import { publicRequest } from './publicRequest'
4
5
 
5
6
  export const postOnCheckout = async (
@@ -14,10 +15,14 @@ export const postOnCheckout = async (
14
15
  }
15
16
 
16
17
  const response: AxiosResponse<ICheckoutResponse, AxiosRequestConfig> =
17
- await publicRequest.post(
18
- `v1/on-checkout`,
19
- { data }
20
- )
18
+ await publicRequest.post(`v1/on-checkout`, { data })
19
+
20
+ return response.data
21
+ }
22
+
23
+ export const updateCheckout = async (data: any): Promise<ICheckoutResponse> => {
24
+ const response: AxiosResponse<ICheckoutResponse, AxiosRequestConfig> =
25
+ await publicRequest.post(`v1/checkout`, { data })
21
26
 
22
27
  return response.data
23
28
  }
package/src/api/common.ts CHANGED
@@ -9,17 +9,19 @@ export const getEvent = async (
9
9
  pk?: string
10
10
  ): Promise<IEventResponse> => {
11
11
  let referralValue = ''
12
+ let invitationHash
12
13
  if (isBrowser) {
13
14
  const params = new URL(`${window.location}`)
14
15
  const referralId = params.searchParams.get('ttf_r') || ''
15
16
  const referral_key = window.localStorage.getItem('referral_key')
16
17
  const [, referralIdlocal] = (referral_key || '').split('.')
17
- referralValue = referralId || referralIdlocal
18
+ referralValue = referralId || (referralIdlocal ?? '')
19
+ invitationHash = params.searchParams.get('invitation-hash') || null
18
20
  }
19
21
 
20
22
  const response: AxiosResponse<IEventResponse, AxiosRequestConfig> =
21
23
  await publicRequest.get(`v1/event/${id}`, {
22
- params: { pk },
24
+ params: { pk, invitationHash },
23
25
  headers: {
24
26
  ...publicRequest.defaults.headers.common,
25
27
  'Referer-Url': isBrowser ? document.referrer : '',
@@ -89,6 +91,51 @@ export const getTickets = async (
89
91
  return adaptedResponse.data
90
92
  }
91
93
 
94
+ export const getTimeSlotsByDate = async (
95
+ eventId: string | number,
96
+ date: string,
97
+ promoCode?: string,
98
+ pk?: string
99
+ ): Promise<ITimeslotsAdaptedResponse> => {
100
+ const invitationHash = getQueryVariable('invitation-hash')
101
+ const referralId = getQueryVariable('ttf_r')
102
+
103
+ if (referralId) {
104
+ window.localStorage.setItem('promoter_id', referralId)
105
+ }
106
+
107
+ const promoterId = window.localStorage.getItem('promoter_id')
108
+ const params = { pk } as Record<string, string | number | undefined>
109
+
110
+ if (invitationHash) {
111
+ params['invitation-hash'] = invitationHash
112
+ }
113
+
114
+ const headers = publicRequest.defaults.headers.common
115
+
116
+ if (promoterId) {
117
+ headers['Promotion-Event'] = String(eventId)
118
+ headers['Referrer-Id'] = isBrowser ? promoterId : ''
119
+ }
120
+
121
+ if (promoCode) {
122
+ headers['Promotion-Event'] = String(eventId)
123
+ headers['Promotion-Code'] = promoCode
124
+ window.localStorage.removeItem('promoter_id')
125
+ }
126
+
127
+ const response: AxiosResponse<ITimeslotsAdaptedResponse, AxiosRequestConfig> =
128
+ await publicRequest.get(`v1/event/${eventId}/timeslots`, {
129
+ params: {
130
+ date,
131
+ remove_past_slots: true,
132
+ ...params,
133
+ },
134
+ headers,
135
+ })
136
+ return response.data
137
+ }
138
+
92
139
  export const getCountries = async (): Promise<ICountriesResponse> => {
93
140
  const response: AxiosResponse<ICountriesResponse, AxiosRequestConfig> =
94
141
  await publicRequest.get('/countries/list')
package/src/api/index.ts CHANGED
@@ -132,6 +132,7 @@ export interface AttributesConfig {
132
132
  collect_mandatory_instagram: boolean;
133
133
  collect_optional_instagram: boolean;
134
134
  skip_billing_page: boolean;
135
+ cart: ICart[];
135
136
  }
136
137
 
137
138
  export interface ConfigsData {
@@ -1,44 +1,28 @@
1
- import { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios'
1
+ import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios'
2
2
  import _get from 'lodash/get'
3
3
 
4
4
  import { CONFIGS, isBrowser } from '../utils'
5
5
  import { getCookieByName, setCustomCookie } from '../utils/cookies'
6
6
  import { publicRequest } from './publicRequest'
7
7
 
8
- publicRequest.interceptors.request.use((config: AxiosRequestConfig) => {
8
+ publicRequest.interceptors.request.use((config: InternalAxiosRequestConfig) => {
9
9
  const guestToken = isBrowser ? window.localStorage.getItem('auth_guest_token') : null
10
10
  if (guestToken) {
11
- const updatedHeaders = {
12
- ...config.headers,
13
- 'Authorization-Guest': guestToken,
14
- }
15
- config.headers = updatedHeaders
11
+ config.headers['Authorization-Guest'] = guestToken
16
12
  }
17
13
 
18
14
  const xtfCookie = getCookieByName('X-TF-ECOMMERCE')
19
15
  if (xtfCookie) {
20
- const updatedHeaders = {
21
- ...config.headers,
22
- 'X-TF-ECOMMERCE': xtfCookie,
23
- }
24
- config.headers = updatedHeaders
16
+ config.headers['X-TF-ECOMMERCE'] = xtfCookie
25
17
  }
26
18
 
27
19
  const additionalCookiesHeaderValue = isBrowser ? document.cookie ?? '' : ''
28
20
  if (additionalCookiesHeaderValue !== '') {
29
- const updatedHeaders = {
30
- ...config.headers,
31
- 'Additional-Cookies': additionalCookiesHeaderValue,
32
- }
33
- config.headers = updatedHeaders
21
+ config.headers['Additional-Cookies'] = additionalCookiesHeaderValue
34
22
  }
35
23
 
36
24
  if (CONFIGS.X_SOURCE_ORIGIN) {
37
- const updatedHeaders = {
38
- ...config.headers,
39
- 'X-Source-Origin': CONFIGS.X_SOURCE_ORIGIN,
40
- }
41
- config.headers = updatedHeaders
25
+ config.headers['X-Source-Origin'] = CONFIGS.X_SOURCE_ORIGIN
42
26
  }
43
27
 
44
28
  if (CONFIGS.BASE_URL) {
@@ -75,7 +59,7 @@ publicRequest.interceptors.response.use(
75
59
  if (error?.response?.status === 401) {
76
60
  if (isBrowser) {
77
61
  window.localStorage.removeItem('user_data')
78
- const errorType = error?.response?.data?.error
62
+ const errorType = _get(error, 'response.data.error')
79
63
  if (errorType === 'invalid_token') {
80
64
  window.location.href = '/'
81
65
  }
@@ -2,7 +2,7 @@ import { AxiosRequestConfig, AxiosResponse } from 'axios'
2
2
 
3
3
  import { publicRequest } from '../api/publicRequest'
4
4
 
5
- export const getPreRegistrationInfluancers = async (
5
+ export const getPreRegistrationInfluencers = async (
6
6
  data: IInfluancersRequestData
7
7
  ): Promise<IInfluancersResponseData> => {
8
8
  const response: AxiosResponse<IInfluancersResponseData, AxiosRequestConfig> =
@@ -1,5 +1,7 @@
1
1
  import axios, { AxiosInstance } from 'axios'
2
2
 
3
+ import { getCookieByName } from '../utils'
4
+
3
5
  const headers: { [key: string]: string } = {
4
6
  Accept: 'application/vnd.api+json',
5
7
  'Content-Type': 'application/vnd.api+json',
@@ -25,6 +27,14 @@ export const publicRequest: IPublicRequest = axios.create({
25
27
  headers,
26
28
  }) as IPublicRequest
27
29
 
30
+ publicRequest.interceptors.request.use(config => {
31
+ if (getCookieByName('X-TF-ECOMMERCE')) {
32
+ config.headers['X-TF-ECOMMERCE'] = getCookieByName('X-TF-ECOMMERCE')
33
+ }
34
+
35
+ return config
36
+ })
37
+
28
38
  publicRequest.setBaseUrl = (baseUrl: string) =>
29
39
  (publicRequest.defaults.baseURL = baseUrl + '/api')
30
40
 
@@ -1,15 +1,37 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1
2
  import { Field } from 'formik'
2
3
  import _identity from 'lodash/identity'
4
+ import _isEmpty from 'lodash/isEmpty'
3
5
  import _isNull from 'lodash/isNull'
6
+ import _map from 'lodash/map'
4
7
  import React from 'react'
5
8
 
9
+ import {
10
+ getFieldComponent,
11
+ getFieldLabel,
12
+ getValidateFunctions,
13
+ } from '../billing-info-container/utils'
6
14
  import { NativeSelectField } from '../common'
7
15
 
16
+ // TO DO:
17
+ // - Need to add custom fields validations
18
+ // - Need to apply correct styles
19
+
8
20
  interface IAddonComponentProps {
9
21
  classNamePrefix: string;
10
22
  data: any;
11
23
  selectOptions: any;
12
24
  handleAddonChange?: (...res: any) => void;
25
+ addOnDataWithCustomFields: any;
26
+ configs: any;
27
+ values: any;
28
+ errors: any;
29
+ onCustomFieldChange?: (
30
+ addon: any,
31
+ groupId: string | number,
32
+ fieldName: string,
33
+ value: any
34
+ ) => void;
13
35
  }
14
36
 
15
37
  const AddonComponent = ({
@@ -17,6 +39,11 @@ const AddonComponent = ({
17
39
  data,
18
40
  selectOptions,
19
41
  handleAddonChange = _identity,
42
+ addOnDataWithCustomFields,
43
+ configs,
44
+ values,
45
+ errors,
46
+ onCustomFieldChange = _identity,
20
47
  }: IAddonComponentProps) => {
21
48
  const { id, name, active, stock } = data
22
49
 
@@ -28,17 +55,75 @@ const AddonComponent = ({
28
55
  {!active || (!_isNull(stock) && stock <= 0) ? (
29
56
  <div className="sold_out">SOLD OUT</div>
30
57
  ) : (
31
- <div className={`${classNamePrefix}_product_qty_select`}>
32
- <Field
33
- name={id}
34
- selectOptions={selectOptions}
35
- component={NativeSelectField}
36
- onChange={(e: any) => {
37
- const { value } = e.target
38
- handleAddonChange(id, value)
39
- }}
40
- />
41
- </div>
58
+ <>
59
+ <div className={`${classNamePrefix}_product_qty_select`}>
60
+ <Field
61
+ name={id}
62
+ selectOptions={selectOptions}
63
+ component={NativeSelectField}
64
+ onChange={(e: any) => {
65
+ const { value } = e.target
66
+ handleAddonChange(id, value)
67
+ }}
68
+ />
69
+ </div>
70
+ {!_isEmpty(addOnDataWithCustomFields?.fields) && values[id] > 0 && (
71
+ <div className="add-on-fields">
72
+ <h2>{addOnDataWithCustomFields.label}</h2>
73
+ {_map(addOnDataWithCustomFields.fields, group => {
74
+ const { id, groupClassname, groupItems } = group
75
+ return (
76
+ <div key={id}>
77
+ <div className={groupClassname}>
78
+ {_map(groupItems, element => {
79
+ const fieldName = `${data.id}-${id}-${element.name}`
80
+ const Comp = getFieldComponent(element)
81
+ const type =
82
+ element.type === 'radio' || element.type === 'checkbox'
83
+ ? undefined
84
+ : element.type
85
+ return (
86
+ <div className={element.className} key={fieldName}>
87
+ <Field
88
+ {...element}
89
+ name={fieldName}
90
+ validate={getValidateFunctions(
91
+ element,
92
+ [],
93
+ values,
94
+ errors
95
+ )}
96
+ >
97
+ {({ field, form }: any) => {
98
+ const handleChange = (e: any) => {
99
+ // extract value from native events or custom widgets
100
+ const v = e?.target?.value ?? e?.value ?? e // allow custom components to pass raw value
101
+ form.setFieldValue(field.name, v)
102
+ onCustomFieldChange?.(data, id, element.name, v)
103
+ }
104
+
105
+ return (
106
+ <Comp
107
+ {...element}
108
+ field={field}
109
+ form={form}
110
+ type={type}
111
+ label={getFieldLabel(element, configs)}
112
+ onChange={handleChange}
113
+ />
114
+ )
115
+ }}
116
+ </Field>
117
+ </div>
118
+ )
119
+ })}
120
+ </div>
121
+ </div>
122
+ )
123
+ })}
124
+ </div>
125
+ )}
126
+ </>
42
127
  )}
43
128
  </div>
44
129
  </div>