aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/components/auth/ChangeServer.js2
-rw-r--r--src/components/auth/Import.js2
-rw-r--r--src/components/auth/Invite.js2
-rw-r--r--src/components/auth/Locked.js2
-rw-r--r--src/components/auth/Login.js2
-rw-r--r--src/components/auth/Password.js2
-rw-r--r--src/components/auth/SetupAssistant.js2
-rw-r--r--src/components/auth/Signup.js2
-rw-r--r--src/components/services/content/ErrorHandlers/WebviewErrorHandler.js2
-rw-r--r--src/components/services/content/ServiceDisabled.js2
-rw-r--r--src/components/services/content/WebviewCrashHandler.js2
-rw-r--r--src/components/settings/account/AccountDashboard.js2
-rw-r--r--src/components/settings/recipes/RecipesDashboard.js2
-rw-r--r--src/components/settings/services/EditServiceForm.js2
-rw-r--r--src/components/settings/services/ServiceError.js2
-rw-r--r--src/components/settings/settings/EditSettingsForm.js2
-rw-r--r--src/components/settings/team/TeamDashboard.js2
-rw-r--r--src/components/settings/user/EditUserForm.js2
-rw-r--r--src/components/ui/Button.js92
-rw-r--r--src/components/ui/button/index.tsx12
-rw-r--r--src/components/util/ErrorBoundary/index.js2
-rw-r--r--src/features/basicAuth/Component.js2
-rw-r--r--src/features/publishDebugInfo/Component.js2
-rw-r--r--src/features/workspaces/components/CreateWorkspaceForm.js2
-rw-r--r--src/features/workspaces/components/EditWorkspaceForm.js2
25 files changed, 31 insertions, 119 deletions
diff --git a/src/components/auth/ChangeServer.js b/src/components/auth/ChangeServer.js
index a7aa33ab1..61e0aed68 100644
--- a/src/components/auth/ChangeServer.js
+++ b/src/components/auth/ChangeServer.js
@@ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl';
5import Form from '../../lib/Form'; 5import Form from '../../lib/Form';
6import Input from '../ui/Input'; 6import Input from '../ui/Input';
7import Select from '../ui/Select'; 7import Select from '../ui/Select';
8import Button from '../ui/Button'; 8import Button from '../ui/button';
9import Link from '../ui/Link'; 9import Link from '../ui/Link';
10import Infobox from '../ui/Infobox'; 10import Infobox from '../ui/Infobox';
11import { url, required } from '../../helpers/validation-helpers'; 11import { url, required } from '../../helpers/validation-helpers';
diff --git a/src/components/auth/Import.js b/src/components/auth/Import.js
index e7d5731f9..e43be07a8 100644
--- a/src/components/auth/Import.js
+++ b/src/components/auth/Import.js
@@ -7,7 +7,7 @@ import classnames from 'classnames';
7 7
8import Form from '../../lib/Form'; 8import Form from '../../lib/Form';
9import Toggle from '../ui/Toggle'; 9import Toggle from '../ui/Toggle';
10import Button from '../ui/Button'; 10import Button from '../ui/button';
11import { H1 } from '../ui/headline'; 11import { H1 } from '../ui/headline';
12 12
13const messages = defineMessages({ 13const messages = defineMessages({
diff --git a/src/components/auth/Invite.js b/src/components/auth/Invite.js
index 84adb320f..8e1ab514e 100644
--- a/src/components/auth/Invite.js
+++ b/src/components/auth/Invite.js
@@ -10,7 +10,7 @@ import Appear from '../ui/effects/Appear';
10import Form from '../../lib/Form'; 10import Form from '../../lib/Form';
11import { email } from '../../helpers/validation-helpers'; 11import { email } from '../../helpers/validation-helpers';
12import Input from '../ui/Input'; 12import Input from '../ui/Input';
13import Button from '../ui/Button'; 13import Button from '../ui/button';
14import { H1 } from '../ui/headline'; 14import { H1 } from '../ui/headline';
15 15
16const messages = defineMessages({ 16const messages = defineMessages({
diff --git a/src/components/auth/Locked.js b/src/components/auth/Locked.js
index 710810f2b..90ee46722 100644
--- a/src/components/auth/Locked.js
+++ b/src/components/auth/Locked.js
@@ -6,7 +6,7 @@ import { defineMessages, injectIntl } from 'react-intl';
6 6
7import Form from '../../lib/Form'; 7import Form from '../../lib/Form';
8import Input from '../ui/Input'; 8import Input from '../ui/Input';
9import Button from '../ui/Button'; 9import Button from '../ui/button';
10import { H1 } from '../ui/headline'; 10import { H1 } from '../ui/headline';
11import { isMac } from '../../environment'; 11import { isMac } from '../../environment';
12 12
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js
index f1c58a020..c6b26a21d 100644
--- a/src/components/auth/Login.js
+++ b/src/components/auth/Login.js
@@ -9,7 +9,7 @@ import { API_VERSION } from '../../environment-remote';
9import Form from '../../lib/Form'; 9import Form from '../../lib/Form';
10import { required, email } from '../../helpers/validation-helpers'; 10import { required, email } from '../../helpers/validation-helpers';
11import Input from '../ui/Input'; 11import Input from '../ui/Input';
12import Button from '../ui/Button'; 12import Button from '../ui/button';
13import Link from '../ui/Link'; 13import Link from '../ui/Link';
14 14
15import { globalError as globalErrorPropType } from '../../prop-types'; 15import { globalError as globalErrorPropType } from '../../prop-types';
diff --git a/src/components/auth/Password.js b/src/components/auth/Password.js
index 0e87cb028..0daa4c77a 100644
--- a/src/components/auth/Password.js
+++ b/src/components/auth/Password.js
@@ -6,7 +6,7 @@ import { defineMessages, injectIntl } from 'react-intl';
6import Form from '../../lib/Form'; 6import Form from '../../lib/Form';
7import { required, email } from '../../helpers/validation-helpers'; 7import { required, email } from '../../helpers/validation-helpers';
8import Input from '../ui/Input'; 8import Input from '../ui/Input';
9import Button from '../ui/Button'; 9import Button from '../ui/button';
10import Link from '../ui/Link'; 10import Link from '../ui/Link';
11import Infobox from '../ui/Infobox'; 11import Infobox from '../ui/Infobox';
12import globalMessages from '../../i18n/globalMessages'; 12import globalMessages from '../../i18n/globalMessages';
diff --git a/src/components/auth/SetupAssistant.js b/src/components/auth/SetupAssistant.js
index 90f6733a6..7658eb1ff 100644
--- a/src/components/auth/SetupAssistant.js
+++ b/src/components/auth/SetupAssistant.js
@@ -6,7 +6,7 @@ import injectSheet from 'react-jss';
6import classnames from 'classnames'; 6import classnames from 'classnames';
7 7
8import { Input } from '../ui/input/index'; 8import { Input } from '../ui/input/index';
9import { Button } from '../ui/button/index'; 9import Button from '../ui/button';
10import { Badge } from '../ui/badge'; 10import { Badge } from '../ui/badge';
11import Modal from '../ui/Modal'; 11import Modal from '../ui/Modal';
12import * as Infobox from '../ui/Infobox'; 12import * as Infobox from '../ui/Infobox';
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js
index 930b24491..05b6576fa 100644
--- a/src/components/auth/Signup.js
+++ b/src/components/auth/Signup.js
@@ -7,7 +7,7 @@ import { defineMessages, injectIntl } from 'react-intl';
7import Form from '../../lib/Form'; 7import Form from '../../lib/Form';
8import { required, email, minLength } from '../../helpers/validation-helpers'; 8import { required, email, minLength } from '../../helpers/validation-helpers';
9import Input from '../ui/Input'; 9import Input from '../ui/Input';
10import Button from '../ui/Button'; 10import Button from '../ui/button';
11import Link from '../ui/Link'; 11import Link from '../ui/Link';
12 12
13import { globalError as globalErrorPropType } from '../../prop-types'; 13import { globalError as globalErrorPropType } from '../../prop-types';
diff --git a/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js b/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js
index cdc12b01b..a658bec8b 100644
--- a/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js
+++ b/src/components/services/content/ErrorHandlers/WebviewErrorHandler.js
@@ -4,7 +4,7 @@ import { observer } from 'mobx-react';
4import { defineMessages, injectIntl } from 'react-intl'; 4import { defineMessages, injectIntl } from 'react-intl';
5import injectSheet from 'react-jss'; 5import injectSheet from 'react-jss';
6 6
7import Button from '../../../ui/Button'; 7import Button from '../../../ui/button';
8 8
9import styles from './styles'; 9import styles from './styles';
10import { H1 } from '../../../ui/headline'; 10import { H1 } from '../../../ui/headline';
diff --git a/src/components/services/content/ServiceDisabled.js b/src/components/services/content/ServiceDisabled.js
index da5357bf2..d874a354e 100644
--- a/src/components/services/content/ServiceDisabled.js
+++ b/src/components/services/content/ServiceDisabled.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import { defineMessages, injectIntl } from 'react-intl'; 4import { defineMessages, injectIntl } from 'react-intl';
5 5
6import Button from '../../ui/Button'; 6import Button from '../../ui/button';
7import { H1 } from '../../ui/headline'; 7import { H1 } from '../../ui/headline';
8 8
9const messages = defineMessages({ 9const messages = defineMessages({
diff --git a/src/components/services/content/WebviewCrashHandler.js b/src/components/services/content/WebviewCrashHandler.js
index 7e635e9ab..0e6e61be8 100644
--- a/src/components/services/content/WebviewCrashHandler.js
+++ b/src/components/services/content/WebviewCrashHandler.js
@@ -4,7 +4,7 @@ import { observer } from 'mobx-react';
4import { defineMessages, injectIntl } from 'react-intl'; 4import { defineMessages, injectIntl } from 'react-intl';
5import ms from 'ms'; 5import ms from 'ms';
6 6
7import Button from '../../ui/Button'; 7import Button from '../../ui/button';
8import { H1 } from '../../ui/headline'; 8import { H1 } from '../../ui/headline';
9 9
10const messages = defineMessages({ 10const messages = defineMessages({
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index 1d2d7a207..32e82940d 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -6,7 +6,7 @@ import ReactTooltip from 'react-tooltip';
6import { H1, H2 } from '../../ui/headline'; 6import { H1, H2 } from '../../ui/headline';
7 7
8import Loader from '../../ui/Loader'; 8import Loader from '../../ui/Loader';
9import Button from '../../ui/Button'; 9import Button from '../../ui/button';
10import Infobox from '../../ui/Infobox'; 10import Infobox from '../../ui/Infobox';
11import { LOCAL_SERVER, LIVE_FRANZ_API, LIVE_FERDI_API } from '../../../config'; 11import { LOCAL_SERVER, LIVE_FRANZ_API, LIVE_FERDI_API } from '../../../config';
12 12
diff --git a/src/components/settings/recipes/RecipesDashboard.js b/src/components/settings/recipes/RecipesDashboard.js
index cbfe676fe..7087634d2 100644
--- a/src/components/settings/recipes/RecipesDashboard.js
+++ b/src/components/settings/recipes/RecipesDashboard.js
@@ -7,7 +7,7 @@ import { Link } from 'react-router';
7import injectSheet from 'react-jss'; 7import injectSheet from 'react-jss';
8 8
9import { mdiOpenInNew } from '@mdi/js'; 9import { mdiOpenInNew } from '@mdi/js';
10import { Button } from '../../ui/button/index'; 10import Button from '../../ui/button';
11import { Input } from '../../ui/input/index'; 11import { Input } from '../../ui/input/index';
12import { H3, H2, H1 } from '../../ui/headline'; 12import { H3, H2, H1 } from '../../ui/headline';
13import SearchInput from '../../ui/SearchInput'; 13import SearchInput from '../../ui/SearchInput';
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 8e2696e6b..42e21dbc8 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -14,7 +14,7 @@ import { TabItem } from '../../ui/Tabs/TabItem';
14import Input from '../../ui/Input'; 14import Input from '../../ui/Input';
15import Toggle from '../../ui/Toggle'; 15import Toggle from '../../ui/Toggle';
16import Slider from '../../ui/Slider'; 16import Slider from '../../ui/Slider';
17import Button from '../../ui/Button'; 17import Button from '../../ui/button';
18import ImageUpload from '../../ui/ImageUpload'; 18import ImageUpload from '../../ui/ImageUpload';
19import Select from '../../ui/Select'; 19import Select from '../../ui/Select';
20 20
diff --git a/src/components/settings/services/ServiceError.js b/src/components/settings/services/ServiceError.js
index bcbbca3de..991817175 100644
--- a/src/components/settings/services/ServiceError.js
+++ b/src/components/settings/services/ServiceError.js
@@ -4,7 +4,7 @@ import { Link } from 'react-router';
4import { defineMessages, injectIntl } from 'react-intl'; 4import { defineMessages, injectIntl } from 'react-intl';
5 5
6import Infobox from '../../ui/Infobox'; 6import Infobox from '../../ui/Infobox';
7import Button from '../../ui/Button'; 7import Button from '../../ui/button';
8 8
9const messages = defineMessages({ 9const messages = defineMessages({
10 headline: { 10 headline: {
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index a59314eb7..3a4a48177 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -8,7 +8,7 @@ import { defineMessages, injectIntl } from 'react-intl';
8import { mdiGithub, mdiOpenInNew, mdiPowerPlug } from '@mdi/js'; 8import { mdiGithub, mdiOpenInNew, mdiPowerPlug } from '@mdi/js';
9 9
10import Form from '../../../lib/Form'; 10import Form from '../../../lib/Form';
11import Button from '../../ui/Button'; 11import Button from '../../ui/button';
12import Toggle from '../../ui/Toggle'; 12import Toggle from '../../ui/Toggle';
13import Select from '../../ui/Select'; 13import Select from '../../ui/Select';
14import Input from '../../ui/Input'; 14import Input from '../../ui/Input';
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
index 228796ad9..538a9a10c 100644
--- a/src/components/settings/team/TeamDashboard.js
+++ b/src/components/settings/team/TeamDashboard.js
@@ -7,7 +7,7 @@ import injectSheet from 'react-jss';
7import classnames from 'classnames'; 7import classnames from 'classnames';
8 8
9import Loader from '../../ui/Loader'; 9import Loader from '../../ui/Loader';
10import Button from '../../ui/Button'; 10import Button from '../../ui/button';
11import Infobox from '../../ui/Infobox'; 11import Infobox from '../../ui/Infobox';
12import { H1 } from '../../ui/headline'; 12import { H1 } from '../../ui/headline';
13import { LIVE_FRANZ_API } from '../../../config'; 13import { LIVE_FRANZ_API } from '../../../config';
diff --git a/src/components/settings/user/EditUserForm.js b/src/components/settings/user/EditUserForm.js
index 4d101730f..fb9ef5c9a 100644
--- a/src/components/settings/user/EditUserForm.js
+++ b/src/components/settings/user/EditUserForm.js
@@ -6,7 +6,7 @@ import { Link } from 'react-router';
6 6
7import { Input } from '../../ui/input/index'; 7import { Input } from '../../ui/input/index';
8import Form from '../../../lib/Form'; 8import Form from '../../../lib/Form';
9import Button from '../../ui/Button'; 9import Button from '../../ui/button';
10import Radio from '../../ui/Radio'; 10import Radio from '../../ui/Radio';
11import Infobox from '../../ui/Infobox'; 11import Infobox from '../../ui/Infobox';
12import { H2 } from '../../ui/headline'; 12import { H2 } from '../../ui/headline';
diff --git a/src/components/ui/Button.js b/src/components/ui/Button.js
deleted file mode 100644
index 882b39e69..000000000
--- a/src/components/ui/Button.js
+++ /dev/null
@@ -1,92 +0,0 @@
1import { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer, inject } from 'mobx-react';
4import Loader from 'react-loader';
5import classnames from 'classnames';
6
7// Can this file be merged into the './/button/index.tsx' file?
8class Button extends Component {
9 static propTypes = {
10 className: PropTypes.string,
11 label: PropTypes.string.isRequired,
12 disabled: PropTypes.bool,
13 onClick: PropTypes.func,
14 type: PropTypes.string,
15 buttonType: PropTypes.string,
16 loaded: PropTypes.bool,
17 htmlForm: PropTypes.string,
18 stores: PropTypes.shape({
19 settings: PropTypes.shape({
20 app: PropTypes.shape({
21 accentColor: PropTypes.string.isRequired,
22 }).isRequired,
23 }).isRequired,
24 }).isRequired,
25 };
26
27 static defaultProps = {
28 className: null,
29 disabled: false,
30 onClick: () => {},
31 type: 'button',
32 buttonType: '',
33 loaded: true,
34 htmlForm: '',
35 };
36
37 render() {
38 const {
39 label,
40 className,
41 disabled,
42 onClick,
43 type,
44 buttonType,
45 loaded,
46 htmlForm,
47 } = this.props;
48
49 const buttonProps = {
50 className: classnames({
51 'franz-form__button': true,
52 [`franz-form__button--${buttonType}`]: buttonType,
53 [`${className}`]: className,
54 }),
55 type,
56 };
57
58 if (disabled) {
59 buttonProps.disabled = true;
60 }
61
62 if (onClick) {
63 buttonProps.onClick = onClick;
64 }
65
66 if (htmlForm) {
67 buttonProps.form = htmlForm;
68 }
69
70 return (
71 // disabling rule as button has type defined in `buttonProps`
72 /* eslint-disable react/button-has-type */
73 <button {...buttonProps}>
74 <Loader
75 loaded={loaded}
76 lines={10}
77 scale={0.4}
78 color={
79 buttonType !== 'secondary'
80 ? '#FFF'
81 : this.props.stores.settings.app.accentColor
82 }
83 component="span"
84 />
85 {label}
86 </button>
87 /* eslint-enable react/button-has-type */
88 );
89 }
90}
91
92export default inject('stores')(observer(Button));
diff --git a/src/components/ui/button/index.tsx b/src/components/ui/button/index.tsx
index 11369dcbd..822ddf48f 100644
--- a/src/components/ui/button/index.tsx
+++ b/src/components/ui/button/index.tsx
@@ -35,7 +35,11 @@ interface IProps extends IFormField, WithStylesProps<typeof styles> {
35let buttonTransition: string = 'none'; 35let buttonTransition: string = 'none';
36let loaderContainerTransition: string = 'none'; 36let loaderContainerTransition: string = 'none';
37 37
38if (window && window.matchMedia('(prefers-reduced-motion: no-preference)')) { 38if (
39 typeof window !== 'undefined' &&
40 window &&
41 window.matchMedia('(prefers-reduced-motion: no-preference)')
42) {
39 buttonTransition = 'background .5s, opacity 0.3s'; 43 buttonTransition = 'background .5s, opacity 0.3s';
40 loaderContainerTransition = 'all 0.3s'; 44 loaderContainerTransition = 'all 0.3s';
41} 45}
@@ -259,6 +263,6 @@ class ButtonComponent extends Component<IProps> {
259 } 263 }
260} 264}
261 265
262export const Button = injectStyle(styles, { injectTheme: true })( 266const Button = injectStyle(styles, { injectTheme: true })(ButtonComponent);
263 ButtonComponent, 267
264); 268export default Button;
diff --git a/src/components/util/ErrorBoundary/index.js b/src/components/util/ErrorBoundary/index.js
index 8687cc09f..c1861e5f7 100644
--- a/src/components/util/ErrorBoundary/index.js
+++ b/src/components/util/ErrorBoundary/index.js
@@ -3,7 +3,7 @@ import PropTypes from 'prop-types';
3import injectSheet from 'react-jss'; 3import injectSheet from 'react-jss';
4import { defineMessages, injectIntl } from 'react-intl'; 4import { defineMessages, injectIntl } from 'react-intl';
5 5
6import Button from '../../ui/Button'; 6import Button from '../../ui/button';
7import { H1 } from '../../ui/headline'; 7import { H1 } from '../../ui/headline';
8 8
9import styles from './styles'; 9import styles from './styles';
diff --git a/src/features/basicAuth/Component.js b/src/features/basicAuth/Component.js
index ab5c518f8..acba5a90d 100644
--- a/src/features/basicAuth/Component.js
+++ b/src/features/basicAuth/Component.js
@@ -7,7 +7,7 @@ import classnames from 'classnames';
7 7
8import Modal from '../../components/ui/Modal'; 8import Modal from '../../components/ui/Modal';
9import Input from '../../components/ui/Input'; 9import Input from '../../components/ui/Input';
10import Button from '../../components/ui/Button'; 10import Button from '../../components/ui/button';
11 11
12import { state, resetState, sendCredentials, cancelLogin } from './store'; 12import { state, resetState, sendCredentials, cancelLogin } from './store';
13import Form from './Form'; 13import Form from './Form';
diff --git a/src/features/publishDebugInfo/Component.js b/src/features/publishDebugInfo/Component.js
index ff052a050..c40f8559f 100644
--- a/src/features/publishDebugInfo/Component.js
+++ b/src/features/publishDebugInfo/Component.js
@@ -7,7 +7,7 @@ import { state as ModalState } from './store';
7 7
8import { H1 } from '../../components/ui/headline'; 8import { H1 } from '../../components/ui/headline';
9import { sendAuthRequest } from '../../api/utils/auth'; 9import { sendAuthRequest } from '../../api/utils/auth';
10import Button from '../../components/ui/Button'; 10import Button from '../../components/ui/button';
11import { Input } from '../../components/ui/input/index'; 11import { Input } from '../../components/ui/input/index';
12import Modal from '../../components/ui/Modal'; 12import Modal from '../../components/ui/Modal';
13import { DEBUG_API } from '../../config'; 13import { DEBUG_API } from '../../config';
diff --git a/src/features/workspaces/components/CreateWorkspaceForm.js b/src/features/workspaces/components/CreateWorkspaceForm.js
index 898afb22e..aebe740d0 100644
--- a/src/features/workspaces/components/CreateWorkspaceForm.js
+++ b/src/features/workspaces/components/CreateWorkspaceForm.js
@@ -5,7 +5,7 @@ import { defineMessages, injectIntl } from 'react-intl';
5import injectSheet from 'react-jss'; 5import injectSheet from 'react-jss';
6 6
7import { Input } from '../../../components/ui/input/index'; 7import { Input } from '../../../components/ui/input/index';
8import { Button } from '../../../components/ui/button/index'; 8import Button from '../../../components/ui/button';
9import Form from '../../../lib/Form'; 9import Form from '../../../lib/Form';
10import { required } from '../../../helpers/validation-helpers'; 10import { required } from '../../../helpers/validation-helpers';
11import { workspaceStore } from '../index'; 11import { workspaceStore } from '../index';
diff --git a/src/features/workspaces/components/EditWorkspaceForm.js b/src/features/workspaces/components/EditWorkspaceForm.js
index 6829fddaa..9baa80e98 100644
--- a/src/features/workspaces/components/EditWorkspaceForm.js
+++ b/src/features/workspaces/components/EditWorkspaceForm.js
@@ -7,7 +7,7 @@ import injectSheet from 'react-jss';
7 7
8import { Infobox } from '../../../components/ui/infobox/index'; 8import { Infobox } from '../../../components/ui/infobox/index';
9import { Input } from '../../../components/ui/input/index'; 9import { Input } from '../../../components/ui/input/index';
10import { Button } from '../../../components/ui/button/index'; 10import Button from '../../../components/ui/button';
11import Workspace from '../models/Workspace'; 11import Workspace from '../models/Workspace';
12import Service from '../../../models/Service'; 12import Service from '../../../models/Service';
13import Form from '../../../lib/Form'; 13import Form from '../../../lib/Form';