diff options
author | 2021-07-17 20:32:22 +0530 | |
---|---|---|
committer | 2021-07-20 16:02:15 +0000 | |
commit | 45373f655f68fdd0b320cde175b6108454ad4731 (patch) | |
tree | c1ccb0c73639d754b68a36a1977b74471fe4b566 /src/features/planSelection/components/PlanItem.js | |
parent | New Crowdin updates (#1668) (diff) | |
download | ferdium-app-45373f655f68fdd0b320cde175b6108454ad4731.tar.gz ferdium-app-45373f655f68fdd0b320cde175b6108454ad4731.tar.zst ferdium-app-45373f655f68fdd0b320cde175b6108454ad4731.zip |
Removed Franz paid plans features:
- serviceLimit
- planSelection
- trialStatusBar
and other Franz features that were for different tiers of subscription.
Diffstat (limited to 'src/features/planSelection/components/PlanItem.js')
-rw-r--r-- | src/features/planSelection/components/PlanItem.js | 215 |
1 files changed, 0 insertions, 215 deletions
diff --git a/src/features/planSelection/components/PlanItem.js b/src/features/planSelection/components/PlanItem.js deleted file mode 100644 index e90532dec..000000000 --- a/src/features/planSelection/components/PlanItem.js +++ /dev/null | |||
@@ -1,215 +0,0 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | import injectSheet from 'react-jss'; | ||
6 | import classnames from 'classnames'; | ||
7 | import color from 'color'; | ||
8 | |||
9 | import { H2 } from '@meetfranz/ui'; | ||
10 | |||
11 | import { Button } from '@meetfranz/forms'; | ||
12 | import { mdiArrowRight } from '@mdi/js'; | ||
13 | |||
14 | const messages = defineMessages({ | ||
15 | perMonth: { | ||
16 | id: 'subscription.interval.perMonth', | ||
17 | defaultMessage: '!!!per month', | ||
18 | }, | ||
19 | perMonthPerUser: { | ||
20 | id: 'subscription.interval.perMonthPerUser', | ||
21 | defaultMessage: '!!!per month & user', | ||
22 | }, | ||
23 | bestValue: { | ||
24 | id: 'subscription.bestValue', | ||
25 | defaultMessage: '!!!Best value', | ||
26 | }, | ||
27 | }); | ||
28 | |||
29 | const styles = theme => ({ | ||
30 | root: { | ||
31 | display: 'flex', | ||
32 | flexDirection: 'column', | ||
33 | borderRadius: theme.borderRadius, | ||
34 | flex: 1, | ||
35 | color: theme.styleTypes.primary.accent, | ||
36 | overflow: 'hidden', | ||
37 | textAlign: 'center', | ||
38 | |||
39 | '& h2': { | ||
40 | textAlign: 'center', | ||
41 | marginBottom: 10, | ||
42 | fontSize: 30, | ||
43 | color: theme.styleTypes.primary.contrast, | ||
44 | }, | ||
45 | }, | ||
46 | currency: { | ||
47 | fontSize: 35, | ||
48 | }, | ||
49 | priceWrapper: { | ||
50 | height: 50, | ||
51 | marginBottom: 0, | ||
52 | marginTop: ({ text }) => (!text ? 15 : 0), | ||
53 | }, | ||
54 | price: { | ||
55 | fontSize: 50, | ||
56 | |||
57 | '& sup': { | ||
58 | fontSize: 20, | ||
59 | verticalAlign: 20, | ||
60 | }, | ||
61 | }, | ||
62 | text: { | ||
63 | marginBottom: 'auto', | ||
64 | }, | ||
65 | cta: { | ||
66 | background: theme.styleTypes.primary.accent, | ||
67 | color: theme.styleTypes.primary.contrast, | ||
68 | margin: [30, 'auto', 0, 'auto'], | ||
69 | }, | ||
70 | divider: { | ||
71 | width: 40, | ||
72 | border: 0, | ||
73 | borderTop: [1, 'solid', theme.styleTypes.primary.contrast], | ||
74 | margin: [15, 'auto', 20], | ||
75 | }, | ||
76 | header: { | ||
77 | padding: 20, | ||
78 | background: color(theme.styleTypes.primary.accent).darken(0.25).hex(), | ||
79 | color: theme.styleTypes.primary.contrast, | ||
80 | position: 'relative', | ||
81 | height: 'auto', | ||
82 | }, | ||
83 | content: { | ||
84 | padding: [10, 20, 20], | ||
85 | background: '#EFEFEF', | ||
86 | display: 'flex', | ||
87 | flexDirection: 'column', | ||
88 | justifyContent: 'space-between', | ||
89 | }, | ||
90 | simpleCTA: { | ||
91 | background: 'none', | ||
92 | color: theme.styleTypes.primary.accent, | ||
93 | |||
94 | '& svg': { | ||
95 | fill: theme.styleTypes.primary.accent, | ||
96 | }, | ||
97 | }, | ||
98 | bestValue: { | ||
99 | background: theme.styleTypes.success.accent, | ||
100 | color: theme.styleTypes.success.contrast, | ||
101 | right: -66, | ||
102 | top: -40, | ||
103 | height: 'auto', | ||
104 | position: 'absolute', | ||
105 | transform: 'rotateZ(45deg)', | ||
106 | textAlign: 'center', | ||
107 | padding: [5, 50], | ||
108 | transformOrigin: 'left bottom', | ||
109 | fontSize: 12, | ||
110 | boxShadow: '0 2px 6px rgba(0,0,0,0.15)', | ||
111 | }, | ||
112 | }); | ||
113 | |||
114 | export default @observer @injectSheet(styles) class PlanItem extends Component { | ||
115 | static propTypes = { | ||
116 | name: PropTypes.string.isRequired, | ||
117 | text: PropTypes.string.isRequired, | ||
118 | price: PropTypes.number.isRequired, | ||
119 | currency: PropTypes.string.isRequired, | ||
120 | upgrade: PropTypes.func.isRequired, | ||
121 | ctaLabel: PropTypes.string.isRequired, | ||
122 | simpleCTA: PropTypes.bool, | ||
123 | perUser: PropTypes.bool, | ||
124 | classes: PropTypes.object.isRequired, | ||
125 | bestValue: PropTypes.bool, | ||
126 | className: PropTypes.string, | ||
127 | children: PropTypes.element, | ||
128 | }; | ||
129 | |||
130 | static defaultProps = { | ||
131 | simpleCTA: false, | ||
132 | perUser: false, | ||
133 | children: null, | ||
134 | bestValue: false, | ||
135 | className: '', | ||
136 | } | ||
137 | |||
138 | static contextTypes = { | ||
139 | intl: intlShape, | ||
140 | }; | ||
141 | |||
142 | render() { | ||
143 | const { | ||
144 | name, | ||
145 | text, | ||
146 | price, | ||
147 | currency, | ||
148 | classes, | ||
149 | upgrade, | ||
150 | ctaLabel, | ||
151 | simpleCTA, | ||
152 | perUser, | ||
153 | bestValue, | ||
154 | className, | ||
155 | children, | ||
156 | } = this.props; | ||
157 | const { intl } = this.context; | ||
158 | |||
159 | const priceParts = `${price}`.split('.'); | ||
160 | |||
161 | return ( | ||
162 | <div className={classnames({ | ||
163 | [classes.root]: true, | ||
164 | [className]: className, | ||
165 | })} | ||
166 | > | ||
167 | <div className={classes.header}> | ||
168 | {bestValue && ( | ||
169 | <div className={classes.bestValue}> | ||
170 | {intl.formatMessage(messages.bestValue)} | ||
171 | </div> | ||
172 | )} | ||
173 | <H2 className={classes.planName}>{name}</H2> | ||
174 | {text && ( | ||
175 | <> | ||
176 | <p className={classes.text}> | ||
177 | {text} | ||
178 | </p> | ||
179 | <hr className={classes.divider} /> | ||
180 | </> | ||
181 | )} | ||
182 | <p className={classes.priceWrapper}> | ||
183 | <span className={classes.currency}>{currency}</span> | ||
184 | <span className={classes.price}> | ||
185 | {priceParts[0]} | ||
186 | <sup>{priceParts[1]}</sup> | ||
187 | </span> | ||
188 | </p> | ||
189 | <p className={classes.interval}> | ||
190 | {intl.formatMessage(perUser ? messages.perMonthPerUser : messages.perMonth)} | ||
191 | </p> | ||
192 | </div> | ||
193 | |||
194 | <div className={classes.content}> | ||
195 | {children} | ||
196 | |||
197 | <Button | ||
198 | className={classnames({ | ||
199 | [classes.cta]: true, | ||
200 | [classes.simpleCTA]: simpleCTA, | ||
201 | })} | ||
202 | icon={simpleCTA ? mdiArrowRight : null} | ||
203 | label={( | ||
204 | <> | ||
205 | {ctaLabel} | ||
206 | </> | ||
207 | )} | ||
208 | onClick={upgrade} | ||
209 | /> | ||
210 | </div> | ||
211 | |||
212 | </div> | ||
213 | ); | ||
214 | } | ||
215 | } | ||