tf-checkout-react 1.6.6-beta.27 → 1.6.6-beta.29

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 (27) hide show
  1. package/dist/components/addonsContainer/SimpleAddonsContainer.d.ts +1 -1
  2. package/dist/components/addonsContainer/index.d.ts +1 -1
  3. package/dist/components/billing-info-container/index.d.ts +1 -0
  4. package/dist/components/myTicketsContainer/index.d.ts +3 -2
  5. package/dist/components/paymentContainer/OrderDetails.d.ts +7 -1
  6. package/dist/components/paymentContainer/index.d.ts +2 -1
  7. package/dist/tf-checkout-react.cjs.development.js +310 -157
  8. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  9. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  10. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  11. package/dist/tf-checkout-react.esm.js +310 -157
  12. package/dist/tf-checkout-react.esm.js.map +1 -1
  13. package/dist/tf-checkout-styles.css +1 -1
  14. package/dist/utils/getDomain.d.ts +1 -1
  15. package/package.json +2 -2
  16. package/src/components/addonsContainer/SimpleAddonsContainer.tsx +4 -0
  17. package/src/components/addonsContainer/index.tsx +4 -0
  18. package/src/components/billing-info-container/index.tsx +84 -27
  19. package/src/components/common/SnackbarAlert.tsx +32 -34
  20. package/src/components/loginModal/style.css +3 -1
  21. package/src/components/myTicketsContainer/index.tsx +12 -8
  22. package/src/components/paymentContainer/OrderDetails.tsx +43 -3
  23. package/src/components/paymentContainer/index.tsx +25 -23
  24. package/src/components/paymentContainer/style.css +113 -0
  25. package/src/types/api/payment.d.ts +2 -2
  26. package/src/utils/cookies.ts +43 -12
  27. package/src/utils/getDomain.ts +10 -4
@@ -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}.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}.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}.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%}.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}}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: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}.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_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}}.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%}.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}}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 +1 @@
1
- export declare function getDomain(url: string, subdomain?: string): string;
1
+ export declare function getDomain(url: string, subdomain?: string, publicSuffix?: string): string;
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.6.6-beta.27",
2
+ "version": "1.6.6-beta.29",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -111,4 +111,4 @@
111
111
  "tf-seat-map-view": "9.4.7-beta.33",
112
112
  "yup": "^0.32.11"
113
113
  }
114
- }
114
+ }
@@ -199,6 +199,10 @@ export const SimpleAddonsContainer = ({
199
199
  )
200
200
  }
201
201
 
202
+ if (addons?.length === 0) {
203
+ return null
204
+ }
205
+
202
206
  return (
203
207
  <div className={`${classNamePrefix}_container`}>
204
208
  <div className={`${classNamePrefix}_block`}>
@@ -305,6 +305,10 @@ export const AddonsContainter = ({
305
305
  )
306
306
  }
307
307
 
308
+ if (addons?.length === 0) {
309
+ return null
310
+ }
311
+
308
312
  const params = new URL(`${window.location}`).searchParams
309
313
  const addOnIsIncluded = params.get('include_add_on') === 'true'
310
314
  const isResale = params.get('resale') === 'true'
@@ -97,6 +97,7 @@ export interface IBillingInfoPage {
97
97
  onCheckoutUpdateError?: (e: AxiosError) => void;
98
98
  initialValues?: FormikValues;
99
99
  buttonName?: string;
100
+ freeOrderButtonName?: string;
100
101
  theme?: 'light' | 'dark';
101
102
  isLoggedIn?: boolean;
102
103
  accountInfoTitle?: string | JSX.Element;
@@ -228,6 +229,7 @@ const BillingInfoContainer = React.memo(
228
229
  },
229
230
  initialValues = {},
230
231
  buttonName = 'Submit',
232
+ freeOrderButtonName = 'Complete Registration',
231
233
  handleSubmit = _identity,
232
234
  theme = 'light',
233
235
  onRegisterSuccess = _identity,
@@ -384,12 +386,16 @@ const BillingInfoContainer = React.memo(
384
386
  const [pendingVerificationMessage, setPendingVerificationMessage] = useState<string>()
385
387
  const [reviewData, setReviewData] = useState<any>({})
386
388
  const [checkoutData, setCheckoutData] = useState<any>({})
389
+ const [checkoutUpdateData, setCheckoutUpdateData] = useState<any>({})
387
390
  const prevData = useRef(data)
388
391
 
389
392
  const addAddOnsInAttributes = useCallback((checkoutBody: any) => {
390
393
  const selectedAddOns = window.localStorage.getItem('add_ons') || '{}'
391
394
  checkoutBody.attributes.add_ons = JSON.parse(selectedAddOns)
392
395
  }, [])
396
+ const [singleCheckoutAddons, setSingleCheckoutAddOns] = useState<any>({})
397
+
398
+ const orderIsFree = !Number(checkoutData?.total)
393
399
 
394
400
  useEffect(() => {
395
401
  const hasUniqueId = _get(dataWithUniqueIds, '[0].uniqueId')
@@ -500,6 +506,28 @@ const BillingInfoContainer = React.memo(
500
506
  fetchCart()
501
507
  }, [isLoggedIn])
502
508
 
509
+ useEffect(() => {
510
+ const fetchCheckoutUpdate = async () => {
511
+ if (!eventId) return
512
+
513
+ try {
514
+ const checkoutUpdateResponse = await updateCheckout({
515
+ attributes: {
516
+ event_id: eventId,
517
+ },
518
+ })
519
+
520
+ if (checkoutUpdateResponse.success) {
521
+ setCheckoutUpdateData(checkoutUpdateResponse.data.attributes)
522
+ }
523
+ } catch (error) {
524
+ console.error('Failed to fetch checkout update:', error)
525
+ }
526
+ }
527
+
528
+ fetchCheckoutUpdate()
529
+ }, [eventId])
530
+
503
531
  useEffect(() => {
504
532
  const collectPaymentData = async () => {
505
533
  if (
@@ -636,11 +664,23 @@ const BillingInfoContainer = React.memo(
636
664
  async (addOns: { [key: string]: number } = {}) => {
637
665
  if (!isSinglePageCheckout) return
638
666
 
667
+ const mergedAddOns = { ...singleCheckoutAddons }
668
+
669
+ // Update existing entries and add new ones
670
+ Object.entries(addOns).forEach(([key, value]) => {
671
+ const amount = Number(value)
672
+ if (amount) {
673
+ mergedAddOns[key] = amount
674
+ } else {
675
+ delete mergedAddOns[key]
676
+ }
677
+ })
678
+
639
679
  try {
640
680
  const checkoutUpdateData = {
641
681
  attributes: {
642
682
  event_id: eventId,
643
- add_ons: addOns,
683
+ add_ons: mergedAddOns,
644
684
  },
645
685
  }
646
686
 
@@ -651,6 +691,7 @@ const BillingInfoContainer = React.memo(
651
691
  _get(checkoutResponse, 'data.attributes.cart_price_breakdown', {})
652
692
  )
653
693
  onCheckoutUpdateSuccess(checkoutResponse.data.attributes)
694
+ setSingleCheckoutAddOns(mergedAddOns)
654
695
  }
655
696
  } catch (error) {
656
697
  const errorMessage = _get(
@@ -679,10 +720,7 @@ const BillingInfoContainer = React.memo(
679
720
 
680
721
  // Create updated add-ons object
681
722
  const updatedAddOns: { [key: string]: number } = {}
682
-
683
- if (quantity > 0) {
684
- updatedAddOns[addonId] = quantity
685
- }
723
+ updatedAddOns[addonId] = quantity
686
724
 
687
725
  // Call handleAddOnSelect with the updated addons object
688
726
  handleAddOnSelect(updatedAddOns)
@@ -707,6 +745,10 @@ const BillingInfoContainer = React.memo(
707
745
  dataWithUniqueIds[0].label = 'Get Your Tables'
708
746
  }
709
747
 
748
+ const stripePublishableKey =
749
+ reviewData?.payment_method?.stripe_publishable_key ||
750
+ checkoutUpdateData?.additional_payment_information?.basic_config?.apiKey
751
+
710
752
  return (
711
753
  <ThemeProvider theme={themeMui}>
712
754
  {(loading || cardLoading || isCountriesLoading || isConfigLoading) && (
@@ -748,7 +790,7 @@ const BillingInfoContainer = React.memo(
748
790
  enableReinitialize={false}
749
791
  onSubmit={async (values, formikHelpers) => {
750
792
  try {
751
- if (!cardRef.current || !stripeRef.current) {
793
+ if ((!cardRef.current || !stripeRef.current) && !orderIsFree) {
752
794
  setError('Fill in the card details')
753
795
  return
754
796
  }
@@ -852,10 +894,14 @@ const BillingInfoContainer = React.memo(
852
894
 
853
895
  const checkoutBody = collectCheckoutBody(values, userDataObj)
854
896
 
855
- if (isBrowser) {
897
+ if (isBrowser && !isSinglePageCheckout) {
856
898
  addAddOnsInAttributes(checkoutBody)
857
899
  }
858
900
 
901
+ if (isSinglePageCheckout) {
902
+ checkoutBody.attributes.add_ons = singleCheckoutAddons
903
+ }
904
+
859
905
  const checkoutResponse = await postOnCheckout(
860
906
  checkoutBody,
861
907
  flagFreeTicket
@@ -867,6 +913,8 @@ const BillingInfoContainer = React.memo(
867
913
  },
868
914
  })
869
915
 
916
+ let paymentResponse = null
917
+
870
918
  if (isSinglePageCheckout) {
871
919
  const { hash, total } = checkoutResponse.data.attributes
872
920
  const paymentDataResponse = await getPaymentData(String(hash))
@@ -904,21 +952,23 @@ const BillingInfoContainer = React.memo(
904
952
  const paymentMethod = attributes.payment_method || {}
905
953
  const paymentPlanAvailable = paymentMethod.stripe_payment_plan_enabled
906
954
 
907
- const card = cardRef.current
908
- const paymentMethodReq = await stripeRef.current.createPaymentMethod({
909
- type: 'card',
910
- card: card || { token: '' },
911
- billing_details: {
912
- address: addressRef.current,
913
- },
914
- })
955
+ if (!isFreeTickets) {
956
+ const card = cardRef.current
957
+ const paymentMethodReq = await stripeRef.current.createPaymentMethod({
958
+ type: 'card',
959
+ card: card || { token: '' },
960
+ billing_details: {
961
+ address: addressRef.current,
962
+ },
963
+ })
915
964
 
916
- await stripeRef.current.confirmCardPayment(
917
- paymentMethod.stripe_client_secret,
918
- {
919
- payment_method: paymentMethodReq.paymentMethod.id,
920
- }
921
- )
965
+ await stripeRef.current.confirmCardPayment(
966
+ paymentMethod.stripe_client_secret,
967
+ {
968
+ payment_method: paymentMethodReq.paymentMethod.id,
969
+ }
970
+ )
971
+ }
922
972
 
923
973
  await handlePaymentMiddleWare(
924
974
  null,
@@ -928,13 +978,17 @@ const BillingInfoContainer = React.memo(
928
978
  isFreeTickets,
929
979
  paymentPlanIsAvailable: paymentPlanAvailable,
930
980
  showPaymentPlanSection: true,
931
- handlePayment: _identity,
981
+ handlePayment: (data: any) => {
982
+ paymentResponse = data
983
+ },
932
984
  setPaymentIsLoading: _identity,
933
985
  setError: _identity,
934
986
  orderData: updatedOrderData,
935
987
  eventId,
936
988
  isBrowser,
937
- onPaymentError: _identity,
989
+ onPaymentError: (error: any) => {
990
+ throw error
991
+ },
938
992
  }
939
993
  )
940
994
  }
@@ -946,7 +1000,8 @@ const BillingInfoContainer = React.memo(
946
1000
  formikHelpers as FormikHelpers<any>,
947
1001
  eventId,
948
1002
  checkoutResponse,
949
- checkoutUpdateResponse
1003
+ checkoutUpdateResponse,
1004
+ paymentResponse
950
1005
  )
951
1006
  } catch (e) {
952
1007
  setLoading(false)
@@ -1013,7 +1068,7 @@ const BillingInfoContainer = React.memo(
1013
1068
  onErrorClose()
1014
1069
  }}
1015
1070
  />
1016
- {!isLoggedIn && (
1071
+ {!isLoggedIn && !isSinglePageCheckout && (
1017
1072
  <div className="account-actions-block">
1018
1073
  <div className="action-item">
1019
1074
  <div>{accountInfoTitle}</div>
@@ -1239,8 +1294,9 @@ const BillingInfoContainer = React.memo(
1239
1294
  ))}
1240
1295
  </div>
1241
1296
  )}
1242
- {isSinglePageCheckout && (
1297
+ {isSinglePageCheckout && !orderIsFree && stripePublishableKey && (
1243
1298
  <PaymentContainer
1299
+ stripePublishableKey={stripePublishableKey}
1244
1300
  formTitle="Payment Information"
1245
1301
  orderInfoLabel=""
1246
1302
  enableTimer={false}
@@ -1312,7 +1368,8 @@ const BillingInfoContainer = React.memo(
1312
1368
  className="login-register-button"
1313
1369
  disabled={props.isSubmitting || phoneValidationIsLoading}
1314
1370
  >
1315
- {props.isSubmitting ? <CircularProgress size={26} /> : buttonName}
1371
+ {props.isSubmitting ?
1372
+ <CircularProgress size={26} /> : (orderIsFree ? freeOrderButtonName : buttonName)}
1316
1373
  </Button>
1317
1374
  </div>
1318
1375
  </div>
@@ -1,15 +1,15 @@
1
- import React from 'react'
2
1
  import { Alert, AlertColor, Snackbar, SnackbarOrigin } from '@mui/material'
2
+ import React from 'react'
3
3
 
4
4
  interface ISnackbarAlertProps {
5
- isOpen: boolean
6
- message: string
7
- type: AlertColor
8
- position?: SnackbarOrigin
9
- autoHideDuration?: number
10
- variant?: 'filled' | 'standard' | 'outlined'
5
+ isOpen: boolean;
6
+ message: string;
7
+ type: AlertColor;
8
+ position?: SnackbarOrigin;
9
+ autoHideDuration?: number;
10
+ variant?: 'filled' | 'standard' | 'outlined';
11
11
 
12
- onClose: () => void
12
+ onClose: () => void;
13
13
  }
14
14
 
15
15
  const SnackbarAlert = ({
@@ -20,35 +20,33 @@ const SnackbarAlert = ({
20
20
  autoHideDuration = 3000,
21
21
  variant,
22
22
  onClose,
23
- }: ISnackbarAlertProps) => {
24
- return (
25
- <div className="snackbar-alert-container">
26
- <Snackbar
27
- autoHideDuration={autoHideDuration}
28
- open={isOpen}
29
- anchorOrigin={position || { vertical: 'top', horizontal: 'center' }}
23
+ }: ISnackbarAlertProps) => (
24
+ <div className="snackbar-alert-container">
25
+ <Snackbar
26
+ autoHideDuration={autoHideDuration}
27
+ open={isOpen}
28
+ anchorOrigin={position || { vertical: 'top', horizontal: 'center' }}
29
+ onClose={onClose}
30
+ classes={{
31
+ root: 'snackbar-alert-snackbar-root',
32
+ }}
33
+ >
34
+ <Alert
35
+ severity={type}
30
36
  onClose={onClose}
37
+ variant={variant || 'filled'}
31
38
  classes={{
32
- root: 'snackbar-alert-snackbar-root',
39
+ icon: 'snackbar-alert-icon',
40
+ root: 'snackbar-alert-alert-root',
41
+ action: 'snackbar-alert-action',
42
+ message: 'snackbar-alert-message',
43
+ filled: 'snackbar-alert-filled',
33
44
  }}
34
45
  >
35
- <Alert
36
- severity={type}
37
- onClose={onClose}
38
- variant={variant || 'filled'}
39
- classes={{
40
- icon: 'snackbar-alert-icon',
41
- root: 'snackbar-alert-alert-root',
42
- action: 'snackbar-alert-action',
43
- message: 'snackbar-alert-message',
44
- filled: 'snackbar-alert-filled',
45
- }}
46
- >
47
- {message}
48
- </Alert>
49
- </Snackbar>
50
- </div>
51
- )
52
- }
46
+ {message}
47
+ </Alert>
48
+ </Snackbar>
49
+ </div>
50
+ )
53
51
 
54
52
  export default SnackbarAlert
@@ -46,7 +46,9 @@
46
46
  background-color: #505050;
47
47
  border-color: #505050;
48
48
  }
49
-
49
+ .login-logo-tff{
50
+ height: 60px;
51
+ }
50
52
  .server_auth__error {
51
53
  color: red;
52
54
  padding-left: 25px;
@@ -31,6 +31,7 @@ interface MyTicketsTypes {
31
31
  selectEventsLabel?: string;
32
32
  openLoginModal?: () => void;
33
33
  hideDetailsButton?: boolean;
34
+ customNoOrderContent?: React.ReactNode;
34
35
  columns?: IColumnData[];
35
36
  }
36
37
 
@@ -49,6 +50,7 @@ export const MyTicketsContainer = ({
49
50
  hideDetailsButton = false,
50
51
  columns = [],
51
52
  openLoginModal,
53
+ customNoOrderContent = null,
52
54
  }: MyTicketsTypes) => {
53
55
  const [data, setData] = useState<any>(null)
54
56
  const [loading, setLoading] = useState(true)
@@ -110,6 +112,15 @@ export const MyTicketsContainer = ({
110
112
  setFilter(eventFilter?.url_name || '')
111
113
  }
112
114
 
115
+ const noOrderContent = customNoOrderContent || (<div className="no_orders_section">
116
+ <div className="nodata_title">
117
+ You have no current ticket orders on this account
118
+ </div>
119
+ <div className="nodata_subtitle">
120
+ Discover your next nite out <a href="/events">here</a>.
121
+ </div>
122
+ </div>)
123
+
113
124
  return (
114
125
  <div className={`my-ticket ${theme}`}>
115
126
  <>
@@ -191,14 +202,7 @@ export const MyTicketsContainer = ({
191
202
  !loading && (
192
203
  <>
193
204
  <h2>My Ticket Orders</h2>
194
- <div className="no_orders_section">
195
- <div className="nodata_title">
196
- You have no current ticket orders on this account
197
- </div>
198
- <div className="nodata_subtitle">
199
- Discover your next nite out <a href="/events">here</a>.
200
- </div>
201
- </div>
205
+ {noOrderContent}
202
206
  </>
203
207
  )
204
208
  )}
@@ -2,21 +2,61 @@
2
2
  import _identity from 'lodash/identity'
3
3
  import _isEmpty from 'lodash/isEmpty'
4
4
  import _map from 'lodash/map'
5
- import React from 'react'
5
+ import React, { useState } from 'react'
6
6
 
7
7
  import { FEES_STYLES } from '../../constants'
8
8
  import { createFixedFloatNormalizer, currencyNormalizerCreator } from '../../normalizers'
9
9
  import { IOrderData } from '../../types'
10
10
  import { CONFIGS } from '../../utils'
11
11
 
12
- export const OrderDetails = ({ orderData = {}, paymentFieldsData = [] }: any) => {
12
+ interface OrderDetailsProps {
13
+ orderData: any;
14
+ paymentFieldsData: any[];
15
+ customMobileText?: string;
16
+ }
17
+
18
+ export const OrderDetails = ({
19
+ orderData = {},
20
+ paymentFieldsData = [],
21
+ customMobileText = 'Your order total'
22
+ }: OrderDetailsProps) => {
13
23
  const { currency, guest_count } = orderData
14
24
  const hasTableTypes = Boolean(Number(guest_count))
25
+ const [isExpanded, setIsExpanded] = useState(false)
26
+
27
+ // Find the total field to display in the mobile view
28
+ const totalField = paymentFieldsData.find(field => field.id === 'total')
29
+ const totalValue = totalField && orderData.total
30
+ ? totalField.normalizer
31
+ ? totalField.normalizer(orderData.total, currency, orderData)
32
+ : orderData.total
33
+ : ''
34
+
35
+ const toggleExpand = () => {
36
+ setIsExpanded(!isExpanded)
37
+ }
15
38
 
16
39
  return (
17
40
  <div className="payment_page payment_page_single">
41
+ {/* Mobile view summary */}
42
+ <div className="mobile-order-summary">
43
+ <div className="mobile-order-summary-content" onClick={toggleExpand}>
44
+ <div className="mobile-order-info">
45
+ <div className={`mobile-order-info-container order-info-container-left ${isExpanded ? 'open' : ''}`}>
46
+ <div className="mobile-order-text">{customMobileText}</div>
47
+ </div>
48
+ {!isExpanded && (
49
+ <div className="mobile-order-info-container order-info-container-right">
50
+ <div className="mobile-order-total">{totalValue}</div>
51
+ </div>
52
+ )}
53
+ </div>
54
+ </div>
55
+ </div>
56
+
57
+ {/* Original content - will be hidden on mobile when collapsed */}
18
58
  <div
19
- className="order_info_section"
59
+ className={`order_info_section ${isExpanded ? 'expanded' : 'collapsed'}`}
20
60
  style={{ display: hasTableTypes ? 'block' : 'grid' }}
21
61
  >
22
62
  {_map(paymentFieldsData, field => {