tf-checkout-react 1.0.99 → 1.0.100-beta.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 (117) hide show
  1. package/README.md +278 -1
  2. package/dist/api/index.d.ts +31 -26
  3. package/dist/components/account-settings/index.d.ts +3 -0
  4. package/dist/components/billing-info-container/index.d.ts +5 -5
  5. package/dist/components/billing-info-container/utils.d.ts +1 -0
  6. package/dist/components/common/CustomField.d.ts +1 -1
  7. package/dist/components/common/DatePickerField.d.ts +14 -0
  8. package/dist/components/common/RedirectModal.d.ts +7 -0
  9. package/dist/components/common/SnackbarAlert.d.ts +13 -0
  10. package/dist/components/confirmationContainer/index.d.ts +2 -1
  11. package/dist/components/countdown/index.d.ts +4 -1
  12. package/dist/components/myTicketsContainer/tableConfig.d.ts +0 -1
  13. package/dist/components/orderDetailsContainer/index.d.ts +5 -1
  14. package/dist/components/orderDetailsContainer/ticketsTable.d.ts +4 -1
  15. package/dist/components/paymentContainer/index.d.ts +3 -1
  16. package/dist/components/rsvpContainer/index.d.ts +7 -0
  17. package/dist/components/stripePayment/index.d.ts +2 -1
  18. package/dist/components/ticketResale/index.d.ts +5 -3
  19. package/dist/components/ticketsContainer/AccessCodeSection.d.ts +7 -0
  20. package/dist/components/ticketsContainer/PromoCodeSection.d.ts +6 -9
  21. package/dist/components/ticketsContainer/TicketsSection.d.ts +5 -3
  22. package/dist/components/ticketsContainer/index.d.ts +13 -2
  23. package/dist/components/timerWidget/index.d.ts +3 -3
  24. package/dist/env.d.ts +1 -0
  25. package/dist/images/cross.svg +44 -0
  26. package/dist/images/done.svg +3 -3
  27. package/dist/index.d.ts +2 -0
  28. package/dist/tf-checkout-react.cjs.development.js +1400 -575
  29. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  30. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  31. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  32. package/dist/tf-checkout-react.esm.js +1409 -586
  33. package/dist/tf-checkout-react.esm.js.map +1 -1
  34. package/dist/tf-checkout-styles.css +1 -1
  35. package/dist/utils/cookies.d.ts +3 -0
  36. package/dist/utils/createCheckoutDataBodyWithDefaultHolder.d.ts +6 -1
  37. package/dist/utils/downloadPDF.d.ts +1 -1
  38. package/dist/utils/getDomain.d.ts +1 -0
  39. package/dist/utils/index.d.ts +2 -0
  40. package/package.json +89 -89
  41. package/src/.DS_Store +0 -0
  42. package/src/.d.ts +2 -2
  43. package/src/api/index.ts +313 -278
  44. package/src/assets/images/cross.svg +44 -0
  45. package/src/assets/images/done.svg +3 -3
  46. package/src/components/.DS_Store +0 -0
  47. package/src/components/account-settings/index.tsx +161 -0
  48. package/src/components/account-settings/style.css +200 -0
  49. package/src/components/billing-info-container/index.tsx +821 -777
  50. package/src/components/billing-info-container/style.css +106 -106
  51. package/src/components/billing-info-container/utils.ts +233 -223
  52. package/src/components/common/CheckboxField.tsx +41 -41
  53. package/src/components/common/CustomField.tsx +87 -84
  54. package/src/components/common/DatePickerField.tsx +98 -0
  55. package/src/components/common/FormikPhoneNumberField.tsx +51 -51
  56. package/src/components/common/Loader.tsx +9 -9
  57. package/src/components/common/RadioField.tsx +35 -35
  58. package/src/components/common/RedirectModal.tsx +43 -0
  59. package/src/components/common/SelectField.tsx +80 -80
  60. package/src/components/common/SnackbarAlert.tsx +54 -0
  61. package/src/components/common/dist/PhoneNumberField.js +96 -0
  62. package/src/components/common/index.tsx +4 -4
  63. package/src/components/confirmModal/index.tsx +51 -51
  64. package/src/components/confirmModal/style.css +21 -21
  65. package/src/components/confirmationContainer/config.ts +72 -72
  66. package/src/components/confirmationContainer/index.tsx +197 -194
  67. package/src/components/confirmationContainer/social-buttons.tsx +94 -94
  68. package/src/components/confirmationContainer/style.css +202 -202
  69. package/src/components/countdown/index.tsx +100 -89
  70. package/src/components/countdown/style.css +9 -9
  71. package/src/components/index.ts +7 -7
  72. package/src/components/loginModal/index.tsx +171 -209
  73. package/src/components/loginModal/style.css +71 -71
  74. package/src/components/myTicketsContainer/index.tsx +201 -137
  75. package/src/components/myTicketsContainer/row.tsx +41 -41
  76. package/src/components/myTicketsContainer/style.css +40 -40
  77. package/src/components/myTicketsContainer/tableConfig.tsx +32 -34
  78. package/src/components/orderDetailsContainer/index.tsx +289 -249
  79. package/src/components/orderDetailsContainer/style.css +73 -73
  80. package/src/components/orderDetailsContainer/ticketsTable.tsx +177 -124
  81. package/src/components/paymentContainer/index.tsx +352 -284
  82. package/src/components/registerModal/index.tsx +183 -190
  83. package/src/components/rsvpContainer/index.tsx +126 -0
  84. package/src/components/stripePayment/index.tsx +258 -253
  85. package/src/components/stripePayment/style.css +60 -60
  86. package/src/components/ticketResale/index.tsx +74 -56
  87. package/src/components/ticketResaleModal/index.tsx +213 -210
  88. package/src/components/ticketResaleModal/style.css +28 -28
  89. package/src/components/ticketsContainer/AccessCodeSection.tsx +50 -0
  90. package/src/components/ticketsContainer/PromoCodeSection.tsx +89 -99
  91. package/src/components/ticketsContainer/ReferralLogic.tsx +31 -33
  92. package/src/components/ticketsContainer/TicketRow.tsx +89 -83
  93. package/src/components/ticketsContainer/TicketsSection.tsx +87 -81
  94. package/src/components/ticketsContainer/index.tsx +506 -409
  95. package/src/components/ticketsContainer/style.css +181 -181
  96. package/src/components/ticketsContainer/utils.ts +11 -11
  97. package/src/components/timerWidget/index.tsx +87 -70
  98. package/src/components/timerWidget/style.css +34 -26
  99. package/src/components/waitingList/index.tsx +178 -178
  100. package/src/components/waitingList/style.css +26 -26
  101. package/src/env.ts +20 -19
  102. package/src/index.ts +15 -13
  103. package/src/normalizers/index.ts +45 -45
  104. package/src/types/billing-info-data.ts +37 -37
  105. package/src/types/payment-field.ts +7 -7
  106. package/src/types/referral-promotion.ts +7 -7
  107. package/src/utils/cookies.ts +42 -0
  108. package/src/utils/createCheckoutDataBodyWithDefaultHolder.ts +71 -59
  109. package/src/utils/downloadPDF.tsx +52 -30
  110. package/src/utils/formikErrorFocus.ts +24 -24
  111. package/src/utils/getDomain.ts +15 -0
  112. package/src/utils/getImage.ts +14 -14
  113. package/src/utils/getQueryVariable.ts +13 -13
  114. package/src/utils/index.ts +7 -5
  115. package/src/utils/setConfigs.ts +26 -26
  116. package/src/utils/showZero.tsx +10 -10
  117. package/src/validators/index.ts +20 -20
@@ -1,253 +1,258 @@
1
- import React, { useState, useEffect } from 'react'
2
- import {
3
- useStripe,
4
- useElements,
5
- CardNumberElement,
6
- CardExpiryElement,
7
- CardCvcElement,
8
- } from '@stripe/react-stripe-js'
9
- import { StripeCardNumberElementOptions } from '@stripe/stripe-js'
10
- import _identity from 'lodash/identity'
11
- import _get from 'lodash/get'
12
- import { CheckboxField } from '../common/index'
13
-
14
- import './style.css'
15
- import { getCurrencySymbolByCurrency } from '../../normalizers'
16
- import CircularProgress from '@mui/material/CircularProgress'
17
-
18
- const options: StripeCardNumberElementOptions = {
19
- style: {
20
- base: {
21
- backgroundColor: '#000',
22
- fontSize: '18px',
23
- color: '#ffffff',
24
- letterSpacing: '1px',
25
- ':-webkit-autofill': {
26
- color: '#ffffff',
27
- },
28
- '::placeholder': {
29
- color: 'rgba(201, 201, 201, 0.5)',
30
- },
31
- },
32
- invalid: {
33
- color: '#E53935',
34
- },
35
- },
36
- }
37
-
38
- export interface ICheckoutForm {
39
- total: string;
40
- currency: string;
41
- onSubmit: (error: any) => Promise<any>;
42
- error?: string | null;
43
- stripeCardOptions?: StripeCardNumberElementOptions;
44
- stripe_client_secret: string;
45
- billing_info: { [key: string]: any };
46
- isLoading: any;
47
- handleSetLoading: (loading: any) => void;
48
- conditions: any;
49
- disableZipSection: boolean;
50
- }
51
-
52
- interface AddressTypes {
53
- city: string;
54
- line1: string;
55
- state: string;
56
- postal_code?: string;
57
- }
58
-
59
- const CheckoutForm = ({
60
- total,
61
- onSubmit = _identity,
62
- stripeCardOptions = {},
63
- error = null,
64
- stripe_client_secret,
65
- currency,
66
- billing_info,
67
- isLoading = false,
68
- handleSetLoading = () => {},
69
- conditions = [],
70
- disableZipSection,
71
- }: ICheckoutForm) => {
72
- const stripe = useStripe()
73
- const elements = useElements()
74
- const [postalCode, setPostalCode] = useState<any>('')
75
- const [stripeError, setStripeError] = useState<any>(null)
76
- const [checkboxes, setCheckboxes] = useState<any>([])
77
- const [allowSubmit, setAllowSubmit] = useState(false)
78
-
79
- const handleSubmit = async (event: React.SyntheticEvent) => {
80
- handleSetLoading(true)
81
- try {
82
- event.preventDefault()
83
-
84
- if (!postalCode && !disableZipSection) {
85
- setStripeError('Please enter your zip code.')
86
- handleSetLoading(false)
87
- return
88
- }
89
-
90
- if (!stripe || !elements) {
91
- // Stripe.js has not loaded yet. Make sure to disable
92
- // form submission until Stripe.js has loaded.
93
- handleSetLoading(false)
94
- return
95
- }
96
-
97
- const card = elements.getElement(CardNumberElement)
98
-
99
- const address: AddressTypes = {
100
- city: billing_info.city,
101
- line1: billing_info.street_address,
102
- state: billing_info.state,
103
- }
104
-
105
- if (!disableZipSection) {
106
- address.postal_code = postalCode
107
- }
108
-
109
- const paymentMethodReq = await stripe.createPaymentMethod({
110
- type: 'card',
111
- card: card || { token: '' },
112
- billing_details: {
113
- address,
114
- },
115
- })
116
-
117
- if (paymentMethodReq.error) {
118
- setStripeError(paymentMethodReq.error.message || null)
119
- handleSetLoading(false)
120
- return
121
- }
122
-
123
- const { error } = await stripe.confirmCardPayment(stripe_client_secret, {
124
- payment_method: paymentMethodReq.paymentMethod.id,
125
- })
126
-
127
- if (error) {
128
- setStripeError(error.message)
129
- handleSetLoading(false)
130
- return
131
- }
132
-
133
- onSubmit(null)
134
- } catch (e) {
135
- onSubmit(e)
136
- }
137
- }
138
-
139
- const handleCheckboxes = (e: any) => {
140
- const checkbox = e.target
141
- const updatedCheckedState = checkboxes.map((item: any) => {
142
- const value = item.id === checkbox.name ? !item.checked : item.checked
143
- return {
144
- ...item,
145
- checked: value,
146
- }
147
- })
148
- setCheckboxes(updatedCheckedState)
149
- }
150
-
151
- const onChangePostalCode = (e: any) => {
152
- setPostalCode(e.target.value)
153
- }
154
-
155
- useEffect(() => {
156
- if (typeof window !== 'undefined') {
157
- const userData = JSON.parse(
158
- window.localStorage.getItem('user_data') || ''
159
- )
160
- const zipCode = _get(userData, 'zip', '')
161
- zipCode && setPostalCode(zipCode)
162
- }
163
- }, [])
164
-
165
- useEffect(() => {
166
- if (conditions.length) {
167
- setCheckboxes(conditions)
168
- }
169
- }, [conditions])
170
-
171
- useEffect(() => {
172
- if (checkboxes.length) {
173
- const allChecked = checkboxes.every(
174
- (item: any) => item?.checked === true
175
- )
176
- setAllowSubmit(allChecked)
177
- } else {
178
- setAllowSubmit(true)
179
- }
180
- }, [checkboxes])
181
-
182
- const buttonIsDiabled = !stripe || !!error || isLoading || !allowSubmit
183
-
184
- return (
185
- <div className="stripe_payment_container">
186
- {!!stripeError && (
187
- <div className="checkout_error_block">{stripeError}</div>
188
- )}
189
- <form onSubmit={handleSubmit}>
190
- <div className="card_form_inner">
191
- <label className="card_number_element">
192
- <span className="card_label_text">Card number</span>
193
- <CardNumberElement
194
- options={{ ...options, ...stripeCardOptions, }}
195
- onReady={_identity}
196
- onChange={_identity}
197
- onBlur={_identity}
198
- onFocus={_identity}
199
- />
200
- </label>
201
- <label className="expiration_element">
202
- <span className="card_label_text">Expiration date</span>
203
- <CardExpiryElement options={{ ...options, ...stripeCardOptions }} />
204
- </label>
205
- <label className="cvc_element">
206
- <span className="card_label_text">CVC</span>
207
- <CardCvcElement options={{ ...options, ...stripeCardOptions }} />
208
- </label>
209
- {!disableZipSection && (
210
- <label className="zip_element">
211
- <p className="card_label_text">ZIP</p>
212
- <input
213
- type="text"
214
- value={postalCode}
215
- onChange={onChangePostalCode}
216
- placeholder="ZIP"
217
- />
218
- </label>
219
- )}
220
- </div>
221
- {checkboxes?.map((checkbox: any) => (
222
- <div
223
- className={'billing-info-container__singleField'}
224
- key={checkbox.id}
225
- >
226
- <div className="conditions-block">
227
- <CheckboxField
228
- name={checkbox.id}
229
- label={checkbox.text}
230
- required={true}
231
- onChange={handleCheckboxes}
232
- checked={checkbox.checked}
233
- />
234
- </div>
235
- </div>
236
- ))}
237
- <div
238
- className={`payment_button ${buttonIsDiabled ? 'disabled-payment-button' : ''}`}
239
- >
240
- <button disabled={buttonIsDiabled} type="submit">
241
- {isLoading ? (
242
- <CircularProgress size={26} />
243
- ) : (
244
- `Pay ${getCurrencySymbolByCurrency(currency)}${total}`
245
- )}
246
- </button>
247
- </div>
248
- </form>
249
- </div>
250
- )
251
- }
252
-
253
- export default CheckoutForm
1
+ import React, { useState, useEffect } from 'react'
2
+ import {
3
+ useStripe,
4
+ useElements,
5
+ CardNumberElement,
6
+ CardExpiryElement,
7
+ CardCvcElement,
8
+ } from '@stripe/react-stripe-js'
9
+ import { StripeCardNumberElementOptions } from '@stripe/stripe-js'
10
+ import _identity from 'lodash/identity'
11
+ import _get from 'lodash/get'
12
+ import { CheckboxField } from '../common/index'
13
+
14
+ import './style.css'
15
+ import { getCurrencySymbolByCurrency } from '../../normalizers'
16
+ import CircularProgress from '@mui/material/CircularProgress'
17
+
18
+ const options: StripeCardNumberElementOptions = {
19
+ style: {
20
+ base: {
21
+ backgroundColor: '#000',
22
+ fontSize: '18px',
23
+ color: '#ffffff',
24
+ letterSpacing: '1px',
25
+ ':-webkit-autofill': {
26
+ color: '#ffffff',
27
+ },
28
+ '::placeholder': {
29
+ color: 'rgba(201, 201, 201, 0.5)',
30
+ },
31
+ },
32
+ invalid: {
33
+ color: '#E53935',
34
+ },
35
+ },
36
+ }
37
+
38
+ export interface ICheckoutForm {
39
+ total: string;
40
+ currency: string;
41
+ onSubmit: (error: any) => Promise<any>;
42
+ error?: string | null;
43
+ stripeCardOptions?: StripeCardNumberElementOptions;
44
+ stripe_client_secret: string;
45
+ billing_info: { [key: string]: any };
46
+ isLoading: any;
47
+ handleSetLoading: (loading: any) => void;
48
+ conditions: any;
49
+ disableZipSection: boolean;
50
+ paymentButtonText?: string;
51
+ }
52
+
53
+ interface AddressTypes {
54
+ city: string;
55
+ line1: string;
56
+ state: string;
57
+ postal_code?: string;
58
+ }
59
+
60
+ const CheckoutForm = ({
61
+ total,
62
+ onSubmit = _identity,
63
+ stripeCardOptions = {},
64
+ error = null,
65
+ stripe_client_secret,
66
+ currency,
67
+ billing_info,
68
+ isLoading = false,
69
+ handleSetLoading = () => { },
70
+ conditions = [],
71
+ disableZipSection,
72
+ paymentButtonText
73
+ }: ICheckoutForm) => {
74
+ const stripe = useStripe()
75
+ const elements = useElements()
76
+ const [postalCode, setPostalCode] = useState<any>('')
77
+ const [stripeError, setStripeError] = useState<any>(null)
78
+ const [checkboxes, setCheckboxes] = useState<any>([])
79
+ const [allowSubmit, setAllowSubmit] = useState(false)
80
+
81
+ const handleSubmit = async (event: React.SyntheticEvent) => {
82
+ setStripeError(null)
83
+ try {
84
+ event.preventDefault()
85
+
86
+ if (!postalCode && !disableZipSection) {
87
+ setStripeError('Please enter your zip code.')
88
+ handleSetLoading(false)
89
+ return
90
+ }
91
+
92
+ if (!stripe || !elements) {
93
+ // Stripe.js has not loaded yet. Make sure to disable
94
+ // form submission until Stripe.js has loaded.
95
+ handleSetLoading(false)
96
+ return
97
+ }
98
+
99
+ const card = elements.getElement(CardNumberElement)
100
+
101
+ const address: AddressTypes = {
102
+ city: billing_info.city,
103
+ line1: billing_info.street_address,
104
+ state: billing_info.state,
105
+ }
106
+
107
+ if (!disableZipSection) {
108
+ address.postal_code = postalCode
109
+ }
110
+
111
+ const paymentMethodReq = await stripe.createPaymentMethod({
112
+ type: 'card',
113
+ card: card || { token: '' },
114
+ billing_details: {
115
+ address,
116
+ },
117
+ })
118
+
119
+ if (paymentMethodReq.error) {
120
+ setStripeError(paymentMethodReq.error.message || null)
121
+ handleSetLoading(false)
122
+ return
123
+ }
124
+
125
+ handleSetLoading(true)
126
+ const { error } = await stripe.confirmCardPayment(stripe_client_secret, {
127
+ payment_method: paymentMethodReq.paymentMethod.id,
128
+ })
129
+
130
+ if (error) {
131
+ setStripeError(error.message)
132
+ handleSetLoading(false)
133
+ return
134
+ }
135
+
136
+ onSubmit(null)
137
+ } catch (e) {
138
+ onSubmit(e)
139
+ }
140
+ }
141
+
142
+ const handleCheckboxes = (e: any) => {
143
+ const checkbox = e.target
144
+ const updatedCheckedState = checkboxes.map((item: any) => {
145
+ const value = item.id === checkbox.name ? !item.checked : item.checked
146
+ return {
147
+ ...item,
148
+ checked: value,
149
+ }
150
+ })
151
+ setCheckboxes(updatedCheckedState)
152
+ }
153
+
154
+ const onChangePostalCode = (e: any) => {
155
+ setPostalCode(e.target.value)
156
+ }
157
+
158
+ useEffect(() => {
159
+ if (typeof window !== 'undefined') {
160
+ const userData = JSON.parse(
161
+ window.localStorage.getItem('user_data') || ''
162
+ )
163
+ const zipCode = _get(userData, 'zip', '')
164
+ zipCode && setPostalCode(zipCode)
165
+ }
166
+ }, [])
167
+
168
+ useEffect(() => {
169
+ if (conditions.length) {
170
+ setCheckboxes(conditions)
171
+ }
172
+ }, [conditions])
173
+
174
+ useEffect(() => {
175
+ if (checkboxes.length) {
176
+ const allChecked = checkboxes.every(
177
+ (item: any) => item?.checked === true
178
+ )
179
+ setAllowSubmit(allChecked)
180
+ } else {
181
+ setAllowSubmit(true)
182
+ }
183
+ }, [checkboxes])
184
+
185
+ const buttonIsDiabled = !stripe || !!error || isLoading || !allowSubmit
186
+
187
+ return (
188
+ <div className="stripe_payment_container">
189
+ {!!stripeError && (
190
+ <div className="checkout_error_block">{stripeError}</div>
191
+ )}
192
+ <form onSubmit={handleSubmit}>
193
+ <div className="card_form_inner">
194
+ <div className="card_number_element">
195
+ <span className="card_label_text">Card number</span>
196
+ <CardNumberElement
197
+ options={{ ...options, ...stripeCardOptions, }}
198
+ onReady={_identity}
199
+ onChange={_identity}
200
+ onBlur={_identity}
201
+ onFocus={_identity}
202
+ />
203
+ </div>
204
+ <div className="elements">
205
+ <div className="expiration_element">
206
+ <span className="card_label_text">Expiration date</span>
207
+ <CardExpiryElement options={{ ...options, ...stripeCardOptions }} />
208
+ </div>
209
+ <div className="cvc_element">
210
+ <span className="card_label_text">CVC</span>
211
+ <CardCvcElement options={{ ...options, ...stripeCardOptions }} />
212
+ </div>
213
+ </div>
214
+ {!disableZipSection && (
215
+ <div className="zip_element">
216
+ <p className="card_label_text">ZIP</p>
217
+ <input
218
+ type="text"
219
+ value={postalCode}
220
+ onChange={onChangePostalCode}
221
+ placeholder="ZIP"
222
+ />
223
+ </div>
224
+ )}
225
+ </div>
226
+ {checkboxes?.map((checkbox: any) => (
227
+ <div
228
+ className={'billing-info-container__singleField'}
229
+ key={checkbox.id}
230
+ >
231
+ <div className="conditions-block">
232
+ <CheckboxField
233
+ name={checkbox.id}
234
+ label={checkbox.text}
235
+ required={true}
236
+ onChange={handleCheckboxes}
237
+ checked={checkbox.checked}
238
+ />
239
+ </div>
240
+ </div>
241
+ ))}
242
+ <div
243
+ className={`payment_button ${buttonIsDiabled ? 'disabled-payment-button' : ''}`}
244
+ >
245
+ <button disabled={buttonIsDiabled} type="submit">
246
+ {isLoading ? (
247
+ <CircularProgress size={26} />
248
+ ) : (
249
+ `${paymentButtonText ? paymentButtonText : 'Pay'} ${getCurrencySymbolByCurrency(currency)}${total}`
250
+ )}
251
+ </button>
252
+ </div>
253
+ </form>
254
+ </div>
255
+ )
256
+ }
257
+
258
+ export default CheckoutForm
@@ -1,60 +1,60 @@
1
- .card_form_inner {
2
- background: #232323;
3
- border-radius: 8px;
4
- padding: 15px;
5
- width: 50%;
6
- margin: 0 auto;
7
- min-width: 325px;
8
- margin-bottom: 20px;
9
- }
10
- .card_form_inner .card_label_text {
11
- color: #fff;
12
- }
13
- .card_form_inner .StripeElement {
14
- margin: 5px 0 10px;
15
- }
16
- .card_label_text {
17
- color: #fff;
18
- }
19
- .payment_button {
20
- text-align: center;
21
- padding-top: 15px;
22
- }
23
- .payment_button button {
24
- background-color: #212529;
25
- font-size: 26px;
26
- cursor: pointer;
27
- padding: 15px 30px;
28
- width: 200px;
29
- border-radius: 8px;
30
- color: #fff;
31
- transition: opacity 0.5s;
32
- }
33
- .payment_button button:hover {
34
- opacity: 0.7;
35
- }
36
-
37
- .disabled-payment-button button{
38
- user-select: none;
39
- pointer-events:none;
40
- opacity: 0.3;
41
- }
42
-
43
- .checkout_error_block {
44
- color: #e53935;
45
- padding: 15px 0;
46
- font-weight: 600;
47
- }
48
-
49
- .zip_element p {
50
- margin-bottom: 0;
51
- }
52
- .zip_element input {
53
- background-color: #000;
54
- outline: none;
55
- border: none;
56
- font-size: 18px;
57
- margin-top: 5px;
58
- color: #ffffff;
59
- width: 100%;
60
- }
1
+ .card_form_inner {
2
+ background: #232323;
3
+ border-radius: 8px;
4
+ padding: 15px;
5
+ width: 50%;
6
+ margin: 0 auto;
7
+ min-width: 325px;
8
+ margin-bottom: 20px;
9
+ }
10
+ .card_form_inner .card_label_text {
11
+ color: #fff;
12
+ }
13
+ .card_form_inner .StripeElement {
14
+ margin: 5px 0 10px;
15
+ }
16
+ .card_label_text {
17
+ color: #fff;
18
+ }
19
+ .payment_button {
20
+ text-align: center;
21
+ padding-top: 15px;
22
+ }
23
+ .payment_button button {
24
+ background-color: #212529;
25
+ font-size: 26px;
26
+ cursor: pointer;
27
+ padding: 15px 30px;
28
+ width: 200px;
29
+ border-radius: 8px;
30
+ color: #fff;
31
+ transition: opacity 0.5s;
32
+ }
33
+ .payment_button button:hover {
34
+ opacity: 0.7;
35
+ }
36
+
37
+ .disabled-payment-button button {
38
+ user-select: none;
39
+ pointer-events: none;
40
+ opacity: 0.3;
41
+ }
42
+
43
+ .checkout_error_block {
44
+ color: #e53935;
45
+ padding: 15px 0;
46
+ font-weight: 600;
47
+ }
48
+
49
+ .zip_element p {
50
+ margin-bottom: 0;
51
+ }
52
+ .zip_element input {
53
+ background-color: #000;
54
+ outline: none;
55
+ border: none;
56
+ font-size: 18px;
57
+ margin-top: 5px;
58
+ color: #ffffff;
59
+ width: 100%;
60
+ }