tf-checkout-react 1.0.66 → 1.0.70

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 (40) hide show
  1. package/dist/api/index.d.ts +1 -0
  2. package/dist/components/common/FormikPhoneNumberField.d.ts +11 -0
  3. package/dist/components/confirmationContainer/config.d.ts +1 -0
  4. package/dist/components/confirmationContainer/index.d.ts +5 -11
  5. package/dist/components/confirmationContainer/social-buttons.d.ts +11 -0
  6. package/dist/components/loginModal/index.d.ts +1 -0
  7. package/dist/components/waitingList/index.d.ts +2 -1
  8. package/dist/index.d.ts +1 -0
  9. package/dist/normalizers/index.d.ts +1 -0
  10. package/dist/tf-checkout-react.cjs.development.js +449 -223
  11. package/dist/tf-checkout-react.cjs.development.js.map +1 -1
  12. package/dist/tf-checkout-react.cjs.production.min.js +1 -1
  13. package/dist/tf-checkout-react.cjs.production.min.js.map +1 -1
  14. package/dist/tf-checkout-react.esm.js +451 -226
  15. package/dist/tf-checkout-react.esm.js.map +1 -1
  16. package/dist/tf-checkout-styles.css +1 -1
  17. package/dist/types/referral-promotion.d.ts +1 -1
  18. package/dist/utils/index.d.ts +3 -0
  19. package/dist/utils/setConfigs.d.ts +10 -0
  20. package/package.json +9 -4
  21. package/src/api/index.ts +55 -37
  22. package/src/components/billing-info-container/index.tsx +8 -10
  23. package/src/components/billing-info-container/utils.ts +3 -3
  24. package/src/components/common/FormikPhoneNumberField.tsx +41 -0
  25. package/src/components/confirmationContainer/config.ts +72 -0
  26. package/src/components/confirmationContainer/index.tsx +107 -138
  27. package/src/components/confirmationContainer/social-buttons.tsx +91 -0
  28. package/src/components/confirmationContainer/style.css +87 -100
  29. package/src/components/loginModal/index.tsx +11 -4
  30. package/src/components/paymentContainer/index.tsx +3 -4
  31. package/src/components/registerModal/index.tsx +3 -3
  32. package/src/components/stripePayment/index.tsx +4 -4
  33. package/src/components/ticketsContainer/index.tsx +1 -3
  34. package/src/components/waitingList/index.tsx +6 -5
  35. package/src/env.ts +3 -3
  36. package/src/index.ts +1 -0
  37. package/src/normalizers/index.ts +3 -1
  38. package/src/types/referral-promotion.ts +1 -1
  39. package/src/utils/index.ts +3 -0
  40. package/src/utils/setConfigs.ts +21 -0
@@ -1,51 +1,39 @@
1
1
  /* eslint-disable react/no-unescaped-entities */
2
2
  import React, { useEffect, useRef, useState } from 'react'
3
3
  import './style.css'
4
- import SVG from 'react-inlinesvg'
5
4
  import _map from 'lodash/map'
6
5
  import _get from 'lodash/get'
7
-
8
6
  import { IReferralPromotion } from '../../types'
9
7
  import { getConfirmationData } from '../../api'
10
8
  import { AxiosError } from 'axios'
9
+ import SocialButtons from './social-buttons'
11
10
 
12
11
  export interface IShareButton {
13
12
  mainLabel: string;
14
13
  subLabel: string;
15
- svgSrc: string;
16
-
17
- containerClassName?: string;
18
- containerInnerClassName?: string;
19
- svgClassName?: string;
20
- svgWidth?: string;
21
- svgHeight?: string;
22
- svgFill?: string;
14
+ platform: string;
15
+ shareData: any;
23
16
  }
24
17
 
25
18
  export interface IConfirmationPage {
26
- referralPromotions: IReferralPromotion[];
27
- shareLink: string;
28
19
  isReferralEnabled: boolean;
20
+ showDefaultShareButtons: boolean;
21
+ messengerAppId: string;
29
22
  shareButtons: IShareButton[];
30
23
  onGetConfirmationDataSuccess: (res: any) => void;
31
24
  onGetConfirmationDataError: (e: AxiosError) => void;
32
25
  }
33
26
 
34
- const defaultSvg =
35
- 'https://img.icons8.com/ios-filled/50/000000/facebook-new.svg'
36
-
37
27
  export const ConfirmationContainer = ({
38
28
  isReferralEnabled,
39
- referralPromotions = [],
29
+ showDefaultShareButtons,
30
+ messengerAppId = '',
40
31
  shareButtons = [],
41
- shareLink = '',
42
32
  onGetConfirmationDataSuccess = () => {},
43
33
  onGetConfirmationDataError = () => {},
44
34
  }: IConfirmationPage) => {
45
35
  const inputRef = useRef(null)
46
- const [data, setData] = useState<any>({})
47
- const showShareButtons = Boolean(shareButtons.length)
48
- const showReferralPromotions = Boolean(referralPromotions.length)
36
+ const [data, setData] = useState<any>(null)
49
37
 
50
38
  // 1. get payment complete data ---> v1/order/${orderHash}/payment/complete/
51
39
 
@@ -61,6 +49,19 @@ export const ConfirmationContainer = ({
61
49
  try {
62
50
  const response = await getConfirmationData(hash)
63
51
  const data = _get(response, 'data.data.attributes')
52
+ data.personal_share_sales = data.personal_share_sales.map((d: any) => {
53
+ const salesData: IReferralPromotion = { label: `If your friends buy ${d.sales} tickets`, price: '' }
54
+ if(d.price === 0) {
55
+ salesData.subLabel = 'Your ticket becomes'
56
+ salesData.price = 'FREE!'
57
+ } else {
58
+ salesData.subLabel = 'Your ticket goes down to'
59
+ salesData.price = data.currency.symbol + d.price?.toFixed(2)
60
+ }
61
+
62
+ return salesData
63
+ })
64
+ data.personal_share_sales.unshift({ label: 'Your ticket is currently', price: data.currency.symbol + data.product_price?.toFixed(2) })
64
65
  setData(data)
65
66
  onGetConfirmationDataSuccess(response.data)
66
67
  } catch (error) {
@@ -69,139 +70,107 @@ export const ConfirmationContainer = ({
69
70
  }
70
71
  })()
71
72
  }, [])
73
+
74
+ const onChangeShareLink = (e: React.ChangeEvent<HTMLInputElement>) => {
75
+ const newData = { ...data, personal_share_link: e.target.value }
76
+ setData(newData)
77
+ }
72
78
 
73
79
  return (
74
80
  <div className="confirmation-page">
75
- <p className="title">Your Tickets are Confirmed!</p>
76
- <div className="share-message-section">
77
- <span className="main">Your tickets have been emailed to you</span>
78
- <span className="helper">Please bring them with you to the event</span>
79
- </div>
80
- { data.disable_referral === false && isReferralEnabled && (
81
+ {data && (
81
82
  <>
82
- <div className="referral_text_image_section">
83
- <div className="referral_text_section">
84
- <div className="referral_title_text">
85
- Your ticket can become
86
- <span className="strong-text"> cheaper </span>
87
- or even
88
- <span className="strong-text"> FREE!</span>
89
- </div>
90
- <div className="referral_text">
91
- <span className="strong-text"> Invite friends </span>
92
- and we'll refund up to
93
- <span className="strong-text"> 100% </span>
94
- of your ticket money, if they buy tickets as well!
95
- </div>
96
- </div>
97
- <img
98
- src="https://www.ticketfairy.com/uploaded/thumbnails/db_file_img_123847_400xauto.jpg"
99
- alt="No Data"
100
- />
83
+ <p className="title">Your Tickets are Confirmed!</p>
84
+ <div className="share-message-section">
85
+ <span className="main">Your tickets have been emailed to you</span>
86
+ <span className="helper">Please bring them with you to the event</span>
101
87
  </div>
102
- <div className="share_wrapper">
103
- <div className="share_section">
104
- <div className="invitation_section">
105
- <div className="invitation_title">
106
- How do you invite your friends?
88
+ { data.disable_referral === false && isReferralEnabled && (
89
+ <>
90
+ <div className="referral_text_image_section">
91
+ <div className="referral_text_section">
92
+ <div className="referral_title_text">
93
+ Your ticket can become
94
+ <span className="strong-text"> cheaper </span>
95
+ or even
96
+ <span className="strong-text"> FREE!</span>
97
+ </div>
98
+ <div className="referral_text">
99
+ <span className="strong-text"> Invite friends </span>
100
+ and we'll refund up to
101
+ <span className="strong-text"> 100% </span>
102
+ of your ticket money, if they buy tickets as well!
103
+ </div>
107
104
  </div>
108
- <div className="share_buttons">
109
- <div className="sharing-btn share-by-link">
110
- <h5 className="sharing-btn share-by-link label">
111
- Send them this link:
112
- </h5>
113
- <div
114
- aria-hidden={true}
115
- className="share-btn-inner share-by-link-copy"
116
- onClick={() =>
117
- navigator.clipboard.writeText(
118
- _get(inputRef, 'current.value')
119
- )
120
- }
121
- >
122
- <input
123
- ref={inputRef}
124
- className="share-input"
125
- value={shareLink}
126
- disabled={true}
127
- />
128
- <div className="svg_wrapper">
129
- <SVG
130
- className="share-icon"
131
- width="25px"
132
- height="25px"
133
- fill="#FFF"
134
- src={defaultSvg}
135
- />
136
- </div>
105
+ <img src={data.product_image} alt="No Data" />
106
+ </div>
107
+ <div className="share_wrapper">
108
+ <div className="share_section">
109
+ <div className="invitation_section">
110
+ <div className="invitation_title">
111
+ How do you invite your friends?
137
112
  </div>
138
- </div>
139
- {showShareButtons && (
140
- <div>
141
- <div className="convenient_buttons sharing-btn">
142
- or use one of these convenient buttons:
143
- </div>
144
- <div className="social-media-btns">
145
- {_map(shareButtons, shareButtonItem => (
113
+ <div className="share_buttons">
114
+ <div className="share-by-link">
115
+ <h5 className="share-by-link label">
116
+ Send them this link:
117
+ </h5>
118
+ <div className="share-btn-inner">
119
+ <input
120
+ ref={inputRef}
121
+ className="share-input"
122
+ value={data.personal_share_link}
123
+ onChange={onChangeShareLink}
124
+ />
146
125
  <div
147
- className={`sharing-btn ${shareButtonItem.containerClassName}`}
126
+ className='share-by-link-copy-icon'
127
+ onClick={() => navigator.clipboard.writeText(
128
+ _get(inputRef, 'current.value')
129
+ )}
148
130
  >
149
- <div
150
- aria-hidden={true}
151
- className={`share-btn-inner ${shareButtonItem.containerInnerClassName}`}
152
- onClick={() => {}}
153
- >
154
- <SVG
155
- className={
156
- shareButtonItem.svgClassName || 'share-icon'
157
- }
158
- width={shareButtonItem.svgWidth || '40px'}
159
- height={shareButtonItem.svgHeight || '40px'}
160
- fill={shareButtonItem.svgFill || '#FFF'}
161
- src={shareButtonItem.svgSrc || defaultSvg}
162
- />
163
- <span className="share-text">
164
- {shareButtonItem.mainLabel}
165
- <br /> {shareButtonItem.subLabel}
166
- </span>
167
- </div>
131
+ <img src="https://img.icons8.com/office/50/000000/copy.png" alt='copy' />
168
132
  </div>
169
- ))}
133
+ </div>
170
134
  </div>
135
+ {(showDefaultShareButtons || !!shareButtons.length) && (
136
+ <SocialButtons
137
+ showDefaultShareButtons={showDefaultShareButtons}
138
+ name={data.product_name}
139
+ appId={messengerAppId}
140
+ shareLink={data.personal_share_link}
141
+ shareButtons={shareButtons}
142
+ />
143
+ )}
171
144
  </div>
172
- )}
145
+ </div>
173
146
  </div>
174
- </div>
175
- </div>
176
- {showReferralPromotions && (
177
- <div className="pricing-section">
178
- <div className="invitation_title">How much cheaper?</div>
179
- {_map(referralPromotions, pricing => {
180
- const isFree = pricing.price === 'FREE'
181
- return (
182
- <div
183
- key={pricing.id}
184
- className={`pricing-section_wrapper ${isFree &&
185
- 'free_price'}`}
186
- >
187
- <div className="pricing-section_label">
188
- {pricing.label || 'Your ticket is currently'}
189
- {pricing.subLabel && (
190
- <div className="pricing-section_sublabel">
191
- {pricing.subLabel || 'Your ticket becomes'}
192
- </div>
193
- )}
194
- </div>
195
- <div className="pricing-section_price">
196
- {' '}
197
- {pricing.price}
147
+ <div className="pricing-section">
148
+ <div className="invitation_title">How much cheaper?</div>
149
+ {_map(data.personal_share_sales, (pricing, index) => {
150
+ return (
151
+ <div
152
+ key={index}
153
+ className='pricing-section_wrapper'
154
+ >
155
+ <div className="pricing-section_label">
156
+ {pricing.label}
157
+ {pricing.subLabel && (
158
+ <div className="pricing-section_sublabel">
159
+ {pricing.subLabel}
160
+ </div>
161
+ )}
162
+ </div>
163
+ <div className="pricing-section_price">
164
+ {' '}
165
+ {pricing.price}
166
+ </div>
198
167
  </div>
199
- </div>
200
- )
201
- })}
168
+ )
169
+ })}
170
+ </div>
202
171
  </div>
203
- )}
204
- </div>
172
+ </>
173
+ )}
205
174
  </>
206
175
  )}
207
176
  </div>
@@ -0,0 +1,91 @@
1
+ import React from 'react';
2
+ import { IShareButton } from'./index'
3
+ import config from './config'
4
+
5
+ const SocialComponent = ({ mainLabel, subLabel, platform, shareData }: IShareButton) => {
6
+ const Component = config(platform)?.component
7
+ const Icon = config(platform)?.icon
8
+
9
+ return (
10
+ <>
11
+ {Component && (
12
+ <Component {...shareData}>
13
+ <div className='social-media-sharing'>
14
+ <div className='share-icon'>
15
+ <Icon size={32} round />
16
+ </div>
17
+ <span className="share-text">
18
+ {mainLabel}
19
+ <br /> {subLabel}
20
+ </span>
21
+ </div>
22
+ </Component>
23
+ )}
24
+ </>
25
+ )
26
+ }
27
+
28
+ interface SocialButtonsTypes {
29
+ shareLink: string;
30
+ name: string;
31
+ appId: string;
32
+ showDefaultShareButtons: boolean;
33
+ shareButtons: IShareButton[]
34
+ }
35
+
36
+ const SocialButtons = ({ showDefaultShareButtons, shareLink, name, appId, shareButtons }: SocialButtonsTypes) => {
37
+ return (
38
+ <>
39
+ <div className="convenient_buttons">
40
+ or use one of these convenient buttons:
41
+ </div>
42
+ <div className="social-media-btns">
43
+ {showDefaultShareButtons && (
44
+ <>
45
+ <SocialComponent
46
+ mainLabel='Share on'
47
+ subLabel='Facebook'
48
+ platform='facebook'
49
+ shareData={{
50
+ quote: name,
51
+ url: shareLink
52
+ }}
53
+ />
54
+ <SocialComponent
55
+ mainLabel='Tweet to your'
56
+ subLabel='Followers'
57
+ platform='twitter'
58
+ shareData={{
59
+ title: name,
60
+ url: shareLink
61
+ }}
62
+ />
63
+ <SocialComponent
64
+ mainLabel='Message friends on'
65
+ subLabel='Facebook'
66
+ platform='messenger'
67
+ shareData={{
68
+ appId: appId,
69
+ url: shareLink
70
+ }}
71
+ />
72
+ <SocialComponent
73
+ mainLabel='Message friends on'
74
+ subLabel='Whatsapp'
75
+ platform='whatsapp'
76
+ shareData={{
77
+ title: name,
78
+ url: shareLink
79
+ }}
80
+ />
81
+ </>
82
+ )}
83
+ {shareButtons.map((shareButton: IShareButton, index: number) => (
84
+ <SocialComponent key={index} {...shareButton} />
85
+ ))}
86
+ </div>
87
+ </>
88
+ )
89
+ }
90
+
91
+ export default SocialButtons
@@ -2,6 +2,9 @@
2
2
  max-width: 1024px;
3
3
  margin: 0 auto;
4
4
  }
5
+ .confirmation-page button {
6
+ margin-top: inherit;
7
+ }
5
8
  .confirmation-page .strong-text {
6
9
  font-weight: 700;
7
10
  }
@@ -37,17 +40,17 @@
37
40
  align-items: center;
38
41
  justify-content: space-between;
39
42
  flex-wrap: wrap;
40
- margin: 20px -10px;
43
+ margin: 20px 0;
41
44
  }
42
- .confirmation-page .referral_text_image_section .referral_text_section {
45
+ .confirmation-page .referral_text_section {
43
46
  margin: 10px;
44
47
  }
45
- .confirmation-page .referral_text_image_section .referral_title_text {
48
+ .confirmation-page .referral_title_text {
46
49
  color: #f08057;
47
50
  font-size: 28px;
48
51
  padding-bottom: 10px;
49
52
  }
50
- .confirmation-page .referral_text_image_section .referral_text {
53
+ .confirmation-page .referral_text {
51
54
  font-size: 18px;
52
55
  }
53
56
  .confirmation-page .referral_text_image_section img {
@@ -60,136 +63,80 @@
60
63
  column-gap: 5rem;
61
64
  margin: 10px;
62
65
  }
63
- .confirmation-page .share_wrapper .invitation_title {
66
+ .confirmation-page .invitation_title {
64
67
  font-size: 22px;
65
68
  padding-bottom: 12px;
66
69
  padding-top: 12px;
67
70
  }
68
- .confirmation-page .share_wrapper .share_section {
71
+ .confirmation-page .share_section {
69
72
  display: flex;
70
73
  justify-content: space-between;
71
74
  flex-wrap: wrap;
72
75
  margin: 0 -10px;
73
76
  }
74
- .confirmation-page .share_wrapper .share_section .invitation_section {
77
+ .confirmation-page .invitation_section {
75
78
  flex: 1 1;
76
79
  padding: 0 5px;
77
80
  }
78
- .confirmation-page
79
- .share_wrapper
80
- .share_section
81
- .invitation_section
82
- .share_buttons {
81
+ .confirmation-page .share_buttons {
83
82
  display: grid;
84
83
  flex-wrap: wrap;
85
84
  margin: 0 -7px;
86
85
  }
87
- .confirmation-page
88
- .share_wrapper
89
- .share_section
90
- .invitation_section
91
- .share_buttons
92
- .social-media-btns {
86
+ .confirmation-page .convenient_buttons {
87
+ margin-top: 10px;
88
+ }
89
+ .confirmation-page .social-media-btns {
93
90
  display: grid;
94
91
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
92
+ grid-gap: 5px
95
93
  }
96
- .confirmation-page
97
- .share_wrapper
98
- .share_section
99
- .invitation_section
100
- .share_buttons
101
- .social-media-btns
102
- .sharing-btn {
94
+ .confirmation-page .sharing-btn {
103
95
  min-width: 130px;
104
- }
105
- .confirmation-page
106
- .share_wrapper
107
- .share_section
108
- .invitation_section
109
- .share-btn-inner.share-by-link-copy {
110
- padding: 0;
111
- text-align: left;
112
- }
113
- .confirmation-page
114
- .share_wrapper
115
- .share_section
116
- .invitation_section
117
- .sharing-button {
118
96
  flex: 1 1;
97
+ background-color: #000000;
98
+ }
99
+ .confirmation-page .sharing-btn a {
100
+ text-decoration: none;
119
101
  }
120
- .confirmation-page
121
- .share_wrapper
122
- .share_section
123
- .invitation_section
124
- .convenient_buttons.sharing-btn {
125
- display: inline;
126
- }
127
- .confirmation-page
128
- .share_wrapper
129
- .share_section
130
- .invitation_section
131
- .share-by-link {
102
+ .confirmation-page .share-by-link {
132
103
  background: #000;
133
104
  color: #fff;
134
- padding: 0;
105
+ padding: 10px;
135
106
  }
136
- .confirmation-page
137
- .share_wrapper
138
- .share_section
139
- .invitation_section
140
- .share-by-link.label {
107
+ .confirmation-page .share-by-link.label {
141
108
  text-align: left;
142
109
  padding: 0;
143
110
  margin: 0;
144
111
  }
145
- .confirmation-page
146
- .share_wrapper
147
- .share_section
148
- .invitation_section
149
- .sharing-btn {
150
- padding: 7px;
151
- text-align: center;
152
- flex: 1 1;
153
- }
154
- .confirmation-page
155
- .share_wrapper
156
- .share_section
157
- .invitation_section
158
- .share-btn-inner {
159
- background: #000;
112
+ .confirmation-page .share-btn-inner {
113
+ background-color: #000;
160
114
  color: #fff;
161
115
  padding: 10px;
116
+ display: inline-flex;
117
+ align-items: center;
118
+ width: 100%;
119
+ box-sizing: border-box;
120
+ cursor: pointer;
121
+ padding: 0;
122
+ text-align: left;
162
123
  }
163
- .confirmation-page
164
- .share_wrapper
165
- .share_section
166
- .invitation_section
167
- .share-btn-inner
168
- .svg_wrapper {
169
- display: inline;
170
- }
171
- .confirmation-page
172
- .share_wrapper
173
- .share_section
174
- .invitation_section
175
- .share-btn-inner
176
- .share-input {
124
+ .confirmation-page .share-input {
177
125
  width: 300px;
178
126
  text-align: left;
179
127
  background-color: #fff;
128
+ outline: none;
129
+ border: none;
130
+ padding: 5px;
180
131
  }
181
- .confirmation-page
182
- .share_wrapper
183
- .share_section
184
- .invitation_section
185
- .share-text {
132
+ .confirmation-page .share-text {
186
133
  width: 100%;
187
134
  padding-top: 8px;
188
135
  display: block;
189
136
  font-size: 13px;
190
137
  font-weight: 600;
191
138
  }
192
- .confirmation-page .share_wrapper .pricing-section_wrapper {
139
+ .confirmation-page .pricing-section_wrapper {
193
140
  display: grid;
194
141
  grid-template-columns: 1fr 1fr;
195
142
  padding: 15px;
@@ -197,19 +144,59 @@
197
144
  border: 1px solid #dcdcdc;
198
145
  margin: 10px 0;
199
146
  }
200
- .confirmation-page .share_wrapper .pricing-section_wrapper.free_price {
201
- color: #fff;
202
- background: #e9835b;
203
- border: 1px solid #eb7b4a;
204
- }
205
- .confirmation-page .share_wrapper .pricing-section_label {
147
+ .confirmation-page .pricing-section_label {
206
148
  font-weight: 600;
207
149
  }
208
- .confirmation-page .share_wrapper .pricing-section_sublabel {
150
+ .confirmation-page .pricing-section_sublabel {
209
151
  font-weight: 100;
210
152
  font-size: 14px;
211
153
  }
212
- .confirmation-page .share_wrapper .pricing-section_price {
154
+ .confirmation-page .pricing-section_price {
213
155
  text-align: right;
214
156
  font-weight: 600;
215
157
  }
158
+ .confirmation-page .share-by-link-copy-icon {
159
+ cursor: pointer;
160
+ color: #fff;
161
+ background-color: #32325d;
162
+ transition: all 150ms ease;
163
+ padding: 10px;
164
+ border-radius: 4px;
165
+ margin-left: 8px;
166
+ display: flex;
167
+ justify-content: center;
168
+ align-items: center;
169
+ }
170
+ .confirmation-page .share-by-link-copy-icon:hover {
171
+ background-color: #505050;
172
+ }
173
+ .confirmation-page .share-by-link-copy-icon img {
174
+ width: 14px;
175
+ }
176
+ .confirmation-page .social-media-sharing {
177
+ background-color: #000;
178
+ color: #fff;
179
+ padding: 10px;
180
+ text-align: center;
181
+ cursor: pointer;
182
+ }
183
+ .confirmation-page .share-icon {
184
+ display: inline-flex;
185
+ border-radius: 4px;
186
+ }
187
+ @media only screen and (max-width: 1050px) {
188
+ .confirmation-page .share_wrapper {
189
+ display: grid;
190
+ grid-template-columns: unset;
191
+ column-gap: 0;
192
+ margin: 15px;
193
+ }
194
+ }
195
+ @media only screen and (max-width: 480px) {
196
+ .confirmation-page .social-media-btns {
197
+ grid-template-columns: unset;
198
+ }
199
+ .confirmation-page .share-input {
200
+ width: 250px;
201
+ }
202
+ }