diff options
32 files changed, 519 insertions, 271 deletions
diff --git a/src/assets/images/workspaces/teaser_dark.png b/src/assets/images/workspaces/teaser_dark.png deleted file mode 100644 index 5b6d7334b..000000000 --- a/src/assets/images/workspaces/teaser_dark.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/assets/images/workspaces/teaser_light.png b/src/assets/images/workspaces/teaser_light.png deleted file mode 100644 index 635af43fa..000000000 --- a/src/assets/images/workspaces/teaser_light.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/components/TrialActivationInfoBar.js b/src/components/TrialActivationInfoBar.js index acdf51d08..77ab97565 100644 --- a/src/components/TrialActivationInfoBar.js +++ b/src/components/TrialActivationInfoBar.js | |||
@@ -20,7 +20,7 @@ const styles = { | |||
20 | position: 'absolute', | 20 | position: 'absolute', |
21 | top: -50, | 21 | top: -50, |
22 | transition: 'top 0.3s', | 22 | transition: 'top 0.3s', |
23 | zIndex: 300, | 23 | zIndex: 500, |
24 | width: 'calc(100% - 300px)', | 24 | width: 'calc(100% - 300px)', |
25 | }, | 25 | }, |
26 | show: { | 26 | show: { |
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 4fd1e8163..ac2594604 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js | |||
@@ -97,6 +97,7 @@ const messages = defineMessages({ | |||
97 | class AccountDashboard extends Component { | 97 | class AccountDashboard extends Component { |
98 | static propTypes = { | 98 | static propTypes = { |
99 | user: MobxPropTypes.observableObject.isRequired, | 99 | user: MobxPropTypes.observableObject.isRequired, |
100 | isPremiumOverrideUser: PropTypes.bool.isRequired, | ||
100 | isProUser: PropTypes.bool.isRequired, | 101 | isProUser: PropTypes.bool.isRequired, |
101 | isLoading: PropTypes.bool.isRequired, | 102 | isLoading: PropTypes.bool.isRequired, |
102 | userInfoRequestFailed: PropTypes.bool.isRequired, | 103 | userInfoRequestFailed: PropTypes.bool.isRequired, |
@@ -117,6 +118,7 @@ class AccountDashboard extends Component { | |||
117 | render() { | 118 | render() { |
118 | const { | 119 | const { |
119 | user, | 120 | user, |
121 | isPremiumOverrideUser, | ||
120 | isProUser, | 122 | isProUser, |
121 | isLoading, | 123 | isLoading, |
122 | userInfoRequestFailed, | 124 | userInfoRequestFailed, |
@@ -213,7 +215,7 @@ class AccountDashboard extends Component { | |||
213 | {intl.formatMessage(messages.yourLicense)} | 215 | {intl.formatMessage(messages.yourLicense)} |
214 | </H2> | 216 | </H2> |
215 | <p> | 217 | <p> |
216 | {planName} | 218 | {isPremiumOverrideUser ? 'Franz Premium' : planName} |
217 | {user.team.isTrial && ( | 219 | {user.team.isTrial && ( |
218 | <> | 220 | <> |
219 | {' – '} | 221 | {' – '} |
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js index 990ee52e7..366b0113a 100644 --- a/src/components/settings/team/TeamDashboard.js +++ b/src/components/settings/team/TeamDashboard.js | |||
@@ -4,11 +4,14 @@ import { observer } from 'mobx-react'; | |||
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import ReactTooltip from 'react-tooltip'; | 5 | import ReactTooltip from 'react-tooltip'; |
6 | import injectSheet from 'react-jss'; | 6 | import injectSheet from 'react-jss'; |
7 | import classnames from 'classnames'; | ||
7 | 8 | ||
9 | import { Badge } from '@meetfranz/ui'; | ||
8 | import Loader from '../../ui/Loader'; | 10 | import Loader from '../../ui/Loader'; |
9 | import Button from '../../ui/Button'; | 11 | import Button from '../../ui/Button'; |
10 | import Infobox from '../../ui/Infobox'; | 12 | import Infobox from '../../ui/Infobox'; |
11 | import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer'; | 13 | import globalMessages from '../../../i18n/globalMessages'; |
14 | import UpgradeButton from '../../ui/UpgradeButton'; | ||
12 | 15 | ||
13 | const messages = defineMessages({ | 16 | const messages = defineMessages({ |
14 | headline: { | 17 | headline: { |
@@ -40,6 +43,7 @@ const messages = defineMessages({ | |||
40 | const styles = { | 43 | const styles = { |
41 | cta: { | 44 | cta: { |
42 | margin: [40, 'auto'], | 45 | margin: [40, 'auto'], |
46 | height: 'auto', | ||
43 | }, | 47 | }, |
44 | container: { | 48 | container: { |
45 | display: 'flex', | 49 | display: 'flex', |
@@ -69,6 +73,20 @@ const styles = { | |||
69 | order: 1, | 73 | order: 1, |
70 | }, | 74 | }, |
71 | }, | 75 | }, |
76 | headline: { | ||
77 | marginBottom: 0, | ||
78 | }, | ||
79 | headlineWithSpacing: { | ||
80 | marginBottom: 'inherit', | ||
81 | }, | ||
82 | proRequired: { | ||
83 | margin: [10, 0, 40], | ||
84 | height: 'auto', | ||
85 | }, | ||
86 | buttonContainer: { | ||
87 | display: 'flex', | ||
88 | height: 'auto', | ||
89 | }, | ||
72 | }; | 90 | }; |
73 | 91 | ||
74 | 92 | ||
@@ -79,6 +97,7 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
79 | retryUserInfoRequest: PropTypes.func.isRequired, | 97 | retryUserInfoRequest: PropTypes.func.isRequired, |
80 | openTeamManagement: PropTypes.func.isRequired, | 98 | openTeamManagement: PropTypes.func.isRequired, |
81 | classes: PropTypes.object.isRequired, | 99 | classes: PropTypes.object.isRequired, |
100 | isProUser: PropTypes.bool.isRequired, | ||
82 | }; | 101 | }; |
83 | 102 | ||
84 | static contextTypes = { | 103 | static contextTypes = { |
@@ -91,6 +110,7 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
91 | userInfoRequestFailed, | 110 | userInfoRequestFailed, |
92 | retryUserInfoRequest, | 111 | retryUserInfoRequest, |
93 | openTeamManagement, | 112 | openTeamManagement, |
113 | isProUser, | ||
94 | classes, | 114 | classes, |
95 | } = this.props; | 115 | } = this.props; |
96 | const { intl } = this.context; | 116 | const { intl } = this.context; |
@@ -123,23 +143,42 @@ export default @injectSheet(styles) @observer class TeamDashboard extends Compon | |||
123 | <> | 143 | <> |
124 | {!isLoading && ( | 144 | {!isLoading && ( |
125 | <> | 145 | <> |
126 | <PremiumFeatureContainer> | 146 | <> |
127 | <> | 147 | <h1 className={classnames({ |
128 | <h1>{intl.formatMessage(messages.contentHeadline)}</h1> | 148 | [classes.headline]: true, |
129 | <div className={classes.container}> | 149 | [classes.headlineWithSpacing]: isProUser, |
130 | <div className={classes.content}> | 150 | })} |
131 | <p>{intl.formatMessage(messages.intro)}</p> | 151 | > |
132 | <p>{intl.formatMessage(messages.copy)}</p> | 152 | {intl.formatMessage(messages.contentHeadline)} |
133 | </div> | 153 | |
134 | <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Franz for Teams" /> | 154 | </h1> |
155 | {!isProUser && ( | ||
156 | <Badge className={classes.proRequired}>{intl.formatMessage(globalMessages.proRequired)}</Badge> | ||
157 | )} | ||
158 | <div className={classes.container}> | ||
159 | <div className={classes.content}> | ||
160 | <p>{intl.formatMessage(messages.intro)}</p> | ||
161 | <p>{intl.formatMessage(messages.copy)}</p> | ||
135 | </div> | 162 | </div> |
136 | </> | 163 | <img className={classes.image} src="https://cdn.franzinfra.com/announcements/assets/teams.png" alt="Franz for Teams" /> |
137 | </PremiumFeatureContainer> | 164 | </div> |
138 | <Button | 165 | <div className={classes.buttonContainer}> |
139 | label={intl.formatMessage(messages.manageButton)} | 166 | {!isProUser ? ( |
140 | onClick={openTeamManagement} | 167 | <UpgradeButton |
141 | className={classes.cta} | 168 | className={classes.cta} |
142 | /> | 169 | gaEventInfo={{ category: 'Todos', event: 'upgrade' }} |
170 | requiresPro | ||
171 | short | ||
172 | /> | ||
173 | ) : ( | ||
174 | <Button | ||
175 | label={intl.formatMessage(messages.manageButton)} | ||
176 | onClick={openTeamManagement} | ||
177 | className={classes.cta} | ||
178 | /> | ||
179 | )} | ||
180 | </div> | ||
181 | </> | ||
143 | </> | 182 | </> |
144 | )} | 183 | )} |
145 | </> | 184 | </> |
diff --git a/src/components/ui/UpgradeButton/index.js b/src/components/ui/UpgradeButton/index.js new file mode 100644 index 000000000..73762f0bf --- /dev/null +++ b/src/components/ui/UpgradeButton/index.js | |||
@@ -0,0 +1,89 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { inject, observer } from 'mobx-react'; | ||
4 | import { defineMessages, intlShape } from 'react-intl'; | ||
5 | |||
6 | import { Button } from '@meetfranz/forms'; | ||
7 | import { gaEvent } from '../../../lib/analytics'; | ||
8 | |||
9 | import UserStore from '../../../stores/UserStore'; | ||
10 | import ActivateTrialButton from '../ActivateTrialButton'; | ||
11 | |||
12 | const messages = defineMessages({ | ||
13 | upgradeToPro: { | ||
14 | id: 'global.upgradeButton.upgradeToPro', | ||
15 | defaultMessage: '!!!Upgrade to Franz Professional', | ||
16 | }, | ||
17 | }); | ||
18 | |||
19 | @inject('stores', 'actions') @observer | ||
20 | class UpgradeButton extends Component { | ||
21 | static propTypes = { | ||
22 | // eslint-disable-next-line | ||
23 | classes: PropTypes.object.isRequired, | ||
24 | className: PropTypes.string, | ||
25 | gaEventInfo: PropTypes.shape({ | ||
26 | category: PropTypes.string.isRequired, | ||
27 | event: PropTypes.string.isRequired, | ||
28 | label: PropTypes.string, | ||
29 | }), | ||
30 | requiresPro: PropTypes.bool, | ||
31 | }; | ||
32 | |||
33 | static defaultProps = { | ||
34 | className: '', | ||
35 | gaEventInfo: null, | ||
36 | requiresPro: false, | ||
37 | } | ||
38 | |||
39 | static contextTypes = { | ||
40 | intl: intlShape, | ||
41 | }; | ||
42 | |||
43 | handleCTAClick() { | ||
44 | const { actions, gaEventInfo } = this.props; | ||
45 | |||
46 | actions.ui.openSettings({ path: 'user' }); | ||
47 | if (gaEventInfo) { | ||
48 | const { category, event } = gaEventInfo; | ||
49 | gaEvent(category, event, 'Upgrade Account'); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | render() { | ||
54 | const { stores, requiresPro } = this.props; | ||
55 | const { intl } = this.context; | ||
56 | |||
57 | const { isPremium, isPersonal } = stores.user; | ||
58 | |||
59 | if (isPremium && isPersonal && requiresPro) { | ||
60 | return ( | ||
61 | <Button | ||
62 | label={intl.formatMessage(messages.upgradeToPro)} | ||
63 | onClick={this.handleCTAClick.bind(this)} | ||
64 | className={this.props.className} | ||
65 | buttonType="inverted" | ||
66 | /> | ||
67 | ); | ||
68 | } | ||
69 | |||
70 | if (!isPremium) { | ||
71 | return <ActivateTrialButton {...this.props} />; | ||
72 | } | ||
73 | |||
74 | return null; | ||
75 | } | ||
76 | } | ||
77 | |||
78 | export default UpgradeButton; | ||
79 | |||
80 | UpgradeButton.wrappedComponent.propTypes = { | ||
81 | stores: PropTypes.shape({ | ||
82 | user: PropTypes.instanceOf(UserStore).isRequired, | ||
83 | }).isRequired, | ||
84 | actions: PropTypes.shape({ | ||
85 | ui: PropTypes.shape({ | ||
86 | openSettings: PropTypes.func.isRequired, | ||
87 | }).isRequired, | ||
88 | }).isRequired, | ||
89 | }; | ||
diff --git a/src/config.js b/src/config.js index fba739ddd..78a92d948 100644 --- a/src/config.js +++ b/src/config.js | |||
@@ -20,7 +20,7 @@ export const LIVE_WS_API = 'wss://api.franzinfra.com'; | |||
20 | 20 | ||
21 | export const LOCAL_API_WEBSITE = 'http://localhost:3333'; | 21 | export const LOCAL_API_WEBSITE = 'http://localhost:3333'; |
22 | // export const DEV_API_WEBSITE = 'https://meetfranz.com';t | 22 | // export const DEV_API_WEBSITE = 'https://meetfranz.com';t |
23 | export const DEV_API_WEBSITE = 'http://hash-3ac3ccd2472269cf585c58a4f6973d86f3c9e7bd.franzstaging.com/'; // TODO: revert me | 23 | export const DEV_API_WEBSITE = 'http://hash-58883791519ef6288c952316bdce7fb462283893.franzstaging.com/'; // TODO: revert me |
24 | export const LIVE_API_WEBSITE = 'https://meetfranz.com'; | 24 | export const LIVE_API_WEBSITE = 'https://meetfranz.com'; |
25 | 25 | ||
26 | export const STATS_API = 'https://stats.franzinfra.com'; | 26 | export const STATS_API = 'https://stats.franzinfra.com'; |
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index 2b5eba91c..9c74cf2ab 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js | |||
@@ -42,6 +42,7 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
42 | <ErrorBoundary> | 42 | <ErrorBoundary> |
43 | <AccountDashboard | 43 | <AccountDashboard |
44 | user={user.data} | 44 | user={user.data} |
45 | isPremiumOverrideUser={user.isPremiumOverride} | ||
45 | isProUser={user.isPro} | 46 | isProUser={user.isPro} |
46 | isLoading={isLoadingUserInfo} | 47 | isLoading={isLoadingUserInfo} |
47 | isLoadingPlans={isLoadingPlans} | 48 | isLoadingPlans={isLoadingPlans} |
diff --git a/src/containers/settings/TeamScreen.js b/src/containers/settings/TeamScreen.js index b7b1b78cb..f600c9947 100644 --- a/src/containers/settings/TeamScreen.js +++ b/src/containers/settings/TeamScreen.js | |||
@@ -30,6 +30,7 @@ export default @inject('stores', 'actions') @observer class TeamScreen extends C | |||
30 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} | 30 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} |
31 | retryUserInfoRequest={() => this.reloadData()} | 31 | retryUserInfoRequest={() => this.reloadData()} |
32 | openTeamManagement={() => this.handleWebsiteLink('/user/team')} | 32 | openTeamManagement={() => this.handleWebsiteLink('/user/team')} |
33 | isProUser={user.isPro} | ||
33 | /> | 34 | /> |
34 | </ErrorBoundary> | 35 | </ErrorBoundary> |
35 | ); | 36 | ); |
diff --git a/src/containers/subscription/SubscriptionFormScreen.js b/src/containers/subscription/SubscriptionFormScreen.js index e9e457084..726b10628 100644 --- a/src/containers/subscription/SubscriptionFormScreen.js +++ b/src/containers/subscription/SubscriptionFormScreen.js | |||
@@ -19,7 +19,7 @@ export default @inject('stores', 'actions') @observer class SubscriptionFormScre | |||
19 | features, | 19 | features, |
20 | } = stores; | 20 | } = stores; |
21 | 21 | ||
22 | let hostedPageURL = !user.data.hadSubscription ? features.features.planSelectionURL : features.features.subscribeURL; | 22 | let hostedPageURL = features.features.planSelectionURL; |
23 | hostedPageURL = user.getAuthURL(hostedPageURL); | 23 | hostedPageURL = user.getAuthURL(hostedPageURL); |
24 | 24 | ||
25 | actions.app.openExternalUrl({ url: hostedPageURL }); | 25 | actions.app.openExternalUrl({ url: hostedPageURL }); |
diff --git a/src/environment.js b/src/environment.js index 707449e09..4be2c7d70 100644 --- a/src/environment.js +++ b/src/environment.js | |||
@@ -37,8 +37,10 @@ let web; | |||
37 | let todos; | 37 | let todos; |
38 | if (!isDevMode || (isDevMode && useLiveAPI)) { | 38 | if (!isDevMode || (isDevMode && useLiveAPI)) { |
39 | api = LIVE_API; | 39 | api = LIVE_API; |
40 | // api = DEV_API; | ||
40 | wsApi = LIVE_WS_API; | 41 | wsApi = LIVE_WS_API; |
41 | web = LIVE_API_WEBSITE; | 42 | web = LIVE_API_WEBSITE; |
43 | // web = DEV_API_WEBSITE; | ||
42 | todos = PRODUCTION_TODOS_FRONTEND_URL; | 44 | todos = PRODUCTION_TODOS_FRONTEND_URL; |
43 | } else if (isDevMode && useLocalAPI) { | 45 | } else if (isDevMode && useLocalAPI) { |
44 | api = LOCAL_API; | 46 | api = LOCAL_API; |
diff --git a/src/features/delayApp/Component.js b/src/features/delayApp/Component.js index de5653f04..6344edb89 100644 --- a/src/features/delayApp/Component.js +++ b/src/features/delayApp/Component.js | |||
@@ -77,7 +77,6 @@ export default @inject('stores', 'actions') @injectSheet(styles) @observer class | |||
77 | const { defaultTrialPlan } = stores.features.features; | 77 | const { defaultTrialPlan } = stores.features.features; |
78 | 78 | ||
79 | if (!hadSubscription) { | 79 | if (!hadSubscription) { |
80 | console.log('directly activate trial'); | ||
81 | actions.user.activateTrial({ planId: defaultTrialPlan }); | 80 | actions.user.activateTrial({ planId: defaultTrialPlan }); |
82 | 81 | ||
83 | gaEvent('DelayApp', 'subscribe_click', 'Delay App Feature'); | 82 | gaEvent('DelayApp', 'subscribe_click', 'Delay App Feature'); |
diff --git a/src/features/todos/components/TodosWebview.js b/src/features/todos/components/TodosWebview.js index 143955a7b..c06183e37 100644 --- a/src/features/todos/components/TodosWebview.js +++ b/src/features/todos/components/TodosWebview.js | |||
@@ -9,7 +9,7 @@ import { defineMessages, intlShape } from 'react-intl'; | |||
9 | import { mdiChevronRight, mdiCheckAll } from '@mdi/js'; | 9 | import { mdiChevronRight, mdiCheckAll } from '@mdi/js'; |
10 | import * as environment from '../../../environment'; | 10 | import * as environment from '../../../environment'; |
11 | import Appear from '../../../components/ui/effects/Appear'; | 11 | import Appear from '../../../components/ui/effects/Appear'; |
12 | import ActivateTrialButton from '../../../components/ui/ActivateTrialButton'; | 12 | import UpgradeButton from '../../../components/ui/UpgradeButton'; |
13 | 13 | ||
14 | const OPEN_TODOS_BUTTON_SIZE = 45; | 14 | const OPEN_TODOS_BUTTON_SIZE = 45; |
15 | const CLOSE_TODOS_BUTTON_SIZE = 35; | 15 | const CLOSE_TODOS_BUTTON_SIZE = 35; |
@@ -17,7 +17,7 @@ const CLOSE_TODOS_BUTTON_SIZE = 35; | |||
17 | const messages = defineMessages({ | 17 | const messages = defineMessages({ |
18 | premiumInfo: { | 18 | premiumInfo: { |
19 | id: 'feature.todos.premium.info', | 19 | id: 'feature.todos.premium.info', |
20 | defaultMessage: '!!!The Franz Todos Preview is currently only available for Franz Premium accounts.', | 20 | defaultMessage: '!!!Franz Todos are available to premium users now!', |
21 | }, | 21 | }, |
22 | upgradeCTA: { | 22 | upgradeCTA: { |
23 | id: 'feature.todos.premium.upgrade', | 23 | id: 'feature.todos.premium.upgrade', |
@@ -25,7 +25,7 @@ const messages = defineMessages({ | |||
25 | }, | 25 | }, |
26 | rolloutInfo: { | 26 | rolloutInfo: { |
27 | id: 'feature.todos.premium.rollout', | 27 | id: 'feature.todos.premium.rollout', |
28 | defaultMessage: '!!!Franz Todos will be available to everyone soon.', | 28 | defaultMessage: '!!!Everyone else will have to wait a little longer.', |
29 | }, | 29 | }, |
30 | }); | 30 | }); |
31 | 31 | ||
@@ -112,7 +112,7 @@ const styles = theme => ({ | |||
112 | alignItems: 'center', | 112 | alignItems: 'center', |
113 | width: '80%', | 113 | width: '80%', |
114 | maxWidth: 300, | 114 | maxWidth: 300, |
115 | margin: [-50, 'auto', 0], | 115 | margin: [0, 'auto'], |
116 | textAlign: 'center', | 116 | textAlign: 'center', |
117 | }, | 117 | }, |
118 | premiumIcon: { | 118 | premiumIcon: { |
@@ -281,10 +281,10 @@ class TodosWebview extends Component { | |||
281 | ) : ( | 281 | ) : ( |
282 | <Appear> | 282 | <Appear> |
283 | <div className={classes.premiumContainer}> | 283 | <div className={classes.premiumContainer}> |
284 | <Icon icon={mdiCheckAll} className={classes.premiumIcon} size={5} /> | 284 | <Icon icon={mdiCheckAll} className={classes.premiumIcon} size={4} /> |
285 | <p>{intl.formatMessage(messages.premiumInfo)}</p> | 285 | <p>{intl.formatMessage(messages.premiumInfo)}</p> |
286 | <p>{intl.formatMessage(messages.rolloutInfo)}</p> | 286 | <p>{intl.formatMessage(messages.rolloutInfo)}</p> |
287 | <ActivateTrialButton | 287 | <UpgradeButton |
288 | className={classes.premiumCTA} | 288 | className={classes.premiumCTA} |
289 | gaEventInfo={{ category: 'Todos', event: 'upgrade' }} | 289 | gaEventInfo={{ category: 'Todos', event: 'upgrade' }} |
290 | short | 290 | short |
diff --git a/src/features/todos/store.js b/src/features/todos/store.js index 170408ebb..aebe0dcbe 100644 --- a/src/features/todos/store.js +++ b/src/features/todos/store.js | |||
@@ -30,7 +30,7 @@ export default class TodoStore extends FeatureStore { | |||
30 | } | 30 | } |
31 | 31 | ||
32 | @computed get isTodosPanelVisible() { | 32 | @computed get isTodosPanelVisible() { |
33 | if (this.stores.services.all.length === 0 || delayAppState.isDelayAppScreenVisible) return false; | 33 | if (delayAppState.isDelayAppScreenVisible) return false; |
34 | if (this.settings.isTodosPanelVisible === undefined) return DEFAULT_TODOS_VISIBLE; | 34 | if (this.settings.isTodosPanelVisible === undefined) return DEFAULT_TODOS_VISIBLE; |
35 | 35 | ||
36 | return this.settings.isTodosPanelVisible; | 36 | return this.settings.isTodosPanelVisible; |
@@ -62,6 +62,7 @@ export default class TodoStore extends FeatureStore { | |||
62 | this._allReactions = createReactions([ | 62 | this._allReactions = createReactions([ |
63 | this._setFeatureEnabledReaction, | 63 | this._setFeatureEnabledReaction, |
64 | this._updateTodosConfig, | 64 | this._updateTodosConfig, |
65 | this._firstLaunchReaction, | ||
65 | ]); | 66 | ]); |
66 | 67 | ||
67 | this._registerReactions(this._allReactions); | 68 | this._registerReactions(this._allReactions); |
@@ -156,5 +157,20 @@ export default class TodoStore extends FeatureStore { | |||
156 | _updateTodosConfig = () => { | 157 | _updateTodosConfig = () => { |
157 | // Resend the config if any part changes in Franz: | 158 | // Resend the config if any part changes in Franz: |
158 | this._onTodosClientInitialized(); | 159 | this._onTodosClientInitialized(); |
159 | } | 160 | }; |
161 | |||
162 | _firstLaunchReaction = () => { | ||
163 | const { stats } = this.stores.settings.all; | ||
164 | |||
165 | // Hide todos layer on first app start but show on second | ||
166 | if (stats.appStarts <= 1) { | ||
167 | this._updateSettings({ | ||
168 | isTodosPanelVisible: false, | ||
169 | }); | ||
170 | } else if (stats.appStarts <= 2) { | ||
171 | this._updateSettings({ | ||
172 | isTodosPanelVisible: true, | ||
173 | }); | ||
174 | } | ||
175 | }; | ||
160 | } | 176 | } |
diff --git a/src/features/workspaces/components/WorkspacesDashboard.js b/src/features/workspaces/components/WorkspacesDashboard.js index 059a681de..70e213912 100644 --- a/src/features/workspaces/components/WorkspacesDashboard.js +++ b/src/features/workspaces/components/WorkspacesDashboard.js | |||
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; | 3 | import { observer, PropTypes as MobxPropTypes, inject } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import injectSheet from 'react-jss'; | 5 | import injectSheet from 'react-jss'; |
6 | import { Infobox } from '@meetfranz/ui'; | 6 | import { Infobox, Badge } from '@meetfranz/ui'; |
7 | 7 | ||
8 | import Loader from '../../../components/ui/Loader'; | 8 | import Loader from '../../../components/ui/Loader'; |
9 | import WorkspaceItem from './WorkspaceItem'; | 9 | import WorkspaceItem from './WorkspaceItem'; |
@@ -11,9 +11,9 @@ import CreateWorkspaceForm from './CreateWorkspaceForm'; | |||
11 | import Request from '../../../stores/lib/Request'; | 11 | import Request from '../../../stores/lib/Request'; |
12 | import Appear from '../../../components/ui/effects/Appear'; | 12 | import Appear from '../../../components/ui/effects/Appear'; |
13 | import { workspaceStore } from '../index'; | 13 | import { workspaceStore } from '../index'; |
14 | import PremiumFeatureContainer from '../../../components/ui/PremiumFeatureContainer'; | ||
15 | import UIStore from '../../../stores/UIStore'; | 14 | import UIStore from '../../../stores/UIStore'; |
16 | import ActivateTrialButton from '../../../components/ui/ActivateTrialButton'; | 15 | import globalMessages from '../../../i18n/globalMessages'; |
16 | import UpgradeButton from '../../../components/ui/UpgradeButton'; | ||
17 | 17 | ||
18 | const messages = defineMessages({ | 18 | const messages = defineMessages({ |
19 | headline: { | 19 | headline: { |
@@ -50,7 +50,7 @@ const messages = defineMessages({ | |||
50 | }, | 50 | }, |
51 | }); | 51 | }); |
52 | 52 | ||
53 | const styles = theme => ({ | 53 | const styles = () => ({ |
54 | table: { | 54 | table: { |
55 | width: '100%', | 55 | width: '100%', |
56 | '& td': { | 56 | '& td': { |
@@ -64,23 +64,24 @@ const styles = theme => ({ | |||
64 | height: 'auto', | 64 | height: 'auto', |
65 | }, | 65 | }, |
66 | premiumAnnouncement: { | 66 | premiumAnnouncement: { |
67 | padding: 20, | ||
68 | // backgroundColor: '#3498db', | ||
69 | marginLeft: -20, | ||
70 | marginBottom: 40, | ||
71 | paddingBottom: 40, | ||
72 | height: 'auto', | 67 | height: 'auto', |
68 | }, | ||
69 | premiumAnnouncementContainer: { | ||
73 | display: 'flex', | 70 | display: 'flex', |
74 | borderBottom: [1, 'solid', theme.inputBackground], | 71 | }, |
72 | announcementHeadline: { | ||
73 | marginBottom: 0, | ||
75 | }, | 74 | }, |
76 | teaserImage: { | 75 | teaserImage: { |
77 | width: 200, | 76 | width: 250, |
78 | height: '100%', | 77 | margin: [-8, 0, 0, 20], |
79 | float: 'left', | 78 | alignSelf: 'center', |
80 | margin: [-8, 0, 0, -20], | ||
81 | }, | 79 | }, |
82 | upgradeCTA: { | 80 | upgradeCTA: { |
83 | marginTop: 20, | 81 | margin: [40, 'auto'], |
82 | }, | ||
83 | proRequired: { | ||
84 | margin: [10, 0, 40], | ||
84 | }, | 85 | }, |
85 | }); | 86 | }); |
86 | 87 | ||
@@ -152,76 +153,80 @@ class WorkspacesDashboard extends Component { | |||
152 | 153 | ||
153 | {workspaceStore.isPremiumUpgradeRequired && ( | 154 | {workspaceStore.isPremiumUpgradeRequired && ( |
154 | <div className={classes.premiumAnnouncement}> | 155 | <div className={classes.premiumAnnouncement}> |
155 | <img src={`./assets/images/workspaces/teaser_${this.props.stores.ui.isDarkThemeActive ? 'dark' : 'light'}.png`} className={classes.teaserImage} alt="" /> | 156 | |
156 | <div> | 157 | <h1 className={classes.announcementHeadline}>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h1> |
157 | <h2>{intl.formatMessage(messages.workspaceFeatureHeadline)}</h2> | 158 | <Badge className={classes.proRequired}>{intl.formatMessage(globalMessages.proRequired)}</Badge> |
158 | <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p> | 159 | <div className={classes.premiumAnnouncementContainer}> |
159 | <ActivateTrialButton | 160 | <div className={classes.premiumAnnouncementContent}> |
160 | className={classes.upgradeCTA} | 161 | <p>{intl.formatMessage(messages.workspaceFeatureInfo)}</p> |
161 | gaEventInfo={{ category: 'Workspaces', event: 'upgrade' }} | 162 | <UpgradeButton |
162 | short | 163 | className={classes.upgradeCTA} |
163 | /> | 164 | gaEventInfo={{ category: 'Workspaces', event: 'upgrade' }} |
165 | short | ||
166 | requiresPro | ||
167 | /> | ||
168 | </div> | ||
169 | <img src={`https://cdn.franzinfra.com/announcements/assets/workspaces_${this.props.stores.ui.isDarkThemeActive ? 'dark' : 'light'}.png`} className={classes.teaserImage} alt="" /> | ||
164 | </div> | 170 | </div> |
165 | </div> | 171 | </div> |
166 | )} | 172 | )} |
167 | 173 | ||
168 | <PremiumFeatureContainer | 174 | {!workspaceStore.isPremiumUpgradeRequired && ( |
169 | condition={() => workspaceStore.isPremiumUpgradeRequired} | 175 | <> |
170 | gaEventInfo={{ category: 'User', event: 'upgrade', label: 'workspaces' }} | 176 | {/* ===== Create workspace form ===== */} |
171 | > | 177 | <div className={classes.createForm}> |
172 | {/* ===== Create workspace form ===== */} | 178 | <CreateWorkspaceForm |
173 | <div className={classes.createForm}> | 179 | isSubmitting={createWorkspaceRequest.isExecuting} |
174 | <CreateWorkspaceForm | 180 | onSubmit={onCreateWorkspaceSubmit} |
175 | isSubmitting={createWorkspaceRequest.isExecuting} | 181 | /> |
176 | onSubmit={onCreateWorkspaceSubmit} | 182 | </div> |
177 | /> | 183 | {getUserWorkspacesRequest.isExecuting ? ( |
178 | </div> | 184 | <Loader /> |
179 | {getUserWorkspacesRequest.isExecuting ? ( | 185 | ) : ( |
180 | <Loader /> | 186 | <Fragment> |
181 | ) : ( | 187 | {/* ===== Workspace could not be loaded error ===== */} |
182 | <Fragment> | 188 | {getUserWorkspacesRequest.error ? ( |
183 | {/* ===== Workspace could not be loaded error ===== */} | 189 | <Infobox |
184 | {getUserWorkspacesRequest.error ? ( | 190 | icon="alert" |
185 | <Infobox | 191 | type="danger" |
186 | icon="alert" | 192 | ctaLabel={intl.formatMessage(messages.tryReloadWorkspaces)} |
187 | type="danger" | 193 | ctaLoading={getUserWorkspacesRequest.isExecuting} |
188 | ctaLabel={intl.formatMessage(messages.tryReloadWorkspaces)} | 194 | ctaOnClick={getUserWorkspacesRequest.retry} |
189 | ctaLoading={getUserWorkspacesRequest.isExecuting} | 195 | > |
190 | ctaOnClick={getUserWorkspacesRequest.retry} | 196 | {intl.formatMessage(messages.workspacesRequestFailed)} |
191 | > | 197 | </Infobox> |
192 | {intl.formatMessage(messages.workspacesRequestFailed)} | 198 | ) : ( |
193 | </Infobox> | 199 | <Fragment> |
194 | ) : ( | 200 | {workspaces.length === 0 ? ( |
195 | <Fragment> | 201 | <div className="align-middle settings__empty-state"> |
196 | {workspaces.length === 0 ? ( | 202 | {/* ===== Workspaces empty state ===== */} |
197 | <div className="align-middle settings__empty-state"> | 203 | <p className="settings__empty-text"> |
198 | {/* ===== Workspaces empty state ===== */} | 204 | <span className="emoji"> |
199 | <p className="settings__empty-text"> | 205 | <img src="./assets/images/emoji/sad.png" alt="" /> |
200 | <span className="emoji"> | 206 | </span> |
201 | <img src="./assets/images/emoji/sad.png" alt="" /> | 207 | {intl.formatMessage(messages.noServicesAdded)} |
202 | </span> | 208 | </p> |
203 | {intl.formatMessage(messages.noServicesAdded)} | 209 | </div> |
204 | </p> | 210 | ) : ( |
205 | </div> | 211 | <table className={classes.table}> |
206 | ) : ( | 212 | {/* ===== Workspaces list ===== */} |
207 | <table className={classes.table}> | 213 | <tbody> |
208 | {/* ===== Workspaces list ===== */} | 214 | {workspaces.map(workspace => ( |
209 | <tbody> | 215 | <WorkspaceItem |
210 | {workspaces.map(workspace => ( | 216 | key={workspace.id} |
211 | <WorkspaceItem | 217 | workspace={workspace} |
212 | key={workspace.id} | 218 | onItemClick={w => onWorkspaceClick(w)} |
213 | workspace={workspace} | 219 | /> |
214 | onItemClick={w => onWorkspaceClick(w)} | 220 | ))} |
215 | /> | 221 | </tbody> |
216 | ))} | 222 | </table> |
217 | </tbody> | 223 | )} |
218 | </table> | 224 | </Fragment> |
219 | )} | 225 | )} |
220 | </Fragment> | 226 | </Fragment> |
221 | )} | 227 | )} |
222 | </Fragment> | 228 | </> |
223 | )} | 229 | )} |
224 | </PremiumFeatureContainer> | ||
225 | </div> | 230 | </div> |
226 | </div> | 231 | </div> |
227 | ); | 232 | ); |
diff --git a/src/features/workspaces/containers/WorkspacesScreen.js b/src/features/workspaces/containers/WorkspacesScreen.js index 2ab565fa1..affbd230d 100644 --- a/src/features/workspaces/containers/WorkspacesScreen.js +++ b/src/features/workspaces/containers/WorkspacesScreen.js | |||
@@ -11,7 +11,7 @@ import { | |||
11 | updateWorkspaceRequest, | 11 | updateWorkspaceRequest, |
12 | } from '../api'; | 12 | } from '../api'; |
13 | 13 | ||
14 | @inject('actions') @observer | 14 | @inject('stores', 'actions') @observer |
15 | class WorkspacesScreen extends Component { | 15 | class WorkspacesScreen extends Component { |
16 | static propTypes = { | 16 | static propTypes = { |
17 | actions: PropTypes.shape({ | 17 | actions: PropTypes.shape({ |
diff --git a/src/i18n/globalMessages.js b/src/i18n/globalMessages.js index 1b5ece223..af8479c59 100644 --- a/src/i18n/globalMessages.js +++ b/src/i18n/globalMessages.js | |||
@@ -25,4 +25,8 @@ export default defineMessages({ | |||
25 | id: 'global.spellchecking.autodetect.short', | 25 | id: 'global.spellchecking.autodetect.short', |
26 | defaultMessage: '!!!Automatic', | 26 | defaultMessage: '!!!Automatic', |
27 | }, | 27 | }, |
28 | proRequired: { | ||
29 | id: 'global.franzProRequired', | ||
30 | defaultMessage: '!!!Franz Professional Required', | ||
31 | }, | ||
28 | }); | 32 | }); |
diff --git a/src/i18n/locales/cs.json b/src/i18n/locales/cs.json index 809c5d5a8..36732b44d 100644 --- a/src/i18n/locales/cs.json +++ b/src/i18n/locales/cs.json | |||
@@ -8,7 +8,7 @@ | |||
8 | "feature.shareFranz.action.email" : "Poslat jako e-mail", | 8 | "feature.shareFranz.action.email" : "Poslat jako e-mail", |
9 | "feature.shareFranz.action.facebook" : "Sdílet na Facebooku", | 9 | "feature.shareFranz.action.facebook" : "Sdílet na Facebooku", |
10 | "feature.shareFranz.action.twitter" : "Sdílet na Twitteru", | 10 | "feature.shareFranz.action.twitter" : "Sdílet na Twitteru", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Společně je Franz ještě lepší!", |
12 | "feature.shareFranz.shareText.email" : "Přidali jsme {count} služeb do Franze. Získejte zdarma aplikace pro WhatsApp, Messenger, SLack, Skype a další na www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Přidali jsme {count} služeb do Franze. Získejte zdarma aplikace pro WhatsApp, Messenger, SLack, Skype a další na www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index 367184c01..1204005dc 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -2530,78 +2530,78 @@ | |||
2530 | "defaultMessage": "!!!Team", | 2530 | "defaultMessage": "!!!Team", |
2531 | "end": { | 2531 | "end": { |
2532 | "column": 3, | 2532 | "column": 3, |
2533 | "line": 17 | 2533 | "line": 19 |
2534 | }, | 2534 | }, |
2535 | "file": "src/components/settings/team/TeamDashboard.js", | 2535 | "file": "src/components/settings/team/TeamDashboard.js", |
2536 | "id": "settings.team.headline", | 2536 | "id": "settings.team.headline", |
2537 | "start": { | 2537 | "start": { |
2538 | "column": 12, | 2538 | "column": 12, |
2539 | "line": 14 | 2539 | "line": 16 |
2540 | } | 2540 | } |
2541 | }, | 2541 | }, |
2542 | { | 2542 | { |
2543 | "defaultMessage": "!!!Franz for Teams", | 2543 | "defaultMessage": "!!!Franz for Teams", |
2544 | "end": { | 2544 | "end": { |
2545 | "column": 3, | 2545 | "column": 3, |
2546 | "line": 21 | 2546 | "line": 23 |
2547 | }, | 2547 | }, |
2548 | "file": "src/components/settings/team/TeamDashboard.js", | 2548 | "file": "src/components/settings/team/TeamDashboard.js", |
2549 | "id": "settings.team.contentHeadline", | 2549 | "id": "settings.team.contentHeadline", |
2550 | "start": { | 2550 | "start": { |
2551 | "column": 19, | 2551 | "column": 19, |
2552 | "line": 18 | 2552 | "line": 20 |
2553 | } | 2553 | } |
2554 | }, | 2554 | }, |
2555 | { | 2555 | { |
2556 | "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.", | 2556 | "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.", |
2557 | "end": { | 2557 | "end": { |
2558 | "column": 3, | 2558 | "column": 3, |
2559 | "line": 25 | 2559 | "line": 27 |
2560 | }, | 2560 | }, |
2561 | "file": "src/components/settings/team/TeamDashboard.js", | 2561 | "file": "src/components/settings/team/TeamDashboard.js", |
2562 | "id": "settings.team.intro", | 2562 | "id": "settings.team.intro", |
2563 | "start": { | 2563 | "start": { |
2564 | "column": 9, | 2564 | "column": 9, |
2565 | "line": 22 | 2565 | "line": 24 |
2566 | } | 2566 | } |
2567 | }, | 2567 | }, |
2568 | { | 2568 | { |
2569 | "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!", | 2569 | "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!", |
2570 | "end": { | 2570 | "end": { |
2571 | "column": 3, | 2571 | "column": 3, |
2572 | "line": 29 | 2572 | "line": 31 |
2573 | }, | 2573 | }, |
2574 | "file": "src/components/settings/team/TeamDashboard.js", | 2574 | "file": "src/components/settings/team/TeamDashboard.js", |
2575 | "id": "settings.team.copy", | 2575 | "id": "settings.team.copy", |
2576 | "start": { | 2576 | "start": { |
2577 | "column": 8, | 2577 | "column": 8, |
2578 | "line": 26 | 2578 | "line": 28 |
2579 | } | 2579 | } |
2580 | }, | 2580 | }, |
2581 | { | 2581 | { |
2582 | "defaultMessage": "!!!Manage your Team on meetfranz.com", | 2582 | "defaultMessage": "!!!Manage your Team on meetfranz.com", |
2583 | "end": { | 2583 | "end": { |
2584 | "column": 3, | 2584 | "column": 3, |
2585 | "line": 33 | 2585 | "line": 35 |
2586 | }, | 2586 | }, |
2587 | "file": "src/components/settings/team/TeamDashboard.js", | 2587 | "file": "src/components/settings/team/TeamDashboard.js", |
2588 | "id": "settings.team.manageAction", | 2588 | "id": "settings.team.manageAction", |
2589 | "start": { | 2589 | "start": { |
2590 | "column": 16, | 2590 | "column": 16, |
2591 | "line": 30 | 2591 | "line": 32 |
2592 | } | 2592 | } |
2593 | }, | 2593 | }, |
2594 | { | 2594 | { |
2595 | "defaultMessage": "!!!Upgrade your Account", | 2595 | "defaultMessage": "!!!Upgrade your Account", |
2596 | "end": { | 2596 | "end": { |
2597 | "column": 3, | 2597 | "column": 3, |
2598 | "line": 37 | 2598 | "line": 39 |
2599 | }, | 2599 | }, |
2600 | "file": "src/components/settings/team/TeamDashboard.js", | 2600 | "file": "src/components/settings/team/TeamDashboard.js", |
2601 | "id": "settings.team.upgradeAction", | 2601 | "id": "settings.team.upgradeAction", |
2602 | "start": { | 2602 | "start": { |
2603 | "column": 17, | 2603 | "column": 17, |
2604 | "line": 34 | 2604 | "line": 36 |
2605 | } | 2605 | } |
2606 | } | 2606 | } |
2607 | ], | 2607 | ], |
@@ -3105,6 +3105,24 @@ | |||
3105 | { | 3105 | { |
3106 | "descriptors": [ | 3106 | "descriptors": [ |
3107 | { | 3107 | { |
3108 | "defaultMessage": "!!!Upgrade to Franz Professional", | ||
3109 | "end": { | ||
3110 | "column": 3, | ||
3111 | "line": 16 | ||
3112 | }, | ||
3113 | "file": "src/components/ui/UpgradeButton/index.js", | ||
3114 | "id": "global.upgradeButton.upgradeToPro", | ||
3115 | "start": { | ||
3116 | "column": 16, | ||
3117 | "line": 13 | ||
3118 | } | ||
3119 | } | ||
3120 | ], | ||
3121 | "path": "src/components/ui/UpgradeButton/index.json" | ||
3122 | }, | ||
3123 | { | ||
3124 | "descriptors": [ | ||
3125 | { | ||
3108 | "defaultMessage": "!!!Loading", | 3126 | "defaultMessage": "!!!Loading", |
3109 | "end": { | 3127 | "end": { |
3110 | "column": 3, | 3128 | "column": 3, |
@@ -3870,42 +3888,42 @@ | |||
3870 | { | 3888 | { |
3871 | "descriptors": [ | 3889 | "descriptors": [ |
3872 | { | 3890 | { |
3873 | "defaultMessage": "!!!The Franz Todos Preview is currently only available for Franz Premium accounts.", | 3891 | "defaultMessage": "!!!Franz Todos are available to premium users now!", |
3874 | "end": { | 3892 | "end": { |
3875 | "column": 3, | 3893 | "column": 3, |
3876 | "line": 22 | 3894 | "line": 21 |
3877 | }, | 3895 | }, |
3878 | "file": "src/features/todos/components/TodosWebview.js", | 3896 | "file": "src/features/todos/components/TodosWebview.js", |
3879 | "id": "feature.todos.premium.info", | 3897 | "id": "feature.todos.premium.info", |
3880 | "start": { | 3898 | "start": { |
3881 | "column": 15, | 3899 | "column": 15, |
3882 | "line": 19 | 3900 | "line": 18 |
3883 | } | 3901 | } |
3884 | }, | 3902 | }, |
3885 | { | 3903 | { |
3886 | "defaultMessage": "!!!Upgrade Account", | 3904 | "defaultMessage": "!!!Upgrade Account", |
3887 | "end": { | 3905 | "end": { |
3888 | "column": 3, | 3906 | "column": 3, |
3889 | "line": 26 | 3907 | "line": 25 |
3890 | }, | 3908 | }, |
3891 | "file": "src/features/todos/components/TodosWebview.js", | 3909 | "file": "src/features/todos/components/TodosWebview.js", |
3892 | "id": "feature.todos.premium.upgrade", | 3910 | "id": "feature.todos.premium.upgrade", |
3893 | "start": { | 3911 | "start": { |
3894 | "column": 14, | 3912 | "column": 14, |
3895 | "line": 23 | 3913 | "line": 22 |
3896 | } | 3914 | } |
3897 | }, | 3915 | }, |
3898 | { | 3916 | { |
3899 | "defaultMessage": "!!!Franz Todos will be available to everyone soon.", | 3917 | "defaultMessage": "!!!Everyone else will have to wait a little longer.", |
3900 | "end": { | 3918 | "end": { |
3901 | "column": 3, | 3919 | "column": 3, |
3902 | "line": 30 | 3920 | "line": 29 |
3903 | }, | 3921 | }, |
3904 | "file": "src/features/todos/components/TodosWebview.js", | 3922 | "file": "src/features/todos/components/TodosWebview.js", |
3905 | "id": "feature.todos.premium.rollout", | 3923 | "id": "feature.todos.premium.rollout", |
3906 | "start": { | 3924 | "start": { |
3907 | "column": 15, | 3925 | "column": 15, |
3908 | "line": 27 | 3926 | "line": 26 |
3909 | } | 3927 | } |
3910 | } | 3928 | } |
3911 | ], | 3929 | ], |
@@ -4594,6 +4612,19 @@ | |||
4594 | "column": 39, | 4612 | "column": 39, |
4595 | "line": 24 | 4613 | "line": 24 |
4596 | } | 4614 | } |
4615 | }, | ||
4616 | { | ||
4617 | "defaultMessage": "!!!Franz Professional Required", | ||
4618 | "end": { | ||
4619 | "column": 3, | ||
4620 | "line": 31 | ||
4621 | }, | ||
4622 | "file": "src/i18n/globalMessages.js", | ||
4623 | "id": "global.franzProRequired", | ||
4624 | "start": { | ||
4625 | "column": 15, | ||
4626 | "line": 28 | ||
4627 | } | ||
4597 | } | 4628 | } |
4598 | ], | 4629 | ], |
4599 | "path": "src/i18n/globalMessages.json" | 4630 | "path": "src/i18n/globalMessages.json" |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index f11d5ca91..4fe9bd52a 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -17,15 +17,17 @@ | |||
17 | "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 17 | "feature.shareFranz.shareText.email": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", |
18 | "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", | 18 | "feature.shareFranz.shareText.twitter": "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com /cc @FranzMessenger", |
19 | "feature.shareFranz.text": "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 19 | "feature.shareFranz.text": "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", |
20 | "feature.todos.premium.info": "The Franz Todos Preview is currently only available for Franz Premium accounts.", | 20 | "feature.todos.premium.info": "Franz Todos are available to premium users now!", |
21 | "feature.todos.premium.rollout": "Franz Todos will be available to everyone soon.", | 21 | "feature.todos.premium.rollout": "Everyone else will have to wait a little longer.", |
22 | "feature.todos.premium.upgrade": "Upgrade Account", | 22 | "feature.todos.premium.upgrade": "Upgrade Account", |
23 | "global.api.unhealthy": "Can't connect to Franz online services", | 23 | "global.api.unhealthy": "Can't connect to Franz online services", |
24 | "global.franzProRequired": "Franz Professional Required", | ||
24 | "global.notConnectedToTheInternet": "You are not connected to the internet.", | 25 | "global.notConnectedToTheInternet": "You are not connected to the internet.", |
25 | "global.spellchecker.useDefault": "Use System Default ({default})", | 26 | "global.spellchecker.useDefault": "Use System Default ({default})", |
26 | "global.spellchecking.autodetect": "Detect language automatically", | 27 | "global.spellchecking.autodetect": "Detect language automatically", |
27 | "global.spellchecking.autodetect.short": "Automatic", | 28 | "global.spellchecking.autodetect.short": "Automatic", |
28 | "global.spellchecking.language": "Spell checking language", | 29 | "global.spellchecking.language": "Spell checking language", |
30 | "global.upgradeButton.upgradeToPro": "Upgrade to Franz Professional", | ||
29 | "import.headline": "Import your Franz 4 services", | 31 | "import.headline": "Import your Franz 4 services", |
30 | "import.notSupportedHeadline": "Services not yet supported in Franz 5", | 32 | "import.notSupportedHeadline": "Services not yet supported in Franz 5", |
31 | "import.skip.label": "I want to add services manually", | 33 | "import.skip.label": "I want to add services manually", |
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 9227ff28f..451247c8b 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json | |||
@@ -1,5 +1,5 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Recharger", | 2 | "app.errorHandler.action" : "Rafraîchir", |
3 | "app.errorHandler.headline" : "Une erreur s'est produite", | 3 | "app.errorHandler.headline" : "Une erreur s'est produite", |
4 | "feature.announcements.changelog.headline" : "Changements dans Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Changements dans Franz {version}", |
5 | "feature.delayApp.action" : "Obtenez une licence de Supporter Franz", | 5 | "feature.delayApp.action" : "Obtenez une licence de Supporter Franz", |
diff --git a/src/i18n/locales/nl.json b/src/i18n/locales/nl.json index a05297a64..fd80dbdb9 100644 --- a/src/i18n/locales/nl.json +++ b/src/i18n/locales/nl.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "app.errorHandler.action" : "Herladen", | 2 | "app.errorHandler.action" : "Herladen", |
3 | "app.errorHandler.headline" : "Er ging iets mis", | 3 | "app.errorHandler.headline" : "Er is iets mis gegaan", |
4 | "feature.announcements.changelog.headline" : "Wijzigingen in Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Wijzigingen in Franz {version}", |
5 | "feature.delayApp.action" : "Sponsor Franz", | 5 | "feature.delayApp.action" : "Sponsor Franz", |
6 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", | 6 | "feature.delayApp.headline" : "Sponsor Franz om wachten over te slaan", |
@@ -9,27 +9,27 @@ | |||
9 | "feature.shareFranz.action.facebook" : "Deel op Facebook", | 9 | "feature.shareFranz.action.facebook" : "Deel op Facebook", |
10 | "feature.shareFranz.action.twitter" : "Deel op Twitter", | 10 | "feature.shareFranz.action.twitter" : "Deel op Twitter", |
11 | "feature.shareFranz.headline" : "Franz is leuker samen!", | 11 | "feature.shareFranz.headline" : "Franz is leuker samen!", |
12 | "feature.shareFranz.shareText.email" : "Ik heb {count} diensten toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Ik heb {count} services toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "Ik heb {count} diensten toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "Ik heb {count} services toegevoegd aan Franz! Download de gratis app voor Whatsapp, Messenger, Slack, Skype en co op www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons om bekender te worden", | 14 | "feature.shareFranz.text" : "Vertel je vrienden en collega's hoe geweldig Franz is en help ons om bekender te worden.", |
15 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services", | 15 | "global.api.unhealthy" : "Kan geen verbinding maken met de Franz-services.", |
16 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", | 16 | "global.notConnectedToTheInternet" : "U bent niet verbonden met het internet.", |
17 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", | 17 | "global.spellchecker.useDefault" : "Gebruik systeemstandaard ({default})", |
18 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", | 18 | "global.spellchecking.autodetect" : "Taal automatisch herkennen", |
19 | "global.spellchecking.autodetect.short" : "Automatisch", | 19 | "global.spellchecking.autodetect.short" : "Automatisch", |
20 | "global.spellchecking.language" : "Spelling checken", | 20 | "global.spellchecking.language" : "Taal voor spellingcontrole", |
21 | "import.headline" : "Importeer uw Franz 4-services", | 21 | "import.headline" : "Importeer uw Franz 4-services", |
22 | "import.notSupportedHeadline" : "Services die nog niet ondersteund worden in Franz 5", | 22 | "import.notSupportedHeadline" : "Services die (nog) niet ondersteund worden in Franz 5", |
23 | "import.skip.label" : "Ik wil services handmatig toevoegen", | 23 | "import.skip.label" : "Ik wil diensten handmatig toevoegen", |
24 | "import.submit.label" : "Importeer services", | 24 | "import.submit.label" : "Importeer services", |
25 | "infobar.buttonChangelog" : "Wat is er nieuw?", | 25 | "infobar.buttonChangelog" : "Wat is er nieuw?", |
26 | "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren", | 26 | "infobar.buttonInstallUpdate" : "Opnieuw opstarten & update installeren", |
27 | "infobar.buttonReloadServices" : "Services opnieuw laden", | 27 | "infobar.buttonReloadServices" : "Services opnieuw laden", |
28 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", | 28 | "infobar.requiredRequestsFailed" : "Kan de services en gebruikersinformatie niet laden", |
29 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", | 29 | "infobar.servicesUpdated" : "Je services zijn bijgewerkt.", |
30 | "infobar.updateAvailable" : "Er is een nieuwe update voor Franz beschikbaar.", | 30 | "infobar.updateAvailable" : "Een nieuwe update voor Franz is beschikbaar.", |
31 | "invite.email.label" : "E-mailadres", | 31 | "invite.email.label" : "E-mailadres", |
32 | "invite.headline.friends" : "Nodig 3 van je vrienden of collega's uit", | 32 | "invite.headline.friends" : "Nodig 3 vrienden of collega's uit", |
33 | "invite.name.label" : "Naam", | 33 | "invite.name.label" : "Naam", |
34 | "invite.skip.label" : "Ik wil dit later doen", | 34 | "invite.skip.label" : "Ik wil dit later doen", |
35 | "invite.submit.label" : "Uitnodigingen verzenden", | 35 | "invite.submit.label" : "Uitnodigingen verzenden", |
@@ -62,20 +62,20 @@ | |||
62 | "menu.edit.selectAll" : "Selecteer alles", | 62 | "menu.edit.selectAll" : "Selecteer alles", |
63 | "menu.edit.speech" : "Spraak", | 63 | "menu.edit.speech" : "Spraak", |
64 | "menu.edit.startDictation" : "Beginnen met dicteren", | 64 | "menu.edit.startDictation" : "Beginnen met dicteren", |
65 | "menu.edit.startSpeaking" : "Beginnen met praten", | 65 | "menu.edit.startSpeaking" : "Begin met spreken", |
66 | "menu.edit.stopSpeaking" : "Stoppen met spreken", | 66 | "menu.edit.stopSpeaking" : "Stop met spreken", |
67 | "menu.edit.undo" : "Ongedaan maken", | 67 | "menu.edit.undo" : "Ongedaan maken", |
68 | "menu.file" : "Bestand", | 68 | "menu.file" : "Bestand", |
69 | "menu.help" : "Hulp", | 69 | "menu.help" : "Hulp", |
70 | "menu.help.changelog" : "Wijzigingenlogboek", | 70 | "menu.help.changelog" : "Wijzigingenlogboek", |
71 | "menu.help.learnMore" : "Meer informatie", | 71 | "menu.help.learnMore" : "Meer informatie", |
72 | "menu.help.privacy" : "Privacy Voorwaarden", | 72 | "menu.help.privacy" : "Privacyvoorwaarden", |
73 | "menu.help.support" : "Ondersteuning", | 73 | "menu.help.support" : "Ondersteuning", |
74 | "menu.help.tos" : "Servicevoorwaarden", | 74 | "menu.help.tos" : "Servicevoorwaarden", |
75 | "menu.services" : "Diensten", | 75 | "menu.services" : "Services", |
76 | "menu.services.activatePreviousService" : "Activeer vorige dienst", | 76 | "menu.services.activatePreviousService" : "Activeer vorige service", |
77 | "menu.services.addNewService" : "Nieuwe dienst toevoegen", | 77 | "menu.services.addNewService" : "Nieuwe service toevoegen...", |
78 | "menu.services.setNextServiceActive" : "Activeer volgende dienst", | 78 | "menu.services.setNextServiceActive" : "Activeer volgende service", |
79 | "menu.view" : "Weergave", | 79 | "menu.view" : "Weergave", |
80 | "menu.view.enterFullScreen" : "Gebruik volledig scherm", | 80 | "menu.view.enterFullScreen" : "Gebruik volledig scherm", |
81 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", | 81 | "menu.view.exitFullScreen" : "Volledig scherm verlaten", |
@@ -101,14 +101,14 @@ | |||
101 | "password.link.signup" : "Maak een gratis account", | 101 | "password.link.signup" : "Maak een gratis account", |
102 | "password.noUser" : "Geen gebruiker bekend met dat e-mailadres", | 102 | "password.noUser" : "Geen gebruiker bekend met dat e-mailadres", |
103 | "password.submit.label" : "Verzenden", | 103 | "password.submit.label" : "Verzenden", |
104 | "password.successInfo" : "Controleer alsjeblieft je e-mail", | 104 | "password.successInfo" : "Controleer je e-mail", |
105 | "premiumFeature.button.upgradeAccount" : "Upgrade Account", | 105 | "premiumFeature.button.upgradeAccount" : "Upgrade Account", |
106 | "pricing.headline" : "Steun Franz", | 106 | "pricing.headline" : "Steun Franz", |
107 | "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz niet ondersteunen.", | 107 | "pricing.link.skipPayment" : "Ik wil de ontwikkeling van Franz (nog) niet ondersteunen.", |
108 | "pricing.submit.label" : "Ik wil de ontwikkeling van Franz steunen", | 108 | "pricing.submit.label" : "Ik wil de ontwikkeling van Franz steunen", |
109 | "pricing.support.label" : "Selecteer je ondersteuningsplan", | 109 | "pricing.support.label" : "Selecteer je ondersteuningsplan", |
110 | "service.crashHandler.action" : "Laad {name} opnieuw", | 110 | "service.crashHandler.action" : "Laad {name} opnieuw", |
111 | "service.crashHandler.autoReload" : "Ga proberen om {name} te herstellen over {seconds} seconden", | 111 | "service.crashHandler.autoReload" : "Bezig om {name} te herstellen over {seconds} seconden", |
112 | "service.crashHandler.headline" : "Oh nee!", | 112 | "service.crashHandler.headline" : "Oh nee!", |
113 | "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", | 113 | "service.crashHandler.text" : "{name} heeft een fout veroorzaakt.", |
114 | "service.disabledHandler.action" : "Activeer {name}", | 114 | "service.disabledHandler.action" : "Activeer {name}", |
@@ -126,8 +126,8 @@ | |||
126 | "settings.account.accountType.premium" : "Premium Supporter Account", | 126 | "settings.account.accountType.premium" : "Premium Supporter Account", |
127 | "settings.account.buttonSave" : "Update profiel", | 127 | "settings.account.buttonSave" : "Update profiel", |
128 | "settings.account.deleteAccount" : "Verwijder account", | 128 | "settings.account.deleteAccount" : "Verwijder account", |
129 | "settings.account.deleteEmailSent" : "Je hebt een e-mail ontvangen met een link om de aanvraag tot verwijderen van het account te bevestigen. Je accountgegevens en -data kunnen niet worden teruggehaald!", | 129 | "settings.account.deleteEmailSent" : "Je hebt een e-mail ontvangen met een link om het verwijderen van je account te bevestigen. Je accountgegevens en -data kunnen na verwijderen niet meer worden teruggehaald!", |
130 | "settings.account.deleteInfo" : "Wanneer je je Franz-account niet langer wilt gebruiken, kan je je account en alle gerelateerde data hier verwijderen.", | 130 | "settings.account.deleteInfo" : "Wanneer je je Franz-account niet langer wilt gebruiken, kun je je account en alle gerelateerde data verwijderen.", |
131 | "settings.account.headline" : "Account", | 131 | "settings.account.headline" : "Account", |
132 | "settings.account.headlineAccount" : "Accountinformatie", | 132 | "settings.account.headlineAccount" : "Accountinformatie", |
133 | "settings.account.headlineDangerZone" : "Gevarenzone", | 133 | "settings.account.headlineDangerZone" : "Gevarenzone", |
@@ -143,20 +143,20 @@ | |||
143 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", | 143 | "settings.account.tryReloadUserInfoRequest" : "Probeer opnieuw", |
144 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", | 144 | "settings.account.userInfoRequestFailed" : "Kon gebruikersinformatie niet laden", |
145 | "settings.app.buttonClearAllCache" : "Cache legen", | 145 | "settings.app.buttonClearAllCache" : "Cache legen", |
146 | "settings.app.buttonInstallUpdate" : "Herstart & installeer update", | 146 | "settings.app.buttonInstallUpdate" : "Opnieuw opstarten en updates installeren", |
147 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", | 147 | "settings.app.buttonSearchForUpdate" : "Controleer op updates", |
148 | "settings.app.cacheInfo" : "De Franz-cache gebruikt op dit moment {size} schijfruimte.", | 148 | "settings.app.cacheInfo" : "Franz gebruikt op dit moment {size} schijfruimte aan tijdelijke bestanden.", |
149 | "settings.app.currentVersion" : "Huidige versie:", | 149 | "settings.app.currentVersion" : "Huidige versie:", |
150 | "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", | 150 | "settings.app.form.autoLaunchInBackground" : "Open op de achtergrond", |
151 | "settings.app.form.autoLaunchOnStart" : "Open Franz bij opstarten", | 151 | "settings.app.form.autoLaunchOnStart" : "Open Franz bij opstarten", |
152 | "settings.app.form.beta" : "Inclusief bètaversies", | 152 | "settings.app.form.beta" : "Inclusief bètaversies", |
153 | "settings.app.form.darkMode" : "Stap over naar de donkere kant", | 153 | "settings.app.form.darkMode" : "Stap over naar de donkere kant", |
154 | "settings.app.form.enableGPUAcceleration" : "Schakel videokaart acceleratie in ", | 154 | "settings.app.form.enableGPUAcceleration" : "Schakel videokaart-acceleratie in ", |
155 | "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan", | 155 | "settings.app.form.enableSpellchecking" : "Zet spellingcontrole aan", |
156 | "settings.app.form.enableSystemTray" : "Toon Franz in de systeembalk", | 156 | "settings.app.form.enableSystemTray" : "Pictogram voor Franz in systeemvak tonen", |
157 | "settings.app.form.language" : "Taal", | 157 | "settings.app.form.language" : "Taal", |
158 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar de systeembalk", | 158 | "settings.app.form.minimizeToSystemTray" : "Minimaliseer Franz naar systeemvak", |
159 | "settings.app.form.runInBackground" : "Houd Franz op de achtergrond wanneer het venster gesloten wordt", | 159 | "settings.app.form.runInBackground" : "Houd Franz open op de achtergrond wanneer het venster gesloten wordt", |
160 | "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", | 160 | "settings.app.form.showDisabledServices" : "Toon uitgeschakelde services", |
161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", | 161 | "settings.app.form.showMessagesBadgesWhenMuted" : "Toon badge met ongelezen berichten wanneer meldingen zijn uitgeschakeld", |
162 | "settings.app.headline" : "Instellingen", | 162 | "settings.app.headline" : "Instellingen", |
@@ -165,10 +165,10 @@ | |||
165 | "settings.app.headlineGeneral" : "Algemeen", | 165 | "settings.app.headlineGeneral" : "Algemeen", |
166 | "settings.app.headlineLanguage" : "Taal", | 166 | "settings.app.headlineLanguage" : "Taal", |
167 | "settings.app.headlineUpdates" : "Updates", | 167 | "settings.app.headlineUpdates" : "Updates", |
168 | "settings.app.languageDisclaimer" : "Officiële vertalingen zijn in het Engels en Duits. Alle andere talen zijn beheerd door de community.", | 168 | "settings.app.languageDisclaimer" : "Franz spreekt officieel Engels en Duits. Alle andere talen worden beheerd door de community.", |
169 | "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", | 169 | "settings.app.restartRequired" : "Deze wijziging heeft een herstart nodig", |
170 | "settings.app.subheadlineCache" : "Cache", | 170 | "settings.app.subheadlineCache" : "Cache", |
171 | "settings.app.translationHelp" : "Help ons om Franz te vertalen naar uw taal.", | 171 | "settings.app.translationHelp" : "Help ons om Franz uw taal te laten spreken.", |
172 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", | 172 | "settings.app.updateStatusAvailable" : "Update beschikbaar, downloaden...", |
173 | "settings.app.updateStatusSearching" : "Zoekt naar updates", | 173 | "settings.app.updateStatusSearching" : "Zoekt naar updates", |
174 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", | 174 | "settings.app.updateStatusUpToDate" : "Je gebruikt de laatste versie van Franz", |
@@ -184,7 +184,7 @@ | |||
184 | "settings.recipes.all" : "Alle services", | 184 | "settings.recipes.all" : "Alle services", |
185 | "settings.recipes.dev" : "Ontwikkeling", | 185 | "settings.recipes.dev" : "Ontwikkeling", |
186 | "settings.recipes.headline" : "Beschikbare services", | 186 | "settings.recipes.headline" : "Beschikbare services", |
187 | "settings.recipes.missingService" : "Mist er een dienst?", | 187 | "settings.recipes.missingService" : "Mis je een service?", |
188 | "settings.recipes.mostPopular" : "Meest populair", | 188 | "settings.recipes.mostPopular" : "Meest populair", |
189 | "settings.recipes.nothingFound" : "Sorry, geen service gevonden met deze zoekterm.", | 189 | "settings.recipes.nothingFound" : "Sorry, geen service gevonden met deze zoekterm.", |
190 | "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", | 190 | "settings.recipes.servicesSuccessfulAddedInfo" : "Service succesvol toegevoegd", |
@@ -213,7 +213,7 @@ | |||
213 | "settings.service.form.iconUpload" : "Sleep en drop je afbeelding, of klik hier", | 213 | "settings.service.form.iconUpload" : "Sleep en drop je afbeelding, of klik hier", |
214 | "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", | 214 | "settings.service.form.indirectMessageInfo" : "Je ontvangt meldingen van alle nieuwe berichten in een kanaal, niet alleen @username, @channel, @here, ...", |
215 | "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", | 215 | "settings.service.form.indirectMessages" : "Toon berichtenbadge voor alle nieuwe berichten", |
216 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld zullen alle meldinggeluiden en afgespeelde audio uitgeschakeld zijn", | 216 | "settings.service.form.isMutedInfo" : "Indien uitgeschakeld, worden meldingen en audio niet afgespeeld", |
217 | "settings.service.form.name" : "Naam", | 217 | "settings.service.form.name" : "Naam", |
218 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen", | 218 | "settings.service.form.proxy.headline" : "HTTP\/HTTPS Proxy instellingen", |
219 | "settings.service.form.proxy.host" : "Proxy Host\/IP", | 219 | "settings.service.form.proxy.host" : "Proxy Host\/IP", |
@@ -233,15 +233,15 @@ | |||
233 | "settings.services.discoverServices" : "Ontdek services", | 233 | "settings.services.discoverServices" : "Ontdek services", |
234 | "settings.services.headline" : "Jouw services", | 234 | "settings.services.headline" : "Jouw services", |
235 | "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", | 235 | "settings.services.noServicesAdded" : "Je hebt nog geen services toegevoegd.", |
236 | "settings.services.servicesRequestFailed" : "Kan jouw diensten niet laden", | 236 | "settings.services.servicesRequestFailed" : "Kan jouw services niet laden", |
237 | "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld", | 237 | "settings.services.tooltip.isDisabled" : "Service is uitgeschakeld", |
238 | "settings.services.tooltip.isMuted" : "Alle geluiden zijn uitgeschakeld", | 238 | "settings.services.tooltip.isMuted" : "Geluid is uitgeschakeld", |
239 | "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", | 239 | "settings.services.tooltip.notificationsDisabled" : "Meldingen zijn uitgeschakeld", |
240 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", | 240 | "settings.services.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
241 | "settings.team.contentHeadline" : "Franz voor groepen", | 241 | "settings.team.contentHeadline" : "Franz voor Teams", |
242 | "settings.team.copy" : "Franz voor Teams geeft je de mogelijkheid om collega's uit te nodigen voor je team door hen een e-mail te sturen en hun inschrijvingen te beheren in je accountvoorkeuren. Verspil geen tijd met het instellen van inschrijvingen voor elk teamlid apart, vergeet meerdere facturen en verschillende afrekeningsperiodes - één team regeert alles!", | 242 | "settings.team.copy" : "Franz voor Teams geeft je de mogelijkheid om collega's uit te nodigen voor je team door hen een e-mail te sturen en hun inschrijvingen te beheren in je accountvoorkeuren. Verspil geen tijd met het instellen van inschrijvingen voor elk individueel teamlid, vergeet meerdere facturen en verschillende afrekeningsperiodes - één team om alles te regelen!", |
243 | "settings.team.headline" : "Team", | 243 | "settings.team.headline" : "Team", |
244 | "settings.team.intro" : "Gebruiken jij en je team Franz? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt, allemaal vanaf één account.", | 244 | "settings.team.intro" : "Gebruiken jij en je team Franz? Je kunt nu Premium inschrijvingen beheren voor zoveel collega's, vrienden, of familieleden als je wilt. En dat alles vanuit één account.", |
245 | "settings.team.manageAction" : "Beheer je Team op meetfranz.com", | 245 | "settings.team.manageAction" : "Beheer je Team op meetfranz.com", |
246 | "settings.team.upgradeAction" : "Jouw Account opwaarderen", | 246 | "settings.team.upgradeAction" : "Jouw Account opwaarderen", |
247 | "settings.user.form.accountType.company" : "Bedrijf", | 247 | "settings.user.form.accountType.company" : "Bedrijf", |
@@ -258,7 +258,7 @@ | |||
258 | "settings.workspace.form.buttonDelete" : "Verwijder werkruimte", | 258 | "settings.workspace.form.buttonDelete" : "Verwijder werkruimte", |
259 | "settings.workspace.form.buttonSave" : "Sla werkruimte op", | 259 | "settings.workspace.form.buttonSave" : "Sla werkruimte op", |
260 | "settings.workspace.form.name" : "Naam", | 260 | "settings.workspace.form.name" : "Naam", |
261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Diensten in deze werkruimte", | 261 | "settings.workspace.form.servicesInWorkspaceHeadline" : "Services in deze werkruimte", |
262 | "settings.workspace.form.yourWorkspaces" : "Jouw werkruimtes", | 262 | "settings.workspace.form.yourWorkspaces" : "Jouw werkruimtes", |
263 | "settings.workspaces.deletedInfo" : "Werkruimte is verwijderd", | 263 | "settings.workspaces.deletedInfo" : "Werkruimte is verwijderd", |
264 | "settings.workspaces.headline" : "Jouw werkplaatsen", | 264 | "settings.workspaces.headline" : "Jouw werkplaatsen", |
@@ -266,11 +266,11 @@ | |||
266 | "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Probeer opnieuw", |
267 | "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", | 267 | "settings.workspaces.updatedInfo" : "Je wijzigingen zijn opgeslagen", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Zie hier Franz Werkruimtes", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Less is More: Zie hier Franz Werkruimtes", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Franz werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van diensten aan en schakel gelijk wanneer tussen de verschillende sets.Jij beslist welke diensten je wanneer en waar nodig hebt, enkel zo kunnen wij jou helpen je focus te behouden. Of net makkelijk de switch te maken van werk naar ontspanning.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van services aan en schakel wanneer je wilt tussen de verschillende sets. Jij beslist welke services je wanneer en waar nodig hebt. Zo helpen wij jou je focus te behouden - of net zo gemakkelijk te switchen van werk naar ontspanning.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Kan jouw werkruimtes niet laden", | 270 | "settings.workspaces.workspacesRequestFailed" : "Kan jouw werkruimtes niet laden", |
271 | "sidebar.addNewService" : "Voeg service toe", | 271 | "sidebar.addNewService" : "Voeg service toe", |
272 | "sidebar.closeWorkspaceDrawer" : "Werkruimte pagina sluiten", | 272 | "sidebar.closeWorkspaceDrawer" : "Werkruimte pagina sluiten", |
273 | "sidebar.muteApp" : "Schakel berichten & geluid uit", | 273 | "sidebar.muteApp" : "Berichten & geluid uitschakelen", |
274 | "sidebar.openWorkspaceDrawer" : "Werkruimte pagina openen", | 274 | "sidebar.openWorkspaceDrawer" : "Werkruimte pagina openen", |
275 | "sidebar.settings" : "Instellingen", | 275 | "sidebar.settings" : "Instellingen", |
276 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", | 276 | "sidebar.unmuteApp" : "Berichten & geluid inschakelen", |
@@ -281,18 +281,18 @@ | |||
281 | "signup.headline" : "Aanmelden", | 281 | "signup.headline" : "Aanmelden", |
282 | "signup.lastname.label" : "Achternaam", | 282 | "signup.lastname.label" : "Achternaam", |
283 | "signup.legal.info" : "Door een Franz-account aan te maken ga je akkoord met de", | 283 | "signup.legal.info" : "Door een Franz-account aan te maken ga je akkoord met de", |
284 | "signup.legal.privacy" : "Privacy Voorwaarden", | 284 | "signup.legal.privacy" : "Privacyvoorwaarden", |
285 | "signup.legal.terms" : "Gebruiksvoorwaarden", | 285 | "signup.legal.terms" : "Gebruiksvoorwaarden", |
286 | "signup.link.login" : "Al een account? Log in!", | 286 | "signup.link.login" : "Heb je al een account? Log in!", |
287 | "signup.password.label" : "Wachtwoord", | 287 | "signup.password.label" : "Wachtwoord", |
288 | "signup.submit.label" : "Account aanmaken", | 288 | "signup.submit.label" : "Account aanmaken", |
289 | "subscription.euTaxInfo" : "Bewoners binnen EU: lokale belasting kan van toepassing zijn", | 289 | "subscription.euTaxInfo" : "EU-bewoners: lokale belastingen kunnen van toepassing zijn", |
290 | "subscription.features.ads" : "Geen advertenties, nooit!", | 290 | "subscription.features.ads" : "Geen advertenties, nooit!", |
291 | "subscription.features.comingSoon" : "komt binnenkort", | 291 | "subscription.features.comingSoon" : "Binnenkort", |
292 | "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", | 292 | "subscription.features.noInterruptions" : "Geen haperingen & pop ups over upgrades", |
293 | "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe", | 293 | "subscription.features.onpremise.mattermost" : "Voeg op-locatie\/gehoste diensten zoals Mattermost toe", |
294 | "subscription.features.proxy" : "Proxy understeuning voor diensten", | 294 | "subscription.features.proxy" : "Proxy understeuning voor services", |
295 | "subscription.features.spellchecker" : "Ondersteuning voor spellingscheck", | 295 | "subscription.features.spellchecker" : "Ondersteuning voor spellingcontrole", |
296 | "subscription.features.workspaces" : "Beheer je diensten in de werkruimtes", | 296 | "subscription.features.workspaces" : "Beheer je diensten in de werkruimtes", |
297 | "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat", | 297 | "subscription.includedFeatures" : "Betaald Franz Premium Supporter Account bevat", |
298 | "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren", | 298 | "subscription.paymentSessionError" : "Kan betaalformulier niet initialiseren", |
@@ -303,30 +303,30 @@ | |||
303 | "subscriptionPopup.buttonCancel" : "Annuleer", | 303 | "subscriptionPopup.buttonCancel" : "Annuleer", |
304 | "subscriptionPopup.buttonDone" : "Klaar", | 304 | "subscriptionPopup.buttonDone" : "Klaar", |
305 | "tabs.item.deleteService" : "Verwijder service", | 305 | "tabs.item.deleteService" : "Verwijder service", |
306 | "tabs.item.disableAudio" : "Schakel audio uit", | 306 | "tabs.item.disableAudio" : "Audio uitschakelen", |
307 | "tabs.item.disableNotifications" : "Schakel meldingen uit", | 307 | "tabs.item.disableNotifications" : "Meldingen uitschakelen", |
308 | "tabs.item.disableService" : "Schakel service uit", | 308 | "tabs.item.disableService" : "Service uitschakelen", |
309 | "tabs.item.edit" : "Bewerken", | 309 | "tabs.item.edit" : "Bewerken", |
310 | "tabs.item.enableAudio" : "Audio inschakelen", | 310 | "tabs.item.enableAudio" : "Audio inschakelen", |
311 | "tabs.item.enableNotification" : "Meldingen inschakelen", | 311 | "tabs.item.enableNotification" : "Meldingen inschakelen", |
312 | "tabs.item.enableService" : "Service inschakelen", | 312 | "tabs.item.enableService" : "Service inschakelen", |
313 | "tabs.item.reload" : "Herladen", | 313 | "tabs.item.reload" : "Herladen", |
314 | "validation.email" : "{field} is niet geldig", | 314 | "validation.email" : "{field} is niet geldig", |
315 | "validation.minLength" : "{field} moet minimaal {length} karakters lang zijn", | 315 | "validation.minLength" : "{field} dient minimaal {length} karakters lang te zijn", |
316 | "validation.oneRequired" : "Er is op zijn minst één vereist", | 316 | "validation.oneRequired" : "Minstens één vereist", |
317 | "validation.required" : "{field} is vereist", | 317 | "validation.required" : "{field} is vereist", |
318 | "validation.url" : "{field} is niet een geldige URL", | 318 | "validation.url" : "{field} is geen geldige URL", |
319 | "welcome.loginButton" : "Log in op je account", | 319 | "welcome.loginButton" : "Log in op je account", |
320 | "welcome.signupButton" : "Maak een gratis account", | 320 | "welcome.signupButton" : "Maak een gratis account", |
321 | "workspaceDrawer.addNewWorkspaceLabel" : "Voeg een nieuwe werkruimte toe", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Voeg een nieuwe werkruimte toe", |
322 | "workspaceDrawer.allServices" : "Alle diensten", | 322 | "workspaceDrawer.allServices" : "Alle services", |
323 | "workspaceDrawer.headline" : "Werkruimtes", | 323 | "workspaceDrawer.headline" : "Werkruimtes", |
324 | "workspaceDrawer.item.contextMenuEdit" : "bewerken", | 324 | "workspaceDrawer.item.contextMenuEdit" : "bewerken", |
325 | "workspaceDrawer.item.noServicesAddedYet" : "Nog geen diensten toegevoegd", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Nog geen services toegevoegd", |
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Maak je eerste werkruimte", |
327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Heractiveer premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Premium account heractiveren", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van diensten aan en schakel gelijk wanneer tussen de verschillende sets.<\/p><p>Jij beslist welke diensten je wanneer en waar nodig hebt, enkel zo kunnen wij jou helpen je focus te behouden. Of net makkelijk de switch te maken van werk naar ontspanning.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "Franz werkruimtes laat je aandacht geven aan wat nu belangrijk is. Maak verschillende sets van services aan en schakel wanneer je wilt tussen de verschillende sets. Jij beslist welke services je wanneer en waar nodig hebt. Zo helpen wij jou je focus te behouden - of net zo gemakkelijk te switchen van werk naar ontspanning.", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Pas werkruimte instellingen aan", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Werkruimte instellingen aanpassen", |
331 | "workspaces.switchingIndicator.switchingTo" : "Overschakelen naar" | 331 | "workspaces.switchingIndicator.switchingTo" : "Overschakelen naar" |
332 | } | 332 | } |
diff --git a/src/i18n/locales/sk.json b/src/i18n/locales/sk.json index 3b051e975..bd08d5e4d 100644 --- a/src/i18n/locales/sk.json +++ b/src/i18n/locales/sk.json | |||
@@ -3,15 +3,15 @@ | |||
3 | "app.errorHandler.headline" : "Niečo sa pokazilo", | 3 | "app.errorHandler.headline" : "Niečo sa pokazilo", |
4 | "feature.announcements.changelog.headline" : "Zmeny vo Franz {version}", | 4 | "feature.announcements.changelog.headline" : "Zmeny vo Franz {version}", |
5 | "feature.delayApp.action" : "Získajte licenciu pre Franz podporu", | 5 | "feature.delayApp.action" : "Získajte licenciu pre Franz podporu", |
6 | "feature.delayApp.headline" : "Please purchase a Franz Supporter License to skip waiting", | 6 | "feature.delayApp.headline" : "Prosím, kúp si licenciu Franz Supporter a nebudeš musieť čakať", |
7 | "feature.delayApp.text" : "Franz bude pokračovať v {seconds} seundách.", | 7 | "feature.delayApp.text" : "Franz bude pokračovať v {seconds} sekundách.", |
8 | "feature.shareFranz.action.email" : "Odoslať ako e-mail", | 8 | "feature.shareFranz.action.email" : "Odoslať ako e-mail", |
9 | "feature.shareFranz.action.facebook" : "Zdielať na Facebook-u", | 9 | "feature.shareFranz.action.facebook" : "Zdielať na Facebook-u", |
10 | "feature.shareFranz.action.twitter" : "Zdieľať na Twitter-i", | 10 | "feature.shareFranz.action.twitter" : "Zdieľať na Twitter-i", |
11 | "feature.shareFranz.headline" : "Franz is better together!", | 11 | "feature.shareFranz.headline" : "Franz je lepší spolu!", |
12 | "feature.shareFranz.shareText.email" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com", | 12 | "feature.shareFranz.shareText.email" : "Pridali sme {count} služieb do Franz! Získajte zadarmo aplikáciu pre WhatsApp, Messenger, Slack, Skype a iné na www.meetfranz.com", |
13 | "feature.shareFranz.shareText.twitter" : "I've added {count} services to Franz! Get the free app for WhatsApp, Messenger, Slack, Skype and co at www.meetfranz.com \/cc @FranzMessenger", | 13 | "feature.shareFranz.shareText.twitter" : "Pridal som {count} služieb do Franz! Získajte zadarmo aplikáciu pre WhatsApp, Messenger, Slack, Skype a iné na www.meetfranz.com \/cc @FranzMessenger", |
14 | "feature.shareFranz.text" : "Tell your friends and colleagues how awesome Franz is and help us to spread the word.", | 14 | "feature.shareFranz.text" : "Povedzte vašim priateľom a známym aký je Franz skvelý a pomôžte nám rozšíriť sa do sveta.", |
15 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", | 15 | "global.api.unhealthy" : "Nedá sa pripojiť k online službám Franz", |
16 | "global.notConnectedToTheInternet" : "Nie ste pripojení k internetu.", | 16 | "global.notConnectedToTheInternet" : "Nie ste pripojení k internetu.", |
17 | "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})", | 17 | "global.spellchecker.useDefault" : "Použiť predvolené nastavenie systému ({default})", |
@@ -92,9 +92,9 @@ | |||
92 | "menu.window.minimize" : "Minimalizovať", | 92 | "menu.window.minimize" : "Minimalizovať", |
93 | "menu.workspaces" : "Pracovný priestor", | 93 | "menu.workspaces" : "Pracovný priestor", |
94 | "menu.workspaces.addNewWorkspace" : "Pridať nový pracovný priestor ...", | 94 | "menu.workspaces.addNewWorkspace" : "Pridať nový pracovný priestor ...", |
95 | "menu.workspaces.closeWorkspaceDrawer" : "Close workspace drawer", | 95 | "menu.workspaces.closeWorkspaceDrawer" : "Zavrieť workspace záložku", |
96 | "menu.workspaces.defaultWorkspace" : "Všetky služby", | 96 | "menu.workspaces.defaultWorkspace" : "Všetky služby", |
97 | "menu.workspaces.openWorkspaceDrawer" : "Open workspace drawer", | 97 | "menu.workspaces.openWorkspaceDrawer" : "Otvoriť workspace záložku", |
98 | "password.email.label" : "E-mailová adresa", | 98 | "password.email.label" : "E-mailová adresa", |
99 | "password.headline" : "Obnoviť heslo", | 99 | "password.headline" : "Obnoviť heslo", |
100 | "password.link.login" : "Prihlásiť sa do vášho účtu", | 100 | "password.link.login" : "Prihlásiť sa do vášho účtu", |
@@ -117,7 +117,7 @@ | |||
117 | "service.errorHandler.editAction" : "Upraviť {name}", | 117 | "service.errorHandler.editAction" : "Upraviť {name}", |
118 | "service.errorHandler.headline" : "Ale nie!", | 118 | "service.errorHandler.headline" : "Ale nie!", |
119 | "service.errorHandler.message" : "Chyba", | 119 | "service.errorHandler.message" : "Chyba", |
120 | "service.errorHandler.text" : "{name} has failed to load.", | 120 | "service.errorHandler.text" : "{name} sa nepodarilo načítať.", |
121 | "service.webviewLoader.loading" : "Načítava", | 121 | "service.webviewLoader.loading" : "Načítava", |
122 | "services.getStarted" : "Začíname", | 122 | "services.getStarted" : "Začíname", |
123 | "services.welcome" : "Vítajte v aplikácii Franz", | 123 | "services.welcome" : "Vítajte v aplikácii Franz", |
@@ -266,12 +266,12 @@ | |||
266 | "settings.workspaces.tryReloadWorkspaces" : "Skúsiť znova", | 266 | "settings.workspaces.tryReloadWorkspaces" : "Skúsiť znova", |
267 | "settings.workspaces.updatedInfo" : "Vaše zmeny boli uložené", | 267 | "settings.workspaces.updatedInfo" : "Vaše zmeny boli uložené", |
268 | "settings.workspaces.workspaceFeatureHeadline" : "Menej je viac: Predstavenie Franz Pracovné priestory", | 268 | "settings.workspaces.workspaceFeatureHeadline" : "Menej je viac: Predstavenie Franz Pracovné priestory", |
269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time. You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.", | 269 | "settings.workspaces.workspaceFeatureInfo" : "Franz Workspace vám umožňujú sústrediť sa na to, čo je práve dôležité. Nastavte si rozličné skupiny služieb a jednoducho medzi nimi kedykoľvek prepínajte. Vy rozhodujete ktoré služby, kedy a kde potrebujete, a my vám potom vieme pomôcť sústrediť sa na prácu - alebo jednoducho prepnúť z práce na čokoľvek iné.", |
270 | "settings.workspaces.workspacesRequestFailed" : "Could not load your workspaces", | 270 | "settings.workspaces.workspacesRequestFailed" : "Nebolo možné načítať vaše workspace", |
271 | "sidebar.addNewService" : "Pridať novú službu", | 271 | "sidebar.addNewService" : "Pridať novú službu", |
272 | "sidebar.closeWorkspaceDrawer" : "Close workspace drawer", | 272 | "sidebar.closeWorkspaceDrawer" : "Zavrieť workspace záložku", |
273 | "sidebar.muteApp" : "Vypnúť upozornenia a zvuky", | 273 | "sidebar.muteApp" : "Vypnúť upozornenia a zvuky", |
274 | "sidebar.openWorkspaceDrawer" : "Open workspace drawer", | 274 | "sidebar.openWorkspaceDrawer" : "Otvoriť workspace záložku", |
275 | "sidebar.settings" : "Nastavenia", | 275 | "sidebar.settings" : "Nastavenia", |
276 | "sidebar.unmuteApp" : "Povoliť oznámenia a zvuky", | 276 | "sidebar.unmuteApp" : "Povoliť oznámenia a zvuky", |
277 | "signup.company.label" : "Spoločnosť", | 277 | "signup.company.label" : "Spoločnosť", |
@@ -289,11 +289,11 @@ | |||
289 | "subscription.euTaxInfo" : "Pre obyvateľov EÚ: môže byť aplikovaná miestna daň", | 289 | "subscription.euTaxInfo" : "Pre obyvateľov EÚ: môže byť aplikovaná miestna daň", |
290 | "subscription.features.ads" : "Žiadne reklamy, nikdy!", | 290 | "subscription.features.ads" : "Žiadne reklamy, nikdy!", |
291 | "subscription.features.comingSoon" : "už čoskoro", | 291 | "subscription.features.comingSoon" : "už čoskoro", |
292 | "subscription.features.noInterruptions" : "No app delays & nagging to upgrade license", | 292 | "subscription.features.noInterruptions" : "Žiadne oneskorenia a obťažovania po aktivovaní licencie", |
293 | "subscription.features.onpremise.mattermost" : "Add on-premise\/hosted services like Mattermost", | 293 | "subscription.features.onpremise.mattermost" : "Pridať on-premise\/hostovanú službu ako Mattermost", |
294 | "subscription.features.proxy" : "Proxy support for services", | 294 | "subscription.features.proxy" : "Podpora proxy pre služby", |
295 | "subscription.features.spellchecker" : "Support for spellchecker", | 295 | "subscription.features.spellchecker" : "Podpora pre kontrolovanie pravopisných chýb", |
296 | "subscription.features.workspaces" : "Organize your services in workspaces", | 296 | "subscription.features.workspaces" : "Organizujte vaše služby vo workspace", |
297 | "subscription.includedFeatures" : "Platený účet Premium Supporter Franz zahŕňa", | 297 | "subscription.includedFeatures" : "Platený účet Premium Supporter Franz zahŕňa", |
298 | "subscription.paymentSessionError" : "Nepodarilo sa inicializovať platbu od", | 298 | "subscription.paymentSessionError" : "Nepodarilo sa inicializovať platbu od", |
299 | "subscription.submit.label" : "Chcem podporiť vývoj aplikácie Franz", | 299 | "subscription.submit.label" : "Chcem podporiť vývoj aplikácie Franz", |
@@ -313,20 +313,20 @@ | |||
313 | "tabs.item.reload" : "Obnoviť", | 313 | "tabs.item.reload" : "Obnoviť", |
314 | "validation.email" : "{field} je neplatný", | 314 | "validation.email" : "{field} je neplatný", |
315 | "validation.minLength" : "{field} by malo byť dlhé aspoň {length} znakov", | 315 | "validation.minLength" : "{field} by malo byť dlhé aspoň {length} znakov", |
316 | "validation.oneRequired" : "At least one is required", | 316 | "validation.oneRequired" : "Je nutné zadať aspoň jeden", |
317 | "validation.required" : "{field} je povinné", | 317 | "validation.required" : "{field} je povinné", |
318 | "validation.url" : "{field} nie je platné URL", | 318 | "validation.url" : "{field} nie je platné URL", |
319 | "welcome.loginButton" : "Prihlásiť sa do vášho účtu", | 319 | "welcome.loginButton" : "Prihlásiť sa do vášho účtu", |
320 | "welcome.signupButton" : "Vytvoriť účet zdarma", | 320 | "welcome.signupButton" : "Vytvoriť účet zdarma", |
321 | "workspaceDrawer.addNewWorkspaceLabel" : "Add new workspace", | 321 | "workspaceDrawer.addNewWorkspaceLabel" : "Pridať nový workspace", |
322 | "workspaceDrawer.allServices" : "Všetky služby", | 322 | "workspaceDrawer.allServices" : "Všetky služby", |
323 | "workspaceDrawer.headline" : "Pracovn priestor", | 323 | "workspaceDrawer.headline" : "Pracovn plochy", |
324 | "workspaceDrawer.item.contextMenuEdit" : "edit", | 324 | "workspaceDrawer.item.contextMenuEdit" : "Upraviť", |
325 | "workspaceDrawer.item.noServicesAddedYet" : "No services added yet", | 325 | "workspaceDrawer.item.noServicesAddedYet" : "Zatiaľ žiadne služby", |
326 | "workspaceDrawer.premiumCtaButtonLabel" : "Create your first workspace", | 326 | "workspaceDrawer.premiumCtaButtonLabel" : "Vytvorte váš prvý workspace", |
327 | "workspaceDrawer.proFeatureBadge" : "Premium feature", | 327 | "workspaceDrawer.proFeatureBadge" : "Prémiová funkcia", |
328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Reactivate premium account", | 328 | "workspaceDrawer.reactivatePremiumAccountLabel" : "Obnovte svoj prémiový účet", |
329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspaces let you focus on what’s important right now. Set up different sets of services and easily switch between them at any time.<\/p><p>You decide which services you need when and where, so we can help you stay on top of your game - or easily switch off from work whenever you want.<\/p>", | 329 | "workspaceDrawer.workspaceFeatureInfo" : "<p>Franz Workspace vám umožňujú sústrediť sa na to, čo je práve dôležité. Nastavte si rozličné skupiny služieb a jednoducho medzi nimi kedykoľvek prepínajte.<\/p><p>Vy rozhodujete ktoré služby, kedy a kde potrebujete, a my vám potom vieme pomôcť sústrediť sa na prácu - alebo jednoducho prepnúť z práce na čokoľvek iné. <\/p>", |
330 | "workspaceDrawer.workspacesSettingsTooltip" : "Edit workspaces settings", | 330 | "workspaceDrawer.workspacesSettingsTooltip" : "Upraviť nastavenia workspace", |
331 | "workspaces.switchingIndicator.switchingTo" : "Switching to" | 331 | "workspaces.switchingIndicator.switchingTo" : "Prepínanie na" |
332 | } | 332 | } |
diff --git a/src/i18n/messages/src/components/settings/team/TeamDashboard.json b/src/i18n/messages/src/components/settings/team/TeamDashboard.json index 6bccc25ff..0c33fee5f 100644 --- a/src/i18n/messages/src/components/settings/team/TeamDashboard.json +++ b/src/i18n/messages/src/components/settings/team/TeamDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Team", | 4 | "defaultMessage": "!!!Team", |
5 | "file": "src/components/settings/team/TeamDashboard.js", | 5 | "file": "src/components/settings/team/TeamDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 14, | 7 | "line": 17, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 17, | 11 | "line": 20, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Franz for Teams", | 17 | "defaultMessage": "!!!Franz for Teams", |
18 | "file": "src/components/settings/team/TeamDashboard.js", | 18 | "file": "src/components/settings/team/TeamDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 18, | 20 | "line": 21, |
21 | "column": 19 | 21 | "column": 19 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 21, | 24 | "line": 24, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
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.", | 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", | 31 | "file": "src/components/settings/team/TeamDashboard.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 22, | 33 | "line": 25, |
34 | "column": 9 | 34 | "column": 9 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 25, | 37 | "line": 28, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
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!", | 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", | 44 | "file": "src/components/settings/team/TeamDashboard.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 26, | 46 | "line": 29, |
47 | "column": 8 | 47 | "column": 8 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 29, | 50 | "line": 32, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Manage your Team on meetfranz.com", | 56 | "defaultMessage": "!!!Manage your Team on meetfranz.com", |
57 | "file": "src/components/settings/team/TeamDashboard.js", | 57 | "file": "src/components/settings/team/TeamDashboard.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 30, | 59 | "line": 33, |
60 | "column": 16 | 60 | "column": 16 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 33, | 63 | "line": 36, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Upgrade your Account", | 69 | "defaultMessage": "!!!Upgrade your Account", |
70 | "file": "src/components/settings/team/TeamDashboard.js", | 70 | "file": "src/components/settings/team/TeamDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 34, | 72 | "line": 37, |
73 | "column": 17 | 73 | "column": 17 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 37, | 76 | "line": 40, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | } | 79 | } |
diff --git a/src/i18n/messages/src/components/ui/UpgradeButton/index.json b/src/i18n/messages/src/components/ui/UpgradeButton/index.json new file mode 100644 index 000000000..28e44cb66 --- /dev/null +++ b/src/i18n/messages/src/components/ui/UpgradeButton/index.json | |||
@@ -0,0 +1,15 @@ | |||
1 | [ | ||
2 | { | ||
3 | "id": "global.upgradeButton.upgradeToPro", | ||
4 | "defaultMessage": "!!!Upgrade to Franz Professional", | ||
5 | "file": "src/components/ui/UpgradeButton/index.js", | ||
6 | "start": { | ||
7 | "line": 13, | ||
8 | "column": 16 | ||
9 | }, | ||
10 | "end": { | ||
11 | "line": 16, | ||
12 | "column": 3 | ||
13 | } | ||
14 | } | ||
15 | ] \ No newline at end of file | ||
diff --git a/src/i18n/messages/src/features/todos/components/TodosWebview.json b/src/i18n/messages/src/features/todos/components/TodosWebview.json index 2387112b4..9cc3325d1 100644 --- a/src/i18n/messages/src/features/todos/components/TodosWebview.json +++ b/src/i18n/messages/src/features/todos/components/TodosWebview.json | |||
@@ -1,7 +1,7 @@ | |||
1 | [ | 1 | [ |
2 | { | 2 | { |
3 | "id": "feature.todos.premium.info", | 3 | "id": "feature.todos.premium.info", |
4 | "defaultMessage": "!!!The Franz Todos Preview is currently only available for Franz Premium accounts.", | 4 | "defaultMessage": "!!!Franz Todos are available to premium users now!", |
5 | "file": "src/features/todos/components/TodosWebview.js", | 5 | "file": "src/features/todos/components/TodosWebview.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 18, | 7 | "line": 18, |
@@ -27,7 +27,7 @@ | |||
27 | }, | 27 | }, |
28 | { | 28 | { |
29 | "id": "feature.todos.premium.rollout", | 29 | "id": "feature.todos.premium.rollout", |
30 | "defaultMessage": "!!!Franz Todos will be available to everyone soon.", | 30 | "defaultMessage": "!!!Everyone else will have to wait a little longer.", |
31 | "file": "src/features/todos/components/TodosWebview.js", | 31 | "file": "src/features/todos/components/TodosWebview.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 26, | 33 | "line": 26, |
diff --git a/src/i18n/messages/src/i18n/globalMessages.json b/src/i18n/messages/src/i18n/globalMessages.json index 28001614f..f4fd5b8b0 100644 --- a/src/i18n/messages/src/i18n/globalMessages.json +++ b/src/i18n/messages/src/i18n/globalMessages.json | |||
@@ -76,5 +76,18 @@ | |||
76 | "line": 27, | 76 | "line": 27, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | ||
80 | { | ||
81 | "id": "global.franzProRequired", | ||
82 | "defaultMessage": "!!!Franz Professional Required", | ||
83 | "file": "src/i18n/globalMessages.js", | ||
84 | "start": { | ||
85 | "line": 28, | ||
86 | "column": 15 | ||
87 | }, | ||
88 | "end": { | ||
89 | "line": 31, | ||
90 | "column": 3 | ||
91 | } | ||
79 | } | 92 | } |
80 | ] \ No newline at end of file | 93 | ] \ No newline at end of file |
diff --git a/src/stores/AppStore.js b/src/stores/AppStore.js index 6054e6721..315235ba4 100644 --- a/src/stores/AppStore.js +++ b/src/stores/AppStore.js | |||
@@ -94,6 +94,7 @@ export default class AppStore extends Store { | |||
94 | this._offlineCheck.bind(this), | 94 | this._offlineCheck.bind(this), |
95 | this._setLocale.bind(this), | 95 | this._setLocale.bind(this), |
96 | this._muteAppHandler.bind(this), | 96 | this._muteAppHandler.bind(this), |
97 | this._handleFullScreen.bind(this), | ||
97 | ]); | 98 | ]); |
98 | } | 99 | } |
99 | 100 | ||
@@ -379,6 +380,16 @@ export default class AppStore extends Store { | |||
379 | } | 380 | } |
380 | } | 381 | } |
381 | 382 | ||
383 | _handleFullScreen() { | ||
384 | const body = document.querySelector('body'); | ||
385 | |||
386 | if (this.isFullScreen) { | ||
387 | body.classList.add('isFullScreen'); | ||
388 | } else { | ||
389 | body.classList.remove('isFullScreen'); | ||
390 | } | ||
391 | } | ||
392 | |||
382 | // Helpers | 393 | // Helpers |
383 | _appStartsCounter() { | 394 | _appStartsCounter() { |
384 | this.actions.settings.update({ | 395 | this.actions.settings.update({ |
diff --git a/src/stores/UIStore.js b/src/stores/UIStore.js index 2c785111f..9680c5bcc 100644 --- a/src/stores/UIStore.js +++ b/src/stores/UIStore.js | |||
@@ -46,7 +46,6 @@ export default class UIStore extends Store { | |||
46 | // Actions | 46 | // Actions |
47 | @action _openSettings({ path = '/settings' }) { | 47 | @action _openSettings({ path = '/settings' }) { |
48 | const settingsPath = path !== '/settings' ? `/settings/${path}` : path; | 48 | const settingsPath = path !== '/settings' ? `/settings/${path}` : path; |
49 | console.log(settingsPath); | ||
50 | this.stores.router.push(settingsPath); | 49 | this.stores.router.push(settingsPath); |
51 | } | 50 | } |
52 | 51 | ||
diff --git a/src/stores/UserStore.js b/src/stores/UserStore.js index 7ac7d2375..6e6f745c7 100644 --- a/src/stores/UserStore.js +++ b/src/stores/UserStore.js | |||
@@ -160,6 +160,10 @@ export default class UserStore extends Store { | |||
160 | return !!this.data.isPremium; | 160 | return !!this.data.isPremium; |
161 | } | 161 | } |
162 | 162 | ||
163 | @computed get isPremiumOverride() { | ||
164 | return (!this.team.plan && this.isPremium) || (this.team.state === 'expired' && this.isPremium); | ||
165 | } | ||
166 | |||
163 | @computed get isPersonal() { | 167 | @computed get isPersonal() { |
164 | if (!this.team.plan) return false; | 168 | if (!this.team.plan) return false; |
165 | const plan = getPlan(this.team.plan); | 169 | const plan = getPlan(this.team.plan); |
@@ -168,12 +172,12 @@ export default class UserStore extends Store { | |||
168 | } | 172 | } |
169 | 173 | ||
170 | @computed get isPro() { | 174 | @computed get isPro() { |
171 | if (!this.team.plan && this.isPremium) return true; | 175 | if (this.isPremiumOverride) return true; |
172 | 176 | ||
173 | if (!this.team.plan) return false; | 177 | if ((!this.team.plan || this.team.state === 'expired')) return false; |
174 | const plan = getPlan(this.team.plan); | 178 | const plan = getPlan(this.team.plan); |
175 | 179 | ||
176 | return plan === PLANS.PRO; | 180 | return plan === PLANS.PRO || plan === PLANS.LEGACY; |
177 | } | 181 | } |
178 | 182 | ||
179 | @computed get legacyServices() { | 183 | @computed get legacyServices() { |
diff --git a/src/styles/layout.scss b/src/styles/layout.scss index 10027da60..b18bd6dcf 100644 --- a/src/styles/layout.scss +++ b/src/styles/layout.scss | |||
@@ -32,9 +32,11 @@ html { overflow: hidden; } | |||
32 | .app-loader .app-loader__title { color: $dark-theme-gray-lightest; } | 32 | .app-loader .app-loader__title { color: $dark-theme-gray-lightest; } |
33 | } | 33 | } |
34 | 34 | ||
35 | .app { | 35 | body.win32:not(.isFullScreen) .app .app__content { |
36 | //display: flex; | 36 | height: calc(100% - 28px); |
37 | } | ||
37 | 38 | ||
39 | .app { | ||
38 | .app__content { | 40 | .app__content { |
39 | display: flex; | 41 | display: flex; |
40 | width: calc(100% + 300px); | 42 | width: calc(100% + 300px); |
diff --git a/src/styles/settings.scss b/src/styles/settings.scss index 0955aaa0c..bb95ab5d2 100644 --- a/src/styles/settings.scss +++ b/src/styles/settings.scss | |||
@@ -1,45 +1,39 @@ | |||
1 | @import './config.scss'; | 1 | @import './config.scss'; |
2 | 2 | ||
3 | %headline { | 3 | %headline { |
4 | color: $theme-gray-light; | 4 | color: #FFF; |
5 | font-size: 20px; | 5 | font-size: 20px; |
6 | font-weight: 400; | 6 | font-weight: 400; |
7 | letter-spacing: -1px; | 7 | letter-spacing: -1px; |
8 | 8 | ||
9 | a { color: $theme-gray-light; } | 9 | a { color: #FFF } |
10 | } | 10 | } |
11 | 11 | ||
12 | %headline__dark { | 12 | %headline__dark { |
13 | color: $dark-theme-gray-lightest; | 13 | color: #FFF; |
14 | font-size: 20px; | ||
15 | font-weight: 400; | ||
16 | letter-spacing: -1px; | ||
14 | 17 | ||
15 | a { color: $dark-theme-gray-lightest; } | 18 | a { color: #FFF } |
16 | } | 19 | } |
17 | 20 | ||
18 | .theme__dark { | 21 | .theme__dark { |
19 | .settings-wrapper { background: rgba($dark-theme-black, .8); } | 22 | .settings-wrapper { background: rgba($dark-theme-black, .8); } |
20 | 23 | ||
21 | .settings { | 24 | .settings { |
22 | background: $dark-theme-gray-darkest; | ||
23 | box-shadow: 0 20px 50px rgba($dark-theme-black, .5); | ||
24 | |||
25 | .settings__header { | 25 | .settings__header { |
26 | background: $dark-theme-gray-darker; | 26 | .mdi { color: #FFF } |
27 | 27 | } | |
28 | h1, | ||
29 | .settings__header-item { @extend %headline__dark; } | ||
30 | 28 | ||
31 | .separator { border-right: 1px solid $dark-theme-gray-dark; } | 29 | .settings__main { |
32 | .mdi { color: $dark-theme-gray-lightest; } | 30 | background: $dark-theme-gray-darkest; |
33 | } | 31 | } |
34 | 32 | ||
35 | .settings__body::-webkit-scrollbar-thumb { background: $dark-theme-gray; } | 33 | .settings__body::-webkit-scrollbar-thumb { background: $dark-theme-gray; } |
36 | 34 | ||
37 | .settings__close { | 35 | .settings__close { |
38 | background: $dark-theme-gray-darker; | 36 | color: #FFF; |
39 | border-left: none; | ||
40 | color: $dark-theme-gray-lightest; | ||
41 | |||
42 | &:hover { background: darken($dark-theme-gray-darker, 5%); } | ||
43 | } | 37 | } |
44 | 38 | ||
45 | &__settings-group h3 { color: $dark-theme-gray-lightest; } | 39 | &__settings-group h3 { color: $dark-theme-gray-lightest; } |
@@ -76,6 +70,11 @@ | |||
76 | 70 | ||
77 | .settings-navigation__link { | 71 | .settings-navigation__link { |
78 | color: $dark-theme-gray-lightest; | 72 | color: $dark-theme-gray-lightest; |
73 | border-bottom: 1px solid darken($dark-theme-gray-darker, 3%); | ||
74 | |||
75 | &:last-child { | ||
76 | border: 0, | ||
77 | } | ||
79 | 78 | ||
80 | .badge { | 79 | .badge { |
81 | background: $dark-theme-gray-lighter; | 80 | background: $dark-theme-gray-lighter; |
@@ -129,15 +128,14 @@ | |||
129 | } | 128 | } |
130 | 129 | ||
131 | .settings { | 130 | .settings { |
132 | background: #FFF; | ||
133 | border-radius: $theme-border-radius; | 131 | border-radius: $theme-border-radius; |
134 | box-shadow: 0 20px 50px rgba(black, .5); | 132 | // box-shadow: 0 20px 50px rgba(black, .5); |
135 | display: flex; | 133 | display: flex; |
136 | height: 100%; | 134 | height: 100%; |
137 | max-height: 720px; | 135 | max-height: 720px; |
138 | max-width: 900px; | 136 | max-width: 900px; |
139 | min-height: 400px; | 137 | min-height: 400px; |
140 | overflow: hidden; | 138 | // overflow: hidden; |
141 | position: relative; | 139 | position: relative; |
142 | width: 100%; | 140 | width: 100%; |
143 | z-index: 9999; | 141 | z-index: 9999; |
@@ -147,25 +145,32 @@ | |||
147 | flex: 1; | 145 | flex: 1; |
148 | flex-direction: column; | 146 | flex-direction: column; |
149 | height: auto; | 147 | height: auto; |
148 | border-radius: $theme-border-radius; | ||
149 | overflow: hidden; | ||
150 | box-shadow: 0 20px 50px rgba($dark-theme-black, .5); | ||
151 | background: #FFF; | ||
150 | } | 152 | } |
151 | 153 | ||
152 | .settings__header { | 154 | .settings__header { |
153 | align-items: center; | 155 | align-items: center; |
154 | background: $theme-gray-lighter; | 156 | background: $theme-brand-primary; |
155 | display: flex; | 157 | display: flex; |
156 | height: 50px; | 158 | height: 50px; |
157 | padding: 0 40px; | 159 | padding: 0 40px; |
158 | width: calc(100% - 60px); | 160 | width: calc(100% - 60px); |
161 | color: #FFF; | ||
159 | 162 | ||
160 | h1 { | 163 | h1 { |
161 | @extend %headline; | 164 | @extend %headline; |
162 | margin: 0; | 165 | margin: 0; |
163 | } | 166 | } |
164 | 167 | ||
165 | .settings__header-item { @extend %headline; } | 168 | .settings__header-item { |
169 | @extend %headline; | ||
170 | } | ||
166 | 171 | ||
167 | .separator { | 172 | .separator { |
168 | border-right: 1px solid darken($theme-gray-lighter, 10%); | 173 | border-right: 1px solid darken($theme-brand-primary, 8%); |
169 | height: 100%; | 174 | height: 100%; |
170 | margin: 0 15px; | 175 | margin: 0 15px; |
171 | transform: skew(15deg) rotate(2deg); | 176 | transform: skew(15deg) rotate(2deg); |
@@ -218,17 +223,18 @@ | |||
218 | } | 223 | } |
219 | 224 | ||
220 | .settings__close { | 225 | .settings__close { |
221 | background: $theme-gray-lighter; | 226 | background: $theme-brand-primary; |
222 | border-left: 1px solid darken($theme-gray-lighter, 5%); | 227 | border-left: 1px solid darken($theme-brand-primary, 8%); |
223 | color: $theme-gray-light; | 228 | color: #FFF; |
224 | font-size: 20px; | 229 | font-size: 20px; |
225 | height: 50px; | 230 | height: 50px; |
226 | padding: 0 20px; | 231 | padding: 0 20px; |
227 | position: absolute; | 232 | position: absolute; |
228 | right: 0; | 233 | right: 0; |
229 | transition: background $theme-transition-time; | 234 | transition: background $theme-transition-time; |
235 | border-top-right-radius: $theme-border-radius; | ||
230 | 236 | ||
231 | &:hover { background: darken($theme-gray-lighter, 5%); } | 237 | &:hover { background: darken($theme-brand-primary, 5%); } |
232 | } | 238 | } |
233 | 239 | ||
234 | .search-input { margin-bottom: 30px; } | 240 | .search-input { margin-bottom: 30px; } |
@@ -414,7 +420,13 @@ | |||
414 | background: $theme-gray-lightest; | 420 | background: $theme-gray-lightest; |
415 | flex-direction: column; | 421 | flex-direction: column; |
416 | height: auto; | 422 | height: auto; |
417 | width: 200px; | 423 | width: 240px; |
424 | height: calc(100% - 100px); | ||
425 | align-self: center; | ||
426 | border-top-left-radius: $theme-border-radius;; | ||
427 | border-bottom-left-radius: $theme-border-radius;; | ||
428 | overflow: hidden; | ||
429 | box-shadow: 0 20px 50px rgba($dark-theme-black, .5); | ||
418 | 430 | ||
419 | .settings-navigation__link { | 431 | .settings-navigation__link { |
420 | align-items: center; | 432 | align-items: center; |
@@ -426,6 +438,7 @@ | |||
426 | padding: 0 20px; | 438 | padding: 0 20px; |
427 | text-decoration: none; | 439 | text-decoration: none; |
428 | transition: background $theme-transition-time, color $theme-transition-time; | 440 | transition: background $theme-transition-time, color $theme-transition-time; |
441 | border-bottom: 1px solid darken($theme-gray-lightest, 3%); | ||
429 | 442 | ||
430 | &:hover { | 443 | &:hover { |
431 | background: darken($theme-gray-lightest, 5%); | 444 | background: darken($theme-gray-lightest, 5%); |