aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/app.js2
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js11
-rw-r--r--src/components/settings/team/TeamDashboard.js125
-rw-r--r--src/components/ui/PremiumFeatureContainer/styles.js1
-rw-r--r--src/containers/settings/TeamScreen.js63
-rw-r--r--src/i18n/locales/defaultMessages.json192
-rw-r--r--src/i18n/locales/en-US.json7
-rw-r--r--src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json25
-rw-r--r--src/i18n/messages/src/components/settings/team/TeamDashboard.json80
9 files changed, 452 insertions, 54 deletions
diff --git a/src/app.js b/src/app.js
index 6660feb46..96454779e 100644
--- a/src/app.js
+++ b/src/app.js
@@ -27,6 +27,7 @@ import RecipesScreen from './containers/settings/RecipesScreen';
27import ServicesScreen from './containers/settings/ServicesScreen'; 27import ServicesScreen from './containers/settings/ServicesScreen';
28import EditServiceScreen from './containers/settings/EditServiceScreen'; 28import EditServiceScreen from './containers/settings/EditServiceScreen';
29import AccountScreen from './containers/settings/AccountScreen'; 29import AccountScreen from './containers/settings/AccountScreen';
30import TeamScreen from './containers/settings/TeamScreen';
30import EditUserScreen from './containers/settings/EditUserScreen'; 31import EditUserScreen from './containers/settings/EditUserScreen';
31import EditSettingsScreen from './containers/settings/EditSettingsScreen'; 32import EditSettingsScreen from './containers/settings/EditSettingsScreen';
32import InviteSettingsScreen from './containers/settings/InviteScreen'; 33import InviteSettingsScreen from './containers/settings/InviteScreen';
@@ -77,6 +78,7 @@ window.addEventListener('load', () => {
77 <Route path="/settings/services/:action/:id" component={EditServiceScreen} /> 78 <Route path="/settings/services/:action/:id" component={EditServiceScreen} />
78 <Route path="/settings/user" component={AccountScreen} /> 79 <Route path="/settings/user" component={AccountScreen} />
79 <Route path="/settings/user/edit" component={EditUserScreen} /> 80 <Route path="/settings/user/edit" component={EditUserScreen} />
81 <Route path="/settings/team" component={TeamScreen} />
80 <Route path="/settings/app" component={EditSettingsScreen} /> 82 <Route path="/settings/app" component={EditSettingsScreen} />
81 <Route path="/settings/invite" component={InviteSettingsScreen} /> 83 <Route path="/settings/invite" component={InviteSettingsScreen} />
82 </Route> 84 </Route>
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index 953f702f8..0be1a22ba 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -18,6 +18,10 @@ const messages = defineMessages({
18 id: 'settings.navigation.account', 18 id: 'settings.navigation.account',
19 defaultMessage: '!!!Account', 19 defaultMessage: '!!!Account',
20 }, 20 },
21 team: {
22 id: 'settings.navigation.team',
23 defaultMessage: '!!!Manage Team',
24 },
21 settings: { 25 settings: {
22 id: 'settings.navigation.settings', 26 id: 'settings.navigation.settings',
23 defaultMessage: '!!!Settings', 27 defaultMessage: '!!!Settings',
@@ -71,6 +75,13 @@ export default @inject('stores') @observer class SettingsNavigation extends Comp
71 {intl.formatMessage(messages.account)} 75 {intl.formatMessage(messages.account)}
72 </Link> 76 </Link>
73 <Link 77 <Link
78 to="/settings/team"
79 className="settings-navigation__link"
80 activeClassName="is-active"
81 >
82 {intl.formatMessage(messages.team)}
83 </Link>
84 <Link
74 to="/settings/app" 85 to="/settings/app"
75 className="settings-navigation__link" 86 className="settings-navigation__link"
76 activeClassName="is-active" 87 activeClassName="is-active"
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
new file mode 100644
index 000000000..a29a262e9
--- /dev/null
+++ b/src/components/settings/team/TeamDashboard.js
@@ -0,0 +1,125 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer, PropTypes as MobxPropTypes } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5import ReactTooltip from 'react-tooltip';
6import injectSheet from 'react-jss';
7
8import Loader from '../../ui/Loader';
9import Button from '../../ui/Button';
10import Infobox from '../../ui/Infobox';
11import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer';
12
13const messages = defineMessages({
14 headline: {
15 id: 'settings.team.headline',
16 defaultMessage: '!!!Team',
17 },
18 contentHeadline: {
19 id: 'settings.team.contentHeadline',
20 defaultMessage: '!!!Franz for Teams',
21 },
22 intro: {
23 id: 'settings.team.intro',
24 defaultMessage: '!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.',
25 },
26 copy: {
27 id: 'settings.team.copy',
28 defaultMessage: '!!!Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!',
29 },
30 manageButton: {
31 id: 'settings.team.manageAction',
32 defaultMessage: '!!!Manage your Team',
33 },
34 upgradeButton: {
35 id: 'settings.team.upgradeAction',
36 defaultMessage: '!!!Upgrade your Account',
37 },
38});
39
40const styles = theme => ({
41 cta: {
42 marginTop: 40,
43 },
44});
45
46
47export default @injectSheet(styles) @observer class TeamDashboard extends Component {
48 static propTypes = {
49 user: MobxPropTypes.observableObject.isRequired,
50 isLoading: PropTypes.bool.isRequired,
51 userInfoRequestFailed: PropTypes.bool.isRequired,
52 retryUserInfoRequest: PropTypes.func.isRequired,
53 openTeamManagement: PropTypes.func.isRequired,
54 upgradeAccount: PropTypes.func.isRequired,
55 classes: PropTypes.object.isRequired,
56 };
57
58 static contextTypes = {
59 intl: intlShape,
60 };
61
62 render() {
63 const {
64 user,
65 isLoading,
66 userInfoRequestFailed,
67 retryUserInfoRequest,
68 openTeamManagement,
69 upgradeAccount,
70 classes,
71 } = this.props;
72 const { intl } = this.context;
73
74 return (
75 <div className="settings__main">
76 <div className="settings__header">
77 <span className="settings__header-item">
78 {intl.formatMessage(messages.headline)}
79 </span>
80 </div>
81 <div className="settings__body">
82 {isLoading && (
83 <Loader />
84 )}
85
86 {!isLoading && userInfoRequestFailed && (
87 <Infobox
88 icon="alert"
89 type="danger"
90 ctaLabel={intl.formatMessage(messages.tryReloadUserInfoRequest)}
91 ctaLoading={isLoading}
92 ctaOnClick={retryUserInfoRequest}
93 >
94 {intl.formatMessage(messages.userInfoRequestFailed)}
95 </Infobox>
96 )}
97
98 {!userInfoRequestFailed && (
99 <>
100 {!isLoading && (
101 <>
102 <PremiumFeatureContainer>
103 <>
104 <h1>{intl.formatMessage(messages.contentHeadline)}</h1>
105 <p>{intl.formatMessage(messages.intro)}</p>
106 <p>{intl.formatMessage(messages.copy)}</p>
107 {user.isSubscriptionOwner && (
108 <Button
109 label={intl.formatMessage(messages.manageButton)}
110 onClick={openTeamManagement}
111 className={classes.cta}
112 />
113 )}
114 </>
115 </PremiumFeatureContainer>
116 </>
117 )}
118 </>
119 )}
120 </div>
121 <ReactTooltip place="right" type="dark" effect="solid" />
122 </div>
123 );
124 }
125}
diff --git a/src/components/ui/PremiumFeatureContainer/styles.js b/src/components/ui/PremiumFeatureContainer/styles.js
index 81d6666c6..11cbfbb90 100644
--- a/src/components/ui/PremiumFeatureContainer/styles.js
+++ b/src/components/ui/PremiumFeatureContainer/styles.js
@@ -6,6 +6,7 @@ export default theme => ({
6 padding: 20, 6 padding: 20,
7 'border-radius': theme.borderRadius, 7 'border-radius': theme.borderRadius,
8 pointerEvents: 'none', 8 pointerEvents: 'none',
9 height: 'auto',
9 }, 10 },
10 titleContainer: { 11 titleContainer: {
11 display: 'flex', 12 display: 'flex',
diff --git a/src/containers/settings/TeamScreen.js b/src/containers/settings/TeamScreen.js
new file mode 100644
index 000000000..3a4b7ef77
--- /dev/null
+++ b/src/containers/settings/TeamScreen.js
@@ -0,0 +1,63 @@
1import { remote } from 'electron';
2import React, { Component } from 'react';
3import PropTypes from 'prop-types';
4import { inject, observer } from 'mobx-react';
5
6import PaymentStore from '../../stores/PaymentStore';
7import UserStore from '../../stores/UserStore';
8import AppStore from '../../stores/AppStore';
9
10import TeamDashboard from '../../components/settings/team/TeamDashboard';
11import ErrorBoundary from '../../components/util/ErrorBoundary';
12import { WEBSITE } from '../../environment';
13
14const { BrowserWindow } = remote;
15
16export default @inject('stores', 'actions') @observer class TeamScreen extends Component {
17 handleWebsiteLink(route) {
18 const { actions, stores } = this.props;
19
20 const url = `${WEBSITE}${route}?authToken=${stores.user.authToken}&utm_source=app&utm_medium=account_dashboard`;
21 console.log(url);
22
23 actions.app.openExternalUrl({ url });
24 }
25
26 render() {
27 const { user } = this.props.stores;
28
29 const isLoadingUserInfo = user.getUserInfoRequest.isExecuting;
30
31 return (
32 <ErrorBoundary>
33 <TeamDashboard
34 user={user.data}
35 isLoading={isLoadingUserInfo}
36 userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError}
37 retryUserInfoRequest={() => this.reloadData()}
38 openTeamManagement={() => this.handleWebsiteLink('/user/team')}
39 />
40 </ErrorBoundary>
41 );
42 }
43}
44
45TeamScreen.wrappedComponent.propTypes = {
46 stores: PropTypes.shape({
47 user: PropTypes.instanceOf(UserStore).isRequired,
48 payment: PropTypes.instanceOf(PaymentStore).isRequired,
49 app: PropTypes.instanceOf(AppStore).isRequired,
50 }).isRequired,
51 actions: PropTypes.shape({
52 payment: PropTypes.shape({
53 createDashboardUrl: PropTypes.func.isRequired,
54 }).isRequired,
55 app: PropTypes.shape({
56 openExternalUrl: PropTypes.func.isRequired,
57 }).isRequired,
58 user: PropTypes.shape({
59 update: PropTypes.func.isRequired,
60 delete: PropTypes.func.isRequired,
61 }).isRequired,
62 }).isRequired,
63};
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json
index 0641c510c..3046f50ce 100644
--- a/src/i18n/locales/defaultMessages.json
+++ b/src/i18n/locales/defaultMessages.json
@@ -1076,195 +1076,195 @@
1076 "defaultMessage": "!!!Account", 1076 "defaultMessage": "!!!Account",
1077 "end": { 1077 "end": {
1078 "column": 3, 1078 "column": 3,
1079 "line": 18 1079 "line": 16
1080 }, 1080 },
1081 "file": "src/components/settings/account/AccountDashboard.js", 1081 "file": "src/components/settings/account/AccountDashboard.js",
1082 "id": "settings.account.headline", 1082 "id": "settings.account.headline",
1083 "start": { 1083 "start": {
1084 "column": 12, 1084 "column": 12,
1085 "line": 15 1085 "line": 13
1086 } 1086 }
1087 }, 1087 },
1088 { 1088 {
1089 "defaultMessage": "!!!Your Subscription", 1089 "defaultMessage": "!!!Your Subscription",
1090 "end": { 1090 "end": {
1091 "column": 3, 1091 "column": 3,
1092 "line": 22 1092 "line": 20
1093 }, 1093 },
1094 "file": "src/components/settings/account/AccountDashboard.js", 1094 "file": "src/components/settings/account/AccountDashboard.js",
1095 "id": "settings.account.headlineSubscription", 1095 "id": "settings.account.headlineSubscription",
1096 "start": { 1096 "start": {
1097 "column": 24, 1097 "column": 24,
1098 "line": 19 1098 "line": 17
1099 } 1099 }
1100 }, 1100 },
1101 { 1101 {
1102 "defaultMessage": "!!!Upgrade your Account", 1102 "defaultMessage": "!!!Upgrade your Account",
1103 "end": { 1103 "end": {
1104 "column": 3, 1104 "column": 3,
1105 "line": 26 1105 "line": 24
1106 }, 1106 },
1107 "file": "src/components/settings/account/AccountDashboard.js", 1107 "file": "src/components/settings/account/AccountDashboard.js",
1108 "id": "settings.account.headlineUpgrade", 1108 "id": "settings.account.headlineUpgrade",
1109 "start": { 1109 "start": {
1110 "column": 19, 1110 "column": 19,
1111 "line": 23 1111 "line": 21
1112 }
1113 },
1114 {
1115 "defaultMessage": "!!Invoices",
1116 "end": {
1117 "column": 3,
1118 "line": 30
1119 },
1120 "file": "src/components/settings/account/AccountDashboard.js",
1121 "id": "settings.account.headlineInvoices",
1122 "start": {
1123 "column": 20,
1124 "line": 27
1125 } 1112 }
1126 }, 1113 },
1127 { 1114 {
1128 "defaultMessage": "!!Danger Zone", 1115 "defaultMessage": "!!Danger Zone",
1129 "end": { 1116 "end": {
1130 "column": 3, 1117 "column": 3,
1131 "line": 34 1118 "line": 28
1132 }, 1119 },
1133 "file": "src/components/settings/account/AccountDashboard.js", 1120 "file": "src/components/settings/account/AccountDashboard.js",
1134 "id": "settings.account.headlineDangerZone", 1121 "id": "settings.account.headlineDangerZone",
1135 "start": { 1122 "start": {
1136 "column": 22, 1123 "column": 22,
1137 "line": 31 1124 "line": 25
1138 } 1125 }
1139 }, 1126 },
1140 { 1127 {
1141 "defaultMessage": "!!!Manage your subscription", 1128 "defaultMessage": "!!!Manage your subscription",
1142 "end": { 1129 "end": {
1143 "column": 3, 1130 "column": 3,
1144 "line": 38 1131 "line": 32
1145 }, 1132 },
1146 "file": "src/components/settings/account/AccountDashboard.js", 1133 "file": "src/components/settings/account/AccountDashboard.js",
1147 "id": "settings.account.manageSubscription.label", 1134 "id": "settings.account.manageSubscription.label",
1148 "start": { 1135 "start": {
1149 "column": 33, 1136 "column": 33,
1150 "line": 35 1137 "line": 29
1151 } 1138 }
1152 }, 1139 },
1153 { 1140 {
1154 "defaultMessage": "!!!Basic Account", 1141 "defaultMessage": "!!!Basic Account",
1155 "end": { 1142 "end": {
1156 "column": 3, 1143 "column": 3,
1157 "line": 42 1144 "line": 36
1158 }, 1145 },
1159 "file": "src/components/settings/account/AccountDashboard.js", 1146 "file": "src/components/settings/account/AccountDashboard.js",
1160 "id": "settings.account.accountType.basic", 1147 "id": "settings.account.accountType.basic",
1161 "start": { 1148 "start": {
1162 "column": 20, 1149 "column": 20,
1163 "line": 39 1150 "line": 33
1164 } 1151 }
1165 }, 1152 },
1166 { 1153 {
1167 "defaultMessage": "!!!Premium Supporter Account", 1154 "defaultMessage": "!!!Premium Supporter Account",
1168 "end": { 1155 "end": {
1169 "column": 3, 1156 "column": 3,
1170 "line": 46 1157 "line": 40
1171 }, 1158 },
1172 "file": "src/components/settings/account/AccountDashboard.js", 1159 "file": "src/components/settings/account/AccountDashboard.js",
1173 "id": "settings.account.accountType.premium", 1160 "id": "settings.account.accountType.premium",
1174 "start": { 1161 "start": {
1175 "column": 22, 1162 "column": 22,
1176 "line": 43 1163 "line": 37
1177 } 1164 }
1178 }, 1165 },
1179 { 1166 {
1180 "defaultMessage": "!!!Edit Account", 1167 "defaultMessage": "!!!Edit Account",
1181 "end": { 1168 "end": {
1182 "column": 3, 1169 "column": 3,
1183 "line": 50 1170 "line": 44
1184 }, 1171 },
1185 "file": "src/components/settings/account/AccountDashboard.js", 1172 "file": "src/components/settings/account/AccountDashboard.js",
1186 "id": "settings.account.account.editButton", 1173 "id": "settings.account.account.editButton",
1187 "start": { 1174 "start": {
1188 "column": 21, 1175 "column": 21,
1189 "line": 47 1176 "line": 41
1177 }
1178 },
1179 {
1180 "defaultMessage": "!!Invoices",
1181 "end": {
1182 "column": 3,
1183 "line": 48
1184 },
1185 "file": "src/components/settings/account/AccountDashboard.js",
1186 "id": "settings.account.headlineInvoices",
1187 "start": {
1188 "column": 18,
1189 "line": 45
1190 } 1190 }
1191 }, 1191 },
1192 { 1192 {
1193 "defaultMessage": "!!!Download", 1193 "defaultMessage": "!!!Download",
1194 "end": { 1194 "end": {
1195 "column": 3, 1195 "column": 3,
1196 "line": 54 1196 "line": 52
1197 }, 1197 },
1198 "file": "src/components/settings/account/AccountDashboard.js", 1198 "file": "src/components/settings/account/AccountDashboard.js",
1199 "id": "settings.account.invoiceDownload", 1199 "id": "settings.account.invoiceDownload",
1200 "start": { 1200 "start": {
1201 "column": 19, 1201 "column": 19,
1202 "line": 51 1202 "line": 49
1203 } 1203 }
1204 }, 1204 },
1205 { 1205 {
1206 "defaultMessage": "!!!Could not load user information", 1206 "defaultMessage": "!!!Could not load user information",
1207 "end": { 1207 "end": {
1208 "column": 3, 1208 "column": 3,
1209 "line": 58 1209 "line": 56
1210 }, 1210 },
1211 "file": "src/components/settings/account/AccountDashboard.js", 1211 "file": "src/components/settings/account/AccountDashboard.js",
1212 "id": "settings.account.userInfoRequestFailed", 1212 "id": "settings.account.userInfoRequestFailed",
1213 "start": { 1213 "start": {
1214 "column": 25, 1214 "column": 25,
1215 "line": 55 1215 "line": 53
1216 } 1216 }
1217 }, 1217 },
1218 { 1218 {
1219 "defaultMessage": "!!!Try again", 1219 "defaultMessage": "!!!Try again",
1220 "end": { 1220 "end": {
1221 "column": 3, 1221 "column": 3,
1222 "line": 62 1222 "line": 60
1223 }, 1223 },
1224 "file": "src/components/settings/account/AccountDashboard.js", 1224 "file": "src/components/settings/account/AccountDashboard.js",
1225 "id": "settings.account.tryReloadUserInfoRequest", 1225 "id": "settings.account.tryReloadUserInfoRequest",
1226 "start": { 1226 "start": {
1227 "column": 28, 1227 "column": 28,
1228 "line": 59 1228 "line": 57
1229 } 1229 }
1230 }, 1230 },
1231 { 1231 {
1232 "defaultMessage": "!!!Delete account", 1232 "defaultMessage": "!!!Delete account",
1233 "end": { 1233 "end": {
1234 "column": 3, 1234 "column": 3,
1235 "line": 66 1235 "line": 64
1236 }, 1236 },
1237 "file": "src/components/settings/account/AccountDashboard.js", 1237 "file": "src/components/settings/account/AccountDashboard.js",
1238 "id": "settings.account.deleteAccount", 1238 "id": "settings.account.deleteAccount",
1239 "start": { 1239 "start": {
1240 "column": 17, 1240 "column": 17,
1241 "line": 63 1241 "line": 61
1242 } 1242 }
1243 }, 1243 },
1244 { 1244 {
1245 "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.", 1245 "defaultMessage": "!!!If you don't need your Franz account any longer, you can delete your account and all related data here.",
1246 "end": { 1246 "end": {
1247 "column": 3, 1247 "column": 3,
1248 "line": 70 1248 "line": 68
1249 }, 1249 },
1250 "file": "src/components/settings/account/AccountDashboard.js", 1250 "file": "src/components/settings/account/AccountDashboard.js",
1251 "id": "settings.account.deleteInfo", 1251 "id": "settings.account.deleteInfo",
1252 "start": { 1252 "start": {
1253 "column": 14, 1253 "column": 14,
1254 "line": 67 1254 "line": 65
1255 } 1255 }
1256 }, 1256 },
1257 { 1257 {
1258 "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", 1258 "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!",
1259 "end": { 1259 "end": {
1260 "column": 3, 1260 "column": 3,
1261 "line": 74 1261 "line": 72
1262 }, 1262 },
1263 "file": "src/components/settings/account/AccountDashboard.js", 1263 "file": "src/components/settings/account/AccountDashboard.js",
1264 "id": "settings.account.deleteEmailSent", 1264 "id": "settings.account.deleteEmailSent",
1265 "start": { 1265 "start": {
1266 "column": 19, 1266 "column": 19,
1267 "line": 71 1267 "line": 69
1268 } 1268 }
1269 } 1269 }
1270 ], 1270 ],
@@ -1312,42 +1312,55 @@
1312 } 1312 }
1313 }, 1313 },
1314 { 1314 {
1315 "defaultMessage": "!!!Settings", 1315 "defaultMessage": "!!!Manage Team",
1316 "end": { 1316 "end": {
1317 "column": 3, 1317 "column": 3,
1318 "line": 24 1318 "line": 24
1319 }, 1319 },
1320 "file": "src/components/settings/navigation/SettingsNavigation.js", 1320 "file": "src/components/settings/navigation/SettingsNavigation.js",
1321 "id": "settings.navigation.team",
1322 "start": {
1323 "column": 8,
1324 "line": 21
1325 }
1326 },
1327 {
1328 "defaultMessage": "!!!Settings",
1329 "end": {
1330 "column": 3,
1331 "line": 28
1332 },
1333 "file": "src/components/settings/navigation/SettingsNavigation.js",
1321 "id": "settings.navigation.settings", 1334 "id": "settings.navigation.settings",
1322 "start": { 1335 "start": {
1323 "column": 12, 1336 "column": 12,
1324 "line": 21 1337 "line": 25
1325 } 1338 }
1326 }, 1339 },
1327 { 1340 {
1328 "defaultMessage": "!!!Invite Friends", 1341 "defaultMessage": "!!!Invite Friends",
1329 "end": { 1342 "end": {
1330 "column": 3, 1343 "column": 3,
1331 "line": 28 1344 "line": 32
1332 }, 1345 },
1333 "file": "src/components/settings/navigation/SettingsNavigation.js", 1346 "file": "src/components/settings/navigation/SettingsNavigation.js",
1334 "id": "settings.navigation.inviteFriends", 1347 "id": "settings.navigation.inviteFriends",
1335 "start": { 1348 "start": {
1336 "column": 17, 1349 "column": 17,
1337 "line": 25 1350 "line": 29
1338 } 1351 }
1339 }, 1352 },
1340 { 1353 {
1341 "defaultMessage": "!!!Logout", 1354 "defaultMessage": "!!!Logout",
1342 "end": { 1355 "end": {
1343 "column": 3, 1356 "column": 3,
1344 "line": 32 1357 "line": 36
1345 }, 1358 },
1346 "file": "src/components/settings/navigation/SettingsNavigation.js", 1359 "file": "src/components/settings/navigation/SettingsNavigation.js",
1347 "id": "settings.navigation.logout", 1360 "id": "settings.navigation.logout",
1348 "start": { 1361 "start": {
1349 "column": 10, 1362 "column": 10,
1350 "line": 29 1363 "line": 33
1351 } 1364 }
1352 } 1365 }
1353 ], 1366 ],
@@ -2205,6 +2218,89 @@
2205 { 2218 {
2206 "descriptors": [ 2219 "descriptors": [
2207 { 2220 {
2221 "defaultMessage": "!!!Team",
2222 "end": {
2223 "column": 3,
2224 "line": 16
2225 },
2226 "file": "src/components/settings/team/TeamDashboard.js",
2227 "id": "settings.team.headline",
2228 "start": {
2229 "column": 12,
2230 "line": 13
2231 }
2232 },
2233 {
2234 "defaultMessage": "!!!Franz for Teams",
2235 "end": {
2236 "column": 3,
2237 "line": 20
2238 },
2239 "file": "src/components/settings/team/TeamDashboard.js",
2240 "id": "settings.team.contentHeadline",
2241 "start": {
2242 "column": 19,
2243 "line": 17
2244 }
2245 },
2246 {
2247 "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
2248 "end": {
2249 "column": 3,
2250 "line": 24
2251 },
2252 "file": "src/components/settings/team/TeamDashboard.js",
2253 "id": "settings.team.intro",
2254 "start": {
2255 "column": 9,
2256 "line": 21
2257 }
2258 },
2259 {
2260 "defaultMessage": "!!!Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
2261 "end": {
2262 "column": 3,
2263 "line": 28
2264 },
2265 "file": "src/components/settings/team/TeamDashboard.js",
2266 "id": "settings.team.copy",
2267 "start": {
2268 "column": 8,
2269 "line": 25
2270 }
2271 },
2272 {
2273 "defaultMessage": "!!!Manage your Team",
2274 "end": {
2275 "column": 3,
2276 "line": 32
2277 },
2278 "file": "src/components/settings/team/TeamDashboard.js",
2279 "id": "settings.team.manageAction",
2280 "start": {
2281 "column": 16,
2282 "line": 29
2283 }
2284 },
2285 {
2286 "defaultMessage": "!!!Upgrade your Account",
2287 "end": {
2288 "column": 3,
2289 "line": 36
2290 },
2291 "file": "src/components/settings/team/TeamDashboard.js",
2292 "id": "settings.team.upgradeAction",
2293 "start": {
2294 "column": 17,
2295 "line": 33
2296 }
2297 }
2298 ],
2299 "path": "src/components/settings/team/TeamDashboard.json"
2300 },
2301 {
2302 "descriptors": [
2303 {
2208 "defaultMessage": "!!!Account", 2304 "defaultMessage": "!!!Account",
2209 "end": { 2305 "end": {
2210 "column": 3, 2306 "column": 3,
@@ -3147,7 +3243,7 @@
3147 } 3243 }
3148 }, 3244 },
3149 { 3245 {
3150 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @MeetFranz", 3246 "defaultMessage": "!!! I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger",
3151 "end": { 3247 "end": {
3152 "column": 3, 3248 "column": 3,
3153 "line": 42 3249 "line": 42
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json
index 06cda4aca..8d46f7e29 100644
--- a/src/i18n/locales/en-US.json
+++ b/src/i18n/locales/en-US.json
@@ -168,6 +168,7 @@
168 "settings.navigation.inviteFriends": "Invite Friends", 168 "settings.navigation.inviteFriends": "Invite Friends",
169 "settings.navigation.logout": "Logout", 169 "settings.navigation.logout": "Logout",
170 "settings.navigation.settings": "Settings", 170 "settings.navigation.settings": "Settings",
171 "settings.navigation.team": "Manage Team",
171 "settings.navigation.yourServices": "Your services", 172 "settings.navigation.yourServices": "Your services",
172 "settings.recipes.all": "All services", 173 "settings.recipes.all": "All services",
173 "settings.recipes.dev": "Development", 174 "settings.recipes.dev": "Development",
@@ -226,6 +227,12 @@
226 "settings.services.tooltip.isMuted": "All sounds are muted", 227 "settings.services.tooltip.isMuted": "All sounds are muted",
227 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled", 228 "settings.services.tooltip.notificationsDisabled": "Notifications are disabled",
228 "settings.services.updatedInfo": "Your changes have been saved", 229 "settings.services.updatedInfo": "Your changes have been saved",
230 "settings.team.contentHeadline": "Franz for Teams",
231 "settings.team.copy": "Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
232 "settings.team.headline": "Team",
233 "settings.team.intro": "You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
234 "settings.team.manageAction": "Manage your Team",
235 "settings.team.upgradeAction": "Upgrade your Account",
229 "settings.user.form.accountType.company": "Company", 236 "settings.user.form.accountType.company": "Company",
230 "settings.user.form.accountType.individual": "Individual", 237 "settings.user.form.accountType.individual": "Individual",
231 "settings.user.form.accountType.label": "Account type", 238 "settings.user.form.accountType.label": "Account type",
diff --git a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
index 785ce9f29..5b854641a 100644
--- a/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
+++ b/src/i18n/messages/src/components/settings/navigation/SettingsNavigation.json
@@ -39,15 +39,28 @@
39 } 39 }
40 }, 40 },
41 { 41 {
42 "id": "settings.navigation.team",
43 "defaultMessage": "!!!Manage Team",
44 "file": "src/components/settings/navigation/SettingsNavigation.js",
45 "start": {
46 "line": 21,
47 "column": 8
48 },
49 "end": {
50 "line": 24,
51 "column": 3
52 }
53 },
54 {
42 "id": "settings.navigation.settings", 55 "id": "settings.navigation.settings",
43 "defaultMessage": "!!!Settings", 56 "defaultMessage": "!!!Settings",
44 "file": "src/components/settings/navigation/SettingsNavigation.js", 57 "file": "src/components/settings/navigation/SettingsNavigation.js",
45 "start": { 58 "start": {
46 "line": 21, 59 "line": 25,
47 "column": 12 60 "column": 12
48 }, 61 },
49 "end": { 62 "end": {
50 "line": 24, 63 "line": 28,
51 "column": 3 64 "column": 3
52 } 65 }
53 }, 66 },
@@ -56,11 +69,11 @@
56 "defaultMessage": "!!!Invite Friends", 69 "defaultMessage": "!!!Invite Friends",
57 "file": "src/components/settings/navigation/SettingsNavigation.js", 70 "file": "src/components/settings/navigation/SettingsNavigation.js",
58 "start": { 71 "start": {
59 "line": 25, 72 "line": 29,
60 "column": 17 73 "column": 17
61 }, 74 },
62 "end": { 75 "end": {
63 "line": 28, 76 "line": 32,
64 "column": 3 77 "column": 3
65 } 78 }
66 }, 79 },
@@ -69,11 +82,11 @@
69 "defaultMessage": "!!!Logout", 82 "defaultMessage": "!!!Logout",
70 "file": "src/components/settings/navigation/SettingsNavigation.js", 83 "file": "src/components/settings/navigation/SettingsNavigation.js",
71 "start": { 84 "start": {
72 "line": 29, 85 "line": 33,
73 "column": 10 86 "column": 10
74 }, 87 },
75 "end": { 88 "end": {
76 "line": 32, 89 "line": 36,
77 "column": 3 90 "column": 3
78 } 91 }
79 } 92 }
diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
new file mode 100644
index 000000000..91b6754ea
--- /dev/null
+++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json
@@ -0,0 +1,80 @@
1[
2 {
3 "id": "settings.team.headline",
4 "defaultMessage": "!!!Team",
5 "file": "src/components/settings/team/TeamDashboard.js",
6 "start": {
7 "line": 14,
8 "column": 12
9 },
10 "end": {
11 "line": 17,
12 "column": 3
13 }
14 },
15 {
16 "id": "settings.team.contentHeadline",
17 "defaultMessage": "!!!Franz for Teams",
18 "file": "src/components/settings/team/TeamDashboard.js",
19 "start": {
20 "line": 18,
21 "column": 19
22 },
23 "end": {
24 "line": 21,
25 "column": 3
26 }
27 },
28 {
29 "id": "settings.team.intro",
30 "defaultMessage": "!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.",
31 "file": "src/components/settings/team/TeamDashboard.js",
32 "start": {
33 "line": 22,
34 "column": 9
35 },
36 "end": {
37 "line": 25,
38 "column": 3
39 }
40 },
41 {
42 "id": "settings.team.copy",
43 "defaultMessage": "!!!Franz for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!",
44 "file": "src/components/settings/team/TeamDashboard.js",
45 "start": {
46 "line": 26,
47 "column": 8
48 },
49 "end": {
50 "line": 29,
51 "column": 3
52 }
53 },
54 {
55 "id": "settings.team.manageAction",
56 "defaultMessage": "!!!Manage your Team",
57 "file": "src/components/settings/team/TeamDashboard.js",
58 "start": {
59 "line": 30,
60 "column": 16
61 },
62 "end": {
63 "line": 33,
64 "column": 3
65 }
66 },
67 {
68 "id": "settings.team.upgradeAction",
69 "defaultMessage": "!!!Upgrade your Account",
70 "file": "src/components/settings/team/TeamDashboard.js",
71 "start": {
72 "line": 34,
73 "column": 17
74 },
75 "end": {
76 "line": 37,
77 "column": 3
78 }
79 }
80] \ No newline at end of file