1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { defineMessages, intlShape } from 'react-intl';
import { FeatureItem } from './FeatureItem';
const messages = defineMessages({
availableRecipes: {
id: 'pricing.features.recipes',
defaultMessage: '!!!Choose from more than 70 Services', // TODO: Make this dynamic
},
accountSync: {
id: 'pricing.features.accountSync',
defaultMessage: '!!!Account Synchronisation',
},
desktopNotifications: {
id: 'pricing.features.desktopNotifications',
defaultMessage: '!!!Desktop Notifications',
},
unlimitedServices: {
id: 'pricing.features.unlimitedServices',
defaultMessage: '!!!Add unlimited services',
},
spellchecker: {
id: 'pricing.features.spellchecker',
defaultMessage: '!!!Spellchecker support',
},
workspaces: {
id: 'pricing.features.workspaces',
defaultMessage: '!!!Workspaces',
},
customWebsites: {
id: 'pricing.features.customWebsites',
defaultMessage: '!!!Add Custom Websites',
},
onPremise: {
id: 'pricing.features.onPremise',
defaultMessage: '!!!On-premise & other Hosted Services',
},
thirdPartyServices: {
id: 'pricing.features.thirdPartyServices',
defaultMessage: '!!!Install 3rd party services',
},
serviceProxies: {
id: 'pricing.features.serviceProxies',
defaultMessage: '!!!Service Proxies',
},
teamManagement: {
id: 'pricing.features.teamManagement',
defaultMessage: '!!!Team Management',
},
});
export class FeatureList extends Component {
static propTypes = {
className: PropTypes.string,
featureClassName: PropTypes.string,
};
static defaultProps = {
className: '',
featureClassName: '',
}
static contextTypes = {
intl: intlShape,
};
render() {
const {
className,
featureClassName,
} = this.props;
const { intl } = this.context;
const features = [
messages.availableRecipes,
messages.accountSync,
messages.desktopNotifications,
messages.spellchecker,
messages.workspaces,
messages.customWebsites,
messages.thirdPartyServices,
messages.unlimitedServices,
messages.onPremise,
messages.serviceProxies,
messages.teamManagement,
];
return (
<ul className={className}>
{features.map((feature) => <FeatureItem name={intl.formatMessage(feature)} className={featureClassName} />)}
</ul>
);
}
}
export default FeatureList;
|