gab-social/app/javascript/gabsocial/components/modal/pro_upgrade_modal.js

105 lines
3.3 KiB
JavaScript
Raw Normal View History

2020-02-24 23:25:55 +00:00
import { defineMessages, injectIntl } from 'react-intl'
import ImmutablePureComponent from 'react-immutable-pure-component'
import {
URL_GAB_PRO,
DEFAULT_THEME,
} from '../../constants'
2020-02-24 23:25:55 +00:00
import Button from '../button'
import Text from '../text'
import Icon from '../icon'
import Image from '../image'
2020-02-24 23:25:55 +00:00
import ModalLayout from './modal_layout'
const messages = defineMessages({
2020-02-24 23:25:55 +00:00
title: { id: 'promo.gab_pro', defaultMessage: 'Upgrade to GabPRO' },
upgrade: { id: 'promo.upgrade', defaultMessage: 'Upgrade' },
learnMore: { id: 'promo.learn_more', defaultMessage: 'Learn more' },
2020-02-24 23:25:55 +00:00
text: { id: 'pro_upgrade_modal.text', defaultMessage: 'Gab is fully funded by people like you. Please consider supporting us on our mission to defend free expression online for all people.' },
benefits: { id: 'pro_upgrade_modal.benefits', defaultMessage: 'Here are some benefits that GabPRO members receive:' },
})
const mapStateToProps = (state) => ({
theme: state.getIn(['settings', 'displayOptions', 'theme'], DEFAULT_THEME),
2020-02-24 23:25:55 +00:00
})
2020-02-24 23:25:55 +00:00
export default
@injectIntl
@connect(mapStateToProps)
class ProUpgradeModal extends ImmutablePureComponent {
static propTypes = {
intl: PropTypes.object.isRequired,
2020-04-07 02:53:23 +01:00
onClose: PropTypes.func.isRequired,
theme: PropTypes.string.isRequired,
2020-02-24 23:25:55 +00:00
}
2020-02-24 23:25:55 +00:00
render() {
const {
intl,
onClose,
theme,
} = this.props
const imgSuffix = (theme === 'light' || !theme) ? 'light' : 'dark'
const title = (
<span className={[_s.default, _s.flexRow, _s.justifyContentCenter, _s.alignItemsCenter].join(' ')}>
<span className={[_s.default, _s.mr2].join(' ')}>
Upgrade to Gab
</span>
<span className={[_s.bgPro, _s.colorBlack, _s.radiusSmall, _s.px5, _s.py5].join(' ')}>PRO</span>
</span>
)
return (
2020-04-07 02:53:23 +01:00
<ModalLayout
title={title}
width={540}
2020-04-07 02:53:23 +01:00
onClose={onClose}
>
<Text size='medium' weight='medium' className={_s.mb10}>
2020-03-11 23:56:18 +00:00
{intl.formatMessage(messages.text)}
</Text>
<Text size='medium' color='secondary'>
2020-03-11 23:56:18 +00:00
{intl.formatMessage(messages.benefits)}
</Text>
<div className={[_s.default, _s.my10].join(' ')}>
<Image
src={`/headers/pro-features-${imgSuffix}.png`}
width='100%'
height='auto'
fit='cover'
className={_s.heightMin320PX}
/>
</div>
2020-02-24 23:25:55 +00:00
<div className={[_s.default, _s.flexRow, _s.py10].join(' ')}>
<Button
isOutline
color='brand'
backgroundColor='none'
href={URL_GAB_PRO}
className={[_s.flexRow, _s.alignItemsCenter, _s.justifyContentCenter, _s.mr10].join(' ')}
>
<Text color='inherit' weight='medium' align='center'>
{intl.formatMessage(messages.learnMore)}
</Text>
</Button>
<Button
href={URL_GAB_PRO}
className={[_s.flexRow, _s.flexGrow1, _s.alignItemsCenter, _s.justifyContentCenter].join(' ')}
>
<Text color='inherit' size='large' weight='bold' align='center'>
{intl.formatMessage(messages.upgrade)}
</Text>
<Icon id='arrow-right' size='20px' className={[_s.fillWhite, _s.ml5].join(' ')} />
</Button>
</div>
2020-02-24 23:25:55 +00:00
</ModalLayout>
)
}
2020-04-08 02:06:59 +01:00
}