diff --git a/packages/strapi-admin/files/public/app/containers/App/styles.scss b/packages/strapi-admin/files/public/app/containers/App/styles.scss
index 5639ac98fd..58e3844478 100644
--- a/packages/strapi-admin/files/public/app/containers/App/styles.scss
+++ b/packages/strapi-admin/files/public/app/containers/App/styles.scss
@@ -9,17 +9,3 @@
.container {
display: block;
}
-
-.baseline {
- display: none;
- z-index: 100001;
- opacity: .2;
- position: absolute;
- top:0; left:0;
- width: 100%;
- height: 500%;
- min-height: 100%;
- //background: url('../../assets/images/baseline-18.png');
- background: url('../../assets/images/baseline-20.png');
- pointer-events: none;
-}
diff --git a/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js b/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js
deleted file mode 100644
index cb0e798e47..0000000000
--- a/packages/strapi-admin/files/public/app/containers/App/tests/selectors.test.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import { fromJS } from 'immutable';
-import expect from 'expect';
-
-import { selectLocationState } from 'containers/App/selectors';
-
-describe('selectLocationState', () => {
- it('should select the route as a plain JS object', () => {
- const route = fromJS({
- locationBeforeTransitions: null,
- });
- const mockedState = fromJS({
- route,
- });
- expect(selectLocationState()(mockedState)).toEqual(route.toJS());
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js
deleted file mode 100644
index a621dc18b4..0000000000
--- a/packages/strapi-admin/files/public/app/containers/ComingSoonPage/tests/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import ComingSoonPage from '../index';
-
-import expect from 'expect';
-// import { shallow } from 'enzyme';
-// import React from 'react';
-
-describe('
', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(false);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js
deleted file mode 100644
index 730d472306..0000000000
--- a/packages/strapi-admin/files/public/app/containers/Content/tests/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import Content from '../index';
-
-import expect from 'expect';
-// import { shallow } from 'enzyme';
-// import React from 'react';
-
-describe('
', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(true);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js
deleted file mode 100644
index 6d710cb20e..0000000000
--- a/packages/strapi-admin/files/public/app/containers/HomePage/tests/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import HomePage from '../index';
-
-import expect from 'expect';
-// import { shallow } from 'enzyme';
-// import React from 'react';
-
-describe('
', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(true);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js
deleted file mode 100644
index e4978dbbc1..0000000000
--- a/packages/strapi-admin/files/public/app/containers/LeftMenu/tests/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import LeftMenu from '../index';
-
-import expect from 'expect';
-// import { shallow } from 'enzyme';
-// import React from 'react';
-
-describe('
', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(true);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js b/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js
index 5883b99625..f5807a71fa 100644
--- a/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js
+++ b/packages/strapi-admin/files/public/app/containers/LocaleToggle/index.js
@@ -8,7 +8,7 @@ import React from 'react';
import { connect } from 'react-redux';
import { selectLocale } from '../LanguageProvider/selectors';
import { changeLocale } from '../LanguageProvider/actions';
-import { appLocales } from '../../i18n';
+import { languages } from '../../i18n';
import { createSelector } from 'reselect';
import styles from './styles.scss';
import Toggle from 'components/Toggle';
@@ -16,11 +16,11 @@ import Toggle from 'components/Toggle';
export class LocaleToggle extends React.Component { // eslint-disable-line
render() {
const messages = {};
- appLocales.forEach(locale => { messages[locale] = locale.toUpperCase(); });
+ languages.forEach(locale => { messages[locale] = locale.toUpperCase(); });
return (
);
}
diff --git a/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js
deleted file mode 100644
index 2bbbd2ce2a..0000000000
--- a/packages/strapi-admin/files/public/app/containers/LocaleToggle/tests/index.test.js
+++ /dev/null
@@ -1,60 +0,0 @@
-import LocaleToggle, { mapDispatchToProps } from '../index';
-import { changeLocale } from '../../LanguageProvider/actions';
-import LanguageProvider from '../../LanguageProvider';
-
-import expect from 'expect';
-import { shallow, mount } from 'enzyme';
-import configureStore from '../../../store';
-import React from 'react';
-import { Provider } from 'react-redux';
-import { browserHistory } from 'react-router';
-import { translationMessages } from '../../../i18n';
-
-describe('
', () => {
- let store;
-
- before(() => {
- store = configureStore({}, browserHistory);
- });
-
- it('should render the default language messages', () => {
- const renderedComponent = shallow(
-
)).toEqual(true);
- });
-
- it('should present the default `en` english language option', () => {
- const renderedComponent = mount(
-
)).toEqual(true);
- });
-
- describe('mapDispatchToProps', () => {
- describe('onLocaleToggle', () => {
- it('should be injected', () => {
- const dispatch = expect.createSpy();
- const result = mapDispatchToProps(dispatch);
- expect(result.onLocaleToggle).toExist();
- });
-
- it('should dispatch changeLocale when called', () => {
- const dispatch = expect.createSpy();
- const result = mapDispatchToProps(dispatch);
- const locale = 'de';
- const evt = { target: { value: locale } };
- result.onLocaleToggle(evt);
- expect(dispatch).toHaveBeenCalledWith(changeLocale(locale));
- });
- });
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js b/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js
index 34c70b707e..55cc89b24a 100644
--- a/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js
+++ b/packages/strapi-admin/files/public/app/containers/NotFoundPage/index.js
@@ -10,15 +10,13 @@
*/
import React from 'react';
-import { FormattedMessage } from 'react-intl';
+import { defineMessages, FormattedMessage } from 'react-intl';
import styles from './styles.scss';
import { Link } from 'react-router';
import messages from './messages.json';
-import { define } from '../../i18n';
-define(messages);
+defineMessages(messages);
export default class NotFound extends React.Component { // eslint-disable-line react/prefer-stateless-function
-
render() {
return (
diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js
deleted file mode 100644
index f8017baeb0..0000000000
--- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/actions.test.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import expect from 'expect';
-import {
- showNotification,
-} from '../actions';
-import {
- SHOW_NOTIFICATION,
-} from '../constants';
-
-describe('NotificationProvider actions', () => {
- describe('Default Action', () => {
- it('has a type of SHOW_NOTIFICATION', () => {
- const message = 'Well done!';
- const status = 'success';
-
- const expected = {
- type: SHOW_NOTIFICATION,
- message,
- status,
- id: 1,
- };
- expect(showNotification(expected.message, expected.status)).toEqual(expected);
- });
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js
deleted file mode 100644
index 02b3094178..0000000000
--- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import NotificationProvider from '../index';
-
-import expect from 'expect';
-// import { shallow } from 'enzyme';
-// import React from 'react';
-
-describe('
', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(true);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js
deleted file mode 100644
index 2bae1949c7..0000000000
--- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/reducer.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import expect from 'expect';
-import notificationProviderReducer from '../reducer';
-import { fromJS } from 'immutable';
-
-describe('notificationProviderReducer', () => {
- it('returns the initial state', () => {
- expect(notificationProviderReducer(undefined, {})).toEqual(fromJS({
- notifications: [],
- }));
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js b/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js
deleted file mode 100644
index 0327607ee7..0000000000
--- a/packages/strapi-admin/files/public/app/containers/NotificationProvider/tests/selectors.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import { selectNotificationProviderDomain } from '../selectors';
-// import { fromJS } from 'immutable';
-import expect from 'expect';
-
-// const selector = selectNotificationProviderDomain();
-
-describe('selectNotificationProviderDomain', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(true);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js b/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js
deleted file mode 100644
index 76ca281b4d..0000000000
--- a/packages/strapi-admin/files/public/app/containers/PluginPage/tests/index.test.js
+++ /dev/null
@@ -1,11 +0,0 @@
-// import PluginPage from '../index';
-
-import expect from 'expect';
-// import { shallow } from 'enzyme';
-// import React from 'react';
-
-describe('
', () => {
- it('Expect to have unit tests specified', () => {
- expect(true).toEqual(true);
- });
-});
diff --git a/packages/strapi-admin/files/public/app/i18n.js b/packages/strapi-admin/files/public/app/i18n.js
index 563664f434..a97c69fc24 100644
--- a/packages/strapi-admin/files/public/app/i18n.js
+++ b/packages/strapi-admin/files/public/app/i18n.js
@@ -5,34 +5,54 @@
*
*/
-import { addLocaleData, defineMessages } from 'react-intl';
+import { addLocaleData } from 'react-intl';
+import { reduce } from 'lodash';
-import enTranslationMessages from './translations/en.json';
-import frTranslationMessages from './translations/fr.json';
+// Import config
+import { languages } from '../../config/admin.json';
-import enLocaleData from 'react-intl/locale-data/en';
-import frLocaleData from 'react-intl/locale-data/fr';
-
-
-addLocaleData(enLocaleData);
-addLocaleData(frLocaleData);
-
-const appLocales = [
- 'en',
- 'fr',
-];
-
-const translationMessages = {
- en: enTranslationMessages,
- fr: frTranslationMessages,
+/**
+ * Try to require translation file.
+ *
+ * @param language {String}
+ */
+const requireTranslations = language => {
+ try {
+ return require(`./translations/${language}.json`); // eslint-disable-line global-require
+ } catch (error) {
+ console.error(`Unable to load "${language}" translation. Please make sure "${language}.json" file exists in "admin/public/app/translations" folder.`);
+ return false;
+ }
};
-const define = messages => {
- defineMessages(messages);
+/**
+ * Try to require the language in `react-intl` locale data
+ * and add locale data if it has been found.
+ *
+ * @param language {String}
+ */
+const addLanguageLocaleData = language => {
+ try {
+ const localeData = require(`react-intl/locale-data/${language}`); // eslint-disable-line global-require
+ addLocaleData(localeData);
+ return true;
+ } catch (error) {
+ console.error(`It looks like the language "${language}" is not supported by "react-intl" module.`);
+ return false;
+ }
};
+/**
+ * Dynamically generate `translationsMessages object`.
+ */
+const translationMessages = reduce(languages, (result, language) => {
+ const obj = result;
+ obj[language] = requireTranslations(language);
+ addLanguageLocaleData(language);
+ return obj;
+}, {});
+
export {
- appLocales,
- define,
+ languages,
translationMessages,
};
diff --git a/packages/strapi-admin/files/public/app/manifest.json b/packages/strapi-admin/files/public/app/manifest.json
deleted file mode 100644
index e07264bdd3..0000000000
--- a/packages/strapi-admin/files/public/app/manifest.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "React Boilerplate",
- "icons": [
- {
- "src": "favicon.png",
- "sizes": "48x48",
- "type": "image/png",
- "density": 1.0
- },
- {
- "src": "favicon.png",
- "sizes": "96x96",
- "type": "image/png",
- "density": 2.0
- },
- {
- "src": "favicon.png",
- "sizes": "144x144",
- "type": "image/png",
- "density": 3.0
- },
- {
- "src": "favicon.png",
- "sizes": "192x192",
- "type": "image/png",
- "density": 4.0
- }
- ],
- "start_url": "index.html",
- "display": "standalone",
- "orientation": "portrait",
- "background_color": "#FFFFFF"
-}
\ No newline at end of file
diff --git a/packages/strapi-admin/files/public/app/styles/base/fonts.scss b/packages/strapi-admin/files/public/app/styles/base/fonts.scss
index 9a28a8f4e1..da9a7dba27 100644
--- a/packages/strapi-admin/files/public/app/styles/base/fonts.scss
+++ b/packages/strapi-admin/files/public/app/styles/base/fonts.scss
@@ -1,217 +1,146 @@
-/* Webfont: Lato-Black */@font-face {
- font-family: 'LatoWebBlack';
- src: url('styles/fonts/lato/Lato-Black.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Black.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Black.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Black.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Black.ttf') format('truetype');
+/* Lato (hairline, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 100;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-hairline/lato-hairline.woff2") format("woff2"), url("styles/fonts/lato/lato-hairline/lato-hairline.woff") format("woff");
}
-
-/* Webfont: Lato-BlackItalic */@font-face {
- font-family: 'LatoWebBlack';
- src: url('styles/fonts/lato/Lato-BlackItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-BlackItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-BlackItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-BlackItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-BlackItalic.ttf') format('truetype');
+/* Lato (hairline, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 100;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Bold */@font-face {
- font-family: 'LatoWebBold';
- src: url('styles/fonts/lato/Lato-Bold.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Bold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Bold.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Bold.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Bold.ttf') format('truetype');
+/* Lato (thin, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 200;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-thin/lato-thin.woff2") format("woff2"), url("styles/fonts/lato/lato-thin/lato-thin.woff") format("woff");
}
-
-/* Webfont: Lato-BoldItalic */@font-face {
- font-family: 'LatoWebBold';
- src: url('styles/fonts/lato/Lato-BoldItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-BoldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-BoldItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-BoldItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-BoldItalic.ttf') format('truetype');
+/* Lato (thin, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 200;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Hairline */@font-face {
- font-family: 'LatoWebHairline';
- src: url('styles/fonts/lato/Lato-Hairline.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Hairline.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Hairline.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Hairline.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Hairline.ttf') format('truetype');
+/* Lato (light, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 300;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-light/lato-light.woff2") format("woff2"), url("styles/fonts/lato/lato-light/lato-light.woff") format("woff");
}
-
-/* Webfont: Lato-HairlineItalic */@font-face {
- font-family: 'LatoWebHairline';
- src: url('styles/fonts/lato/Lato-HairlineItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-HairlineItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-HairlineItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-HairlineItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-HairlineItalic.ttf') format('truetype');
+/* Lato (light, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 300;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-light-italic/lato-light-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-light-italic/lato-light-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Heavy */@font-face {
- font-family: 'LatoWebHeavy';
- src: url('styles/fonts/lato/Lato-Heavy.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Heavy.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Heavy.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Heavy.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Heavy.ttf') format('truetype');
+/* Lato (normal, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 400;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-normal/lato-normal.woff2") format("woff2"), url("styles/fonts/lato/lato-normal/lato-normal.woff") format("woff");
}
-
-/* Webfont: Lato-HeavyItalic */@font-face {
- font-family: 'LatoWebHeavy';
- src: url('styles/fonts/lato/Lato-HeavyItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-HeavyItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-HeavyItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-HeavyItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-HeavyItalic.ttf') format('truetype');
+/* Lato (normal, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 400;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Italic */@font-face {
- font-family: 'LatoWeb';
- src: url('styles/fonts/lato/Lato-Italic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Italic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Italic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Italic.ttf') format('truetype');
- font-style: italic;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
-
-/* Webfont: Lato-Light */@font-face {
- font-family: 'LatoWebLight';
- src: url('styles/fonts/lato/Lato-Light.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Light.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Light.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Light.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Light.ttf') format('truetype');
+/* Lato (medium, regular) */
+@font-face {
+ font-family: "Lato Medium";
+ font-weight: 400;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-medium/lato-medium.woff2") format("woff2"), url("styles/fonts/lato/lato-medium/lato-medium.woff") format("woff");
}
-
-/* Webfont: Lato-LightItalic */@font-face {
- font-family: 'LatoWebLight';
- src: url('styles/fonts/lato/Lato-LightItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-LightItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-LightItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-LightItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-LightItalic.ttf') format('truetype');
+/* Lato (medium, italic) */
+@font-face {
+ font-family: "Lato Medium";
+ font-weight: 400;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Medium */@font-face {
- font-family: 'LatoWebMedium';
- src: url('styles/fonts/lato/Lato-Medium.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Medium.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Medium.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Medium.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Medium.ttf') format('truetype');
+/* Lato (semibold, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 500;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-semibold/lato-semibold.woff2") format("woff2"), url("styles/fonts/lato/lato-semibold/lato-semibold.woff") format("woff");
}
-
-/* Webfont: Lato-MediumItalic */@font-face {
- font-family: 'LatoWebMedium';
- src: url('styles/fonts/lato/Lato-MediumItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-MediumItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-MediumItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-MediumItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-MediumItalic.ttf') format('truetype');
+/* Lato (semibold, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 500;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Regular */@font-face {
- font-family: 'LatoWeb';
- src: url('styles/fonts/lato/Lato-Regular.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Regular.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Regular.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Regular.ttf') format('truetype');
+/* Lato (bold, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 600;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-bold/lato-bold.woff2") format("woff2"), url("styles/fonts/lato/lato-bold/lato-bold.woff") format("woff");
}
-
-/* Webfont: Lato-Semibold */@font-face {
- font-family: 'LatoWebSemibold';
- src: url('styles/fonts/lato/Lato-Semibold.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Semibold.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Semibold.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Semibold.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Semibold.ttf') format('truetype');
- font-style: normal;
- font-weight: normal;
- text-rendering: optimizeLegibility;
-}
-
-/* Webfont: Lato-SemiboldItalic */@font-face {
- font-family: 'LatoWebSemibold';
- src: url('styles/fonts/lato/Lato-SemiboldItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-SemiboldItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-SemiboldItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-SemiboldItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-SemiboldItalic.ttf') format('truetype');
+/* Lato (bold, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 600;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff") format("woff");
}
-
-/* Webfont: Lato-Thin */@font-face {
- font-family: 'LatoWebThin';
- src: url('styles/fonts/lato/Lato-Thin.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-Thin.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-Thin.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Thin.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-Thin.ttf') format('truetype');
+/* Lato (heavy, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 800;
font-style: normal;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-heavy/lato-heavy.woff2") format("woff2"), url("styles/fonts/lato/lato-heavy/lato-heavy.woff") format("woff");
}
-
-/* Webfont: Lato-ThinItalic */@font-face {
- font-family: 'LatoWebThin';
- src: url('styles/fonts/lato/Lato-ThinItalic.eot'); /* IE9 Compat Modes */
- src: url('styles/fonts/lato/Lato-ThinItalic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('styles/fonts/lato/Lato-ThinItalic.woff2') format('woff2'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-ThinItalic.woff') format('woff'), /* Modern Browsers */
- url('styles/fonts/lato/Lato-ThinItalic.ttf') format('truetype');
+/* Lato (heavy, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 800;
font-style: italic;
- font-weight: normal;
text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff") format("woff");
+}
+/* Lato (black, regular) */
+@font-face {
+ font-family: Lato;
+ font-weight: 900;
+ font-style: normal;
+ text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-black/lato-black.woff2") format("woff2"), url("styles/fonts/lato/lato-black/lato-black.woff") format("woff");
+}
+/* Lato (black, italic) */
+@font-face {
+ font-family: Lato;
+ font-weight: 900;
+ font-style: italic;
+ text-rendering: optimizeLegibility;
+ src: url("styles/fonts/lato/lato-black-italic/lato-black-italic.woff2") format("woff2"), url("styles/fonts/lato/lato-black-italic/lato-black-italic.woff") format("woff");
}
@font-face {
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot
deleted file mode 100644
index 444bc3aa2e..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf
deleted file mode 100644
index 3f7819f609..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot
deleted file mode 100644
index 7749a28aa8..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf
deleted file mode 100644
index 2dc1173c54..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot
deleted file mode 100644
index 3361183a41..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf
deleted file mode 100644
index 29f691d5ed..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot
deleted file mode 100644
index 3d4154936b..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf
deleted file mode 100644
index f402040b3e..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot
deleted file mode 100644
index ca02c79540..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf
deleted file mode 100644
index a7365b8a0d..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot
deleted file mode 100644
index 9b5fd86aeb..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf
deleted file mode 100644
index 919d2d697f..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot
deleted file mode 100644
index 8d3784f4c7..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf
deleted file mode 100644
index ce528ef394..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot
deleted file mode 100644
index f77a576623..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf
deleted file mode 100644
index ae73655f2b..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot
deleted file mode 100644
index 3f826421a1..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf
deleted file mode 100644
index b4bfc9b24a..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot
deleted file mode 100644
index f449ed562d..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf
deleted file mode 100644
index 834d1c0566..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot
deleted file mode 100644
index a4e2e31d09..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf
deleted file mode 100644
index c6ef9e05fe..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot
deleted file mode 100644
index c4114dd395..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf
deleted file mode 100644
index 4684a7e143..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot
deleted file mode 100644
index bc05daf923..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf
deleted file mode 100644
index 673b6e4728..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot
deleted file mode 100644
index 11e3f2a5f0..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf
deleted file mode 100644
index 74decd9ebb..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot
deleted file mode 100644
index d46c5f99fe..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf
deleted file mode 100644
index faf591e283..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot
deleted file mode 100644
index 373a1ca548..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf
deleted file mode 100644
index 4ea1e8f1aa..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot
deleted file mode 100644
index 28022c95e9..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf
deleted file mode 100644
index 4fca8bd4fa..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot
deleted file mode 100644
index 673f52298d..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.eot and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf b/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf
deleted file mode 100644
index 223c133e94..0000000000
Binary files a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.ttf and /dev/null differ
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BlackItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black-italic/lato-black-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Black.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-black/lato-black.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-BoldItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold-italic/lato-bold-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Bold.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-bold/lato-bold.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HairlineItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline-italic/lato-hairline-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Hairline.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-hairline/lato-hairline.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-HeavyItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy-italic/lato-heavy-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Heavy.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-heavy/lato-heavy.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-LightItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light-italic/lato-light-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Light.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-light/lato-light.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-MediumItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium-italic/lato-medium-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Medium.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-medium/lato-medium.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Italic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal-italic/lato-normal-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Regular.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-normal/lato-normal.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-SemiboldItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold-italic/lato-semibold-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Semibold.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-semibold/lato-semibold.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-ThinItalic.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin-italic/lato-thin-italic.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff
diff --git a/packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff2 b/packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff2
old mode 100644
new mode 100755
similarity index 100%
rename from packages/strapi-admin/files/public/app/styles/fonts/lato/Lato-Thin.woff2
rename to packages/strapi-admin/files/public/app/styles/fonts/lato/lato-thin/lato-thin.woff2
diff --git a/packages/strapi-admin/files/public/app/styles/variables/variables.scss b/packages/strapi-admin/files/public/app/styles/variables/variables.scss
index 111ada7ba2..2d2a63ff02 100644
--- a/packages/strapi-admin/files/public/app/styles/variables/variables.scss
+++ b/packages/strapi-admin/files/public/app/styles/variables/variables.scss
@@ -7,18 +7,17 @@ $white: #ffffff;
$strapi-gray-light: #EFF3F6;
$strapi-gray: #535F76;
-$strapi-blue-darker: #19202E;
+$strapi-blue-darker: #18202E;
$strapi-blue-dark: #151C2E;
$strapi-blue: #1C5DE7;
-$strapi-blue-light: #7E8AAA;
// - layout
// -- left menu
$left-menu-width: 24rem;
$left-menu-bg: $strapi-blue-darker;
-$left-menu-link-hover: $strapi-blue-dark;
-$left-menu-link-color: $strapi-blue-light;
-$left-menu-title-color: $strapi-gray;
+$left-menu-link-hover: #1C2431;
+$left-menu-link-color: #919BAE;
+$left-menu-title-color: #5B626F;
// -- header
$header-height: 6rem;
diff --git a/packages/strapi-admin/files/public/app/tests/store.test.js b/packages/strapi-admin/files/public/app/tests/store.test.js
deleted file mode 100644
index b21e6d57e1..0000000000
--- a/packages/strapi-admin/files/public/app/tests/store.test.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Test store addons
- */
-
-import expect from 'expect';
-import configureStore from '../store'; // eslint-disable-line
-import { browserHistory } from 'react-router';
-
-describe('configureStore', () => {
- let store;
-
- before(() => {
- store = configureStore({}, browserHistory);
- });
-
- describe('asyncReducers', () => {
- it('should contain an object for async reducers', () => {
- expect(typeof store.asyncReducers).toEqual('object');
- });
- });
-
- describe('runSaga', () => {
- it('should contain a hook for `sagaMiddleware.run`', () => {
- expect(typeof store.runSaga).toEqual('function');
- });
- });
-});
diff --git a/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js b/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js
deleted file mode 100644
index bbb83c43dc..0000000000
--- a/packages/strapi-admin/files/public/app/utils/tests/asyncInjectors.test.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/**
- * Test async injectors
- */
-
-import expect from 'expect';
-import configureStore from 'store.js';
-import { memoryHistory } from 'react-router';
-import { put } from 'redux-saga/effects';
-import { fromJS } from 'immutable';
-
-import {
- injectAsyncReducer,
- injectAsyncSagas,
- getAsyncInjectors,
-} from 'utils/asyncInjectors';
-
-// Fixtures
-
-const initialState = fromJS({ reduced: 'soon' });
-
-const reducer = (state = initialState, action) => {
- switch (action.type) {
- case 'TEST':
- return state.set('reduced', action.payload);
- default:
- return state;
- }
-};
-
-function* testSaga() {
- yield put({ type: 'TEST', payload: 'yup' });
-}
-
-const sagas = [
- testSaga,
-];
-
-describe('asyncInjectors', () => {
- let store;
-
- describe('getAsyncInjectors', () => {
- before(() => {
- store = configureStore({}, memoryHistory);
- });
-
- it('given a store, should return all async injectors', () => {
- const { injectReducer, injectSagas } = getAsyncInjectors(store);
-
- injectReducer('test', reducer);
- injectSagas(sagas);
-
- const actual = store.getState().get('test');
- const expected = initialState.merge({ reduced: 'yup' });
-
- expect(actual.toJS()).toEqual(expected.toJS());
- });
-
- it('should throw if passed invalid store shape', () => {
- let result = false;
-
- Reflect.deleteProperty(store, 'dispatch');
-
- try {
- getAsyncInjectors(store);
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- expect(result).toEqual(true);
- });
- });
-
- describe('helpers', () => {
- before(() => {
- store = configureStore({}, memoryHistory);
- });
-
- describe('injectAsyncReducer', () => {
- it('given a store, it should provide a function to inject a reducer', () => {
- const injectReducer = injectAsyncReducer(store);
-
- injectReducer('test', reducer);
-
- const actual = store.getState().get('test');
- const expected = initialState;
-
- expect(actual.toJS()).toEqual(expected.toJS());
- });
-
- it('should throw if passed invalid name', () => {
- let result = false;
-
- const injectReducer = injectAsyncReducer(store);
-
- try {
- injectReducer('', reducer);
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- try {
- injectReducer(999, reducer);
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- expect(result).toEqual(true);
- });
-
- it('should throw if passed invalid reducer', () => {
- let result = false;
-
- const injectReducer = injectAsyncReducer(store);
-
- try {
- injectReducer('bad', 'nope');
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- try {
- injectReducer('coolio', 12345);
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- expect(result).toEqual(true);
- });
- });
-
- describe('injectAsyncSagas', () => {
- it('given a store, it should provide a function to inject a saga', () => {
- const injectSagas = injectAsyncSagas(store);
-
- injectSagas(sagas);
-
- const actual = store.getState().get('test');
- const expected = initialState.merge({ reduced: 'yup' });
-
- expect(actual.toJS()).toEqual(expected.toJS());
- });
-
- it('should throw if passed invalid saga', () => {
- let result = false;
-
- const injectSagas = injectAsyncSagas(store);
-
- try {
- injectSagas({ testSaga });
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- try {
- injectSagas(testSaga);
- } catch (err) {
- result = err.name === 'Invariant Violation';
- }
-
- expect(result).toEqual(true);
- });
- });
- });
-});
diff --git a/packages/strapi-admin/package.json b/packages/strapi-admin/package.json
index 5e1308ab4c..3e6e28fdc0 100644
--- a/packages/strapi-admin/package.json
+++ b/packages/strapi-admin/package.json
@@ -14,7 +14,7 @@
"dependencies": {
"fs-extra": "^0.30.0",
"lodash": "^4.17.4",
- "strapi-utils": "^3.0.0-alpha.4.8"
+ "strapi-utils": "file:../strapi-utils"
},
"scripts": {
"test": "cd files/public && npm run test",
@@ -44,4 +44,4 @@
"npm": ">= 5.3.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-bookshelf/.gitignore b/packages/strapi-bookshelf/.gitignore
index 664d4fb312..218a5700e9 100755
--- a/packages/strapi-bookshelf/.gitignore
+++ b/packages/strapi-bookshelf/.gitignore
@@ -92,3 +92,4 @@ results
build
node_modules
.node_history
+package-lock.json
diff --git a/packages/strapi-ejs/.gitignore b/packages/strapi-ejs/.gitignore
index 664d4fb312..218a5700e9 100644
--- a/packages/strapi-ejs/.gitignore
+++ b/packages/strapi-ejs/.gitignore
@@ -92,3 +92,4 @@ results
build
node_modules
.node_history
+package-lock.json
diff --git a/packages/strapi-generate-admin/.gitignore b/packages/strapi-generate-admin/.gitignore
index dc91ebd729..f25de1b578 100755
--- a/packages/strapi-generate-admin/.gitignore
+++ b/packages/strapi-generate-admin/.gitignore
@@ -91,6 +91,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-admin/package.json b/packages/strapi-generate-admin/package.json
index ebff1a0435..2e485f602d 100644
--- a/packages/strapi-generate-admin/package.json
+++ b/packages/strapi-generate-admin/package.json
@@ -15,7 +15,7 @@
"dependencies": {
"fs-extra": "^0.30.0",
"lodash": "^4.17.4",
- "strapi-admin": "^3.0.0-alpha.4.8"
+ "strapi-admin": "file:../strapi-admin"
},
"author": {
"email": "hi@strapi.io",
@@ -41,4 +41,4 @@
"npm": ">= 5.3.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-generate-api/.gitignore b/packages/strapi-generate-api/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-api/.gitignore
+++ b/packages/strapi-generate-api/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-controller/.gitignore b/packages/strapi-generate-controller/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-controller/.gitignore
+++ b/packages/strapi-generate-controller/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-migrations/.gitignore b/packages/strapi-generate-migrations/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-migrations/.gitignore
+++ b/packages/strapi-generate-migrations/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-model/.gitignore b/packages/strapi-generate-model/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-model/.gitignore
+++ b/packages/strapi-generate-model/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-new/.gitignore b/packages/strapi-generate-new/.gitignore
index dc91ebd729..f25de1b578 100755
--- a/packages/strapi-generate-new/.gitignore
+++ b/packages/strapi-generate-new/.gitignore
@@ -91,6 +91,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-new/package.json b/packages/strapi-generate-new/package.json
index c893433e83..754f9eaa2f 100644
--- a/packages/strapi-generate-new/package.json
+++ b/packages/strapi-generate-new/package.json
@@ -16,7 +16,7 @@
"enpeem": "^2.2.0",
"fs-extra": "^4.0.0",
"lodash": "^4.17.4",
- "strapi-utils": "^3.0.0-alpha.4.8"
+ "strapi-utils": "file:../strapi-utils"
},
"scripts": {
"prepublish": "npm prune"
@@ -45,4 +45,4 @@
"npm": ">= 5.3.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-generate-plugin/.gitignore b/packages/strapi-generate-plugin/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-plugin/.gitignore
+++ b/packages/strapi-generate-plugin/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js
deleted file mode 100644
index 81a6f57e9a..0000000000
--- a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * NotFoundPage
- *
- * This is the page we show when the user visits a url that doesn't have a route
- *
- * NOTE: while this component should technically be a stateless functional
- * component (SFC), hot reloading does not currently support SFCs. If hot
- * reloading is not a neccessity for you then you can refactor it and remove
- * the linting exception.
- */
-
-import React from 'react';
-import { FormattedMessage } from 'react-intl';
-
-import messages from './messages';
-
-export default class NotFound extends React.Component {
- render() {
- return (
-
- );
- }
-}
diff --git a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js b/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js
deleted file mode 100644
index 95ee68f9d2..0000000000
--- a/packages/strapi-generate-plugin/files/admin/src/containers/NotFoundPage/messages.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * NotFoundPage Messages
- *
- * This contains all the text for the NotFoundPage component.
- */
-import { defineMessages } from 'react-intl';
-
-export default defineMessages({
- pageNotFound: {
- id: 'app.components.NotFoundPage.pageNotFound',
- defaultMessage: 'Page not found.',
- },
-});
diff --git a/packages/strapi-generate-policy/.gitignore b/packages/strapi-generate-policy/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-policy/.gitignore
+++ b/packages/strapi-generate-policy/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate-service/.gitignore b/packages/strapi-generate-service/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate-service/.gitignore
+++ b/packages/strapi-generate-service/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate/.gitignore b/packages/strapi-generate/.gitignore
index 1f78ea7b73..2511d26edc 100755
--- a/packages/strapi-generate/.gitignore
+++ b/packages/strapi-generate/.gitignore
@@ -92,6 +92,7 @@ results
build
node_modules
.node_history
+package-lock.json
############################
diff --git a/packages/strapi-generate/package.json b/packages/strapi-generate/package.json
index 40408ff34d..4fcd923b57 100644
--- a/packages/strapi-generate/package.json
+++ b/packages/strapi-generate/package.json
@@ -17,7 +17,7 @@
"fs-extra": "^4.0.0",
"lodash": "^4.17.4",
"reportback": "^2.0.1",
- "strapi-utils": "^3.0.0-alpha.4.8"
+ "strapi-utils": "file:../strapi-utils"
},
"author": {
"name": "Strapi team",
@@ -43,4 +43,4 @@
"npm": ">= 5.3.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-helper-plugin/.gitignore b/packages/strapi-helper-plugin/.gitignore
index 5d06c054ed..76c6eb04d9 100644
--- a/packages/strapi-helper-plugin/.gitignore
+++ b/packages/strapi-helper-plugin/.gitignore
@@ -3,6 +3,7 @@ coverage
build
node_modules
stats.json
+package-lock.json
# Cruft
.DS_Store
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/index.js b/packages/strapi-helper-plugin/lib/internals/generators/component/index.js
index 132ca1d841..f1060e4bc3 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/component/index.js
+++ b/packages/strapi-helper-plugin/lib/internals/generators/component/index.js
@@ -29,11 +29,6 @@ module.exports = {
name: 'wantCSS',
default: true,
message: 'Does it have styling?',
- }, {
- type: 'confirm',
- name: 'wantMessages',
- default: true,
- message: 'Do you want i18n messages (i.e. will this component use text)?',
}],
actions: (data) => {
// Generate index.js and index.test.js
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs b/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs
index 1dc727bb55..e8121ed4f3 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs
+++ b/packages/strapi-helper-plugin/lib/internals/generators/component/styles.scss.hbs
@@ -1,3 +1,3 @@
-.{{ camelCase name }} { /* stylelint-disable */
+.{{ camelCase name }} {
}
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs
index 63b835462b..3c02562c6d 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs
+++ b/packages/strapi-helper-plugin/lib/internals/generators/container/constants.js.hbs
@@ -4,4 +4,4 @@
*
*/
-export const DEFAULT_ACTION = 'src/{{ properCase name }}/DEFAULT_ACTION';
+export const DEFAULT_ACTION = '{{ properCase pluginId }}/{{ properCase name }}/DEFAULT_ACTION';
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/index.js b/packages/strapi-helper-plugin/lib/internals/generators/container/index.js
index 34e5e8122f..376210040c 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/container/index.js
+++ b/packages/strapi-helper-plugin/lib/internals/generators/container/index.js
@@ -2,6 +2,15 @@
* Container Generator
*/
+const path = require('path');
+
+// Plugin identifier based on the package.json `name` value
+const pluginPkg = require(path.resolve(process.cwd(), 'package.json'));
+const pluginId = pluginPkg.name.replace(
+ /^strapi-plugin-/i,
+ ''
+);
+
const componentExists = require('../utils/componentExists');
module.exports = {
@@ -38,13 +47,13 @@ module.exports = {
name: 'wantSagas',
default: true,
message: 'Do you want sagas for asynchronous flows? (e.g. fetching data)',
- }, {
- type: 'confirm',
- name: 'wantMessages',
- default: true,
- message: 'Do you want i18n messages (i.e. will this component use text)?',
}],
actions: (data) => {
+ const dataFormatted = data;
+
+ // Expose `pluginId` value
+ dataFormatted.pluginId = pluginId;
+
// Generate index.js and index.test.js
const actions = [{
type: 'add',
@@ -59,7 +68,7 @@ module.exports = {
}];
// If they want a SCSS file, add styles.scss
- if (data.wantCSS) {
+ if (dataFormatted.wantCSS) {
actions.push({
type: 'add',
path: '../../../../../admin/src/containers/{{properCase name}}/styles.scss',
@@ -69,7 +78,7 @@ module.exports = {
}
// If component wants messages
- if (data.wantMessages) {
+ if (dataFormatted.wantMessages) {
actions.push({
type: 'add',
path: '../../../../../admin/src/containers/{{properCase name}}/messages.js',
@@ -80,7 +89,7 @@ module.exports = {
// If they want actions and a reducer, generate actions.js, constants.js,
// reducer.js and the corresponding tests for actions and the reducer
- if (data.wantActionsAndReducer) {
+ if (dataFormatted.wantActionsAndReducer) {
// Actions
actions.push({
type: 'add',
@@ -133,7 +142,7 @@ module.exports = {
}
// Sagas
- if (data.wantSagas) {
+ if (dataFormatted.wantSagas) {
actions.push({
type: 'add',
path: '../../../../../admin/src/containers/{{properCase name}}/sagas.js',
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs b/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs
index 1dc727bb55..e8121ed4f3 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs
+++ b/packages/strapi-helper-plugin/lib/internals/generators/container/styles.scss.hbs
@@ -1,3 +1,3 @@
-.{{ camelCase name }} { /* stylelint-disable */
+.{{ camelCase name }} {
}
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/index.js b/packages/strapi-helper-plugin/lib/internals/generators/index.js
index a029c4adfd..9603667be7 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/index.js
+++ b/packages/strapi-helper-plugin/lib/internals/generators/index.js
@@ -10,13 +10,11 @@ const path = require('path');
const componentGenerator = require('./component/index.js');
const containerGenerator = require('./container/index.js');
const routeGenerator = require('./route/index.js');
-const languageGenerator = require('./language/index.js');
module.exports = (plop) => {
plop.setGenerator('component', componentGenerator);
plop.setGenerator('container', containerGenerator);
plop.setGenerator('route', routeGenerator);
- plop.setGenerator('language', languageGenerator);
plop.addHelper('directory', (comp) => {
try {
fs.accessSync(`${path.resolve(process.cwd(), 'admin', 'src', 'containers', comp)}`, fs.F_OK);
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs
deleted file mode 100644
index 80727c73cd..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/add-locale-data.hbs
+++ /dev/null
@@ -1 +0,0 @@
-$1addLocaleData({{language}}LocaleData);
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs
deleted file mode 100644
index 9e99e845f8..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/app-locale.hbs
+++ /dev/null
@@ -1,2 +0,0 @@
-$1
- '{{language}}',
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs
deleted file mode 100644
index 74c78b4632..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/format-translation-messages.hbs
+++ /dev/null
@@ -1 +0,0 @@
-$1 {{language}}: formatTranslationMessages({{language}}TranslationMessages),
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/index.js b/packages/strapi-helper-plugin/lib/internals/generators/language/index.js
deleted file mode 100644
index dd9561dad8..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- * Language Generator
- */
-const exec = require('child_process').exec;
-
-module.exports = {
- description: 'Add a langauge',
- prompts: [{
- type: 'input',
- name: 'language',
- message: 'What is the language you want to add i18n support for (e.g. "fr", "de")?',
- default: 'fr',
- validate: (value) => {
- if ((/.+/).test(value) && value.length === 2) {
- return true;
- }
-
- return '2 character language specifier is required';
- },
- }],
-
- actions: () => {
- const actions = [];
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/i18n.js',
- pattern: /('react-intl\/locale-data\/[a-z]+';\n)(?!.*'react-intl\/locale-data\/[a-z]+';)/g,
- templateFile: './language/intl-locale-data.hbs',
- });
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/i18n.js',
- pattern: /([\n\s'[a-z]+',)(?!.*[\n\s'[a-z]+',)/g,
- templateFile: './language/src-locale.hbs',
- });
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/i18n.js',
- pattern: /(from\s'.\/translations\/[a-z]+.json';\n)(?!.*from\s'.\/translations\/[a-z]+.json';)/g,
- templateFile: './language/translation-messages.hbs',
- });
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/i18n.js',
- pattern: /(addLocaleData\([a-z]+LocaleData\);\n)(?!.*addLocaleData\([a-z]+LocaleData\);)/g,
- templateFile: './language/add-locale-data.hbs',
- });
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/i18n.js',
- pattern: /([a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),\n)(?!.*[a-z]+:\sformatTranslationMessages\([a-z]+TranslationMessages\),)/g,
- templateFile: './language/format-translation-messages.hbs',
- });
- actions.push({
- type: 'add',
- path: '../../../../../admin/src/translations/{{language}}.json',
- templateFile: './language/translations-json.hbs',
- abortOnFail: true,
- });
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/app.js',
- pattern: /(System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),\n)(?!.*System\.import\('intl\/locale-data\/jsonp\/[a-z]+\.js'\),)/g,
- templateFile: './language/polyfill-intl-locale.hbs',
- });
- actions.push(
- () => {
- const cmd = 'npm run extract-intl';
- exec(cmd, (err, result, stderr) => {
- if (err || stderr) {
- throw err || stderr;
- }
- process.stdout.write(result);
- });
- }
- );
-
- return actions;
- },
-};
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs
deleted file mode 100644
index b790a1333f..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/intl-locale-data.hbs
+++ /dev/null
@@ -1 +0,0 @@
-$1import {{language}}LocaleData from 'react-intl/locale-data/{{language}}';
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs
deleted file mode 100644
index ea1586e7ed..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/polyfill-intl-locale.hbs
+++ /dev/null
@@ -1 +0,0 @@
-$1 System.import('intl/locale-data/jsonp/{{language}}.js'),
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs
deleted file mode 100644
index 0682d22ed0..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/translation-messages.hbs
+++ /dev/null
@@ -1 +0,0 @@
-$1import {{language}}TranslationMessages from './translations/{{language}}.json';
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs b/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs
deleted file mode 100644
index fe51488c70..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/language/translations-json.hbs
+++ /dev/null
@@ -1 +0,0 @@
-[]
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/index.js b/packages/strapi-helper-plugin/lib/internals/generators/route/index.js
index 41335a2a2c..adc26328bc 100644
--- a/packages/strapi-helper-plugin/lib/internals/generators/route/index.js
+++ b/packages/strapi-helper-plugin/lib/internals/generators/route/index.js
@@ -2,38 +2,31 @@
* Route Generator
*/
const fs = require('fs');
+const path = require('path');
+
+const routesFilePath = path.resolve(process.cwd(), 'admin', 'src', 'routes.json');
const componentExists = require('../utils/componentExists');
-function reducerExists(comp) {
- try {
- fs.accessSync(`src/containers/${comp}/reducer.js`, fs.F_OK);
- return true;
- } catch (e) {
- return false;
- }
-}
+// Generate the update file content
+const generateUpdatedFileContent = (data, existingContent) => {
+ const fileContent = existingContent || {};
-function sagasExists(comp) {
- try {
- fs.accessSync(`src/containers/${comp}/sagas.js`, fs.F_OK);
- return true;
- } catch (e) {
- return false;
- }
-}
+ // Add new route
+ const updatedFileContent = fileContent;
+ updatedFileContent[data.path] = {
+ container: data.container,
+ };
-function trimTemplateFile(template) {
- // Loads the template file and trims the whitespace and then returns the content as a string.
- return fs.readFileSync(`internals/generators/route/${template}`, 'utf8').replace(/\s*$/, '');
-}
+ return updatedFileContent;
+};
module.exports = {
description: 'Add a route',
prompts: [{
type: 'input',
- name: 'component',
- message: 'Which component should the route show?',
+ name: 'container',
+ message: 'Which container should the route show?',
validate: (value) => {
if ((/.+/).test(value)) {
return componentExists(value) ? true : `"${value}" doesn't exist.`;
@@ -55,27 +48,58 @@ module.exports = {
},
}],
- // Add the route to the routes.js file above the error route
- // TODO smarter route adding
actions: (data) => {
- const actions = [];
- if (reducerExists(data.component)) {
- data.useSagas = sagasExists(data.component); // eslint-disable-line no-param-reassign
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/routes.js',
- pattern: /(\s{\n\s{0,}path: '\*',)/g,
- template: trimTemplateFile('routeWithReducer.hbs'),
- });
- } else {
- actions.push({
- type: 'modify',
- path: '../../../../../admin/src/routes.js',
- pattern: /(\s{\n\s{0,}path: '\*',)/g,
- template: trimTemplateFile('route.hbs'),
- });
- }
+ const replaceFile = () => {
+ // Check if the file is existing or not
+ let routesFilesStats;
+ try {
+ routesFilesStats = fs.statSync(routesFilePath);
+ } catch (error) {
+ routesFilesStats = false;
+ }
+ const routesFilesExists = routesFilesStats && routesFilesStats.isFile();
- return actions;
+ // Read the file content
+ let existingContent = {};
+ if (routesFilesExists) {
+ try {
+ existingContent = fs.readFileSync(routesFilePath, 'utf8');
+ } catch (error) {
+ existingContent = false;
+ console.log('Unable to read existing `admin/src/routes.json` file content.');
+ }
+
+ try {
+ existingContent = JSON.parse(existingContent);
+ } catch (error) {
+ existingContent = false;
+ console.log('Unable to parse existing `admin/src/routes.json` file content.');
+ }
+ }
+
+ // Generate updated content
+ const updatedContent = generateUpdatedFileContent(data, existingContent || {});
+
+ // Delete the file if existing
+ if (routesFilesExists) {
+ try {
+ fs.unlinkSync(routesFilePath);
+ } catch (error) {
+ console.log('Unable to remove `admin/src/routes.json` file.');
+ throw error;
+ }
+ }
+
+ // Write the new file
+ try {
+ fs.writeFileSync(routesFilePath, JSON.stringify(updatedContent, null, 2), 'utf8');
+ console.log('File `admin/src/routes.json` successfully written.');
+ } catch (error) {
+ console.log('Unable to write `admin/src/routes.json` file.');
+ throw error;
+ }
+ };
+
+ return [replaceFile];
},
};
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs b/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs
deleted file mode 100644
index 162d992f40..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/route/route.hbs
+++ /dev/null
@@ -1,9 +0,0 @@
- {
- path: '{{ path }}',
- name: '{{ camelCase component }}',
- getComponent(location, cb) {
- System.import('{{{directory (properCase component)}}}')
- .then(loadModule(cb))
- .catch(errorLoading);
- },
- },$1
diff --git a/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs b/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs
deleted file mode 100644
index fedf109ac8..0000000000
--- a/packages/strapi-helper-plugin/lib/internals/generators/route/routeWithReducer.hbs
+++ /dev/null
@@ -1,25 +0,0 @@
- {
- path: '{{ path }}',
- name: '{{ camelCase component }}',
- getComponent(nextState, cb) {
- const importModules = Promise.all([
- System.import('containers/{{ properCase component }}/reducer'),
- {{#if useSagas}}
- System.import('containers/{{ properCase component }}/sagas'),
- {{/if}}
- System.import('containers/{{ properCase component }}'),
- ]);
-
- const renderRoute = loadModule(cb);
-
- importModules.then(([reducer,{{#if useSagas}} sagas,{{/if}} component]) => {
- injectReducer('{{ camelCase component }}', reducer.default);
- {{#if useSagas}}
- injectSagas(sagas.default);
- {{/if}}
- renderRoute(component);
- });
-
- importModules.catch(errorLoading);
- },
- },$1
diff --git a/packages/strapi-helper-plugin/lib/src/i18n.js b/packages/strapi-helper-plugin/lib/src/i18n.js
index dc9ce73fc4..076aacefaa 100644
--- a/packages/strapi-helper-plugin/lib/src/i18n.js
+++ b/packages/strapi-helper-plugin/lib/src/i18n.js
@@ -5,18 +5,50 @@
*
*/
-import { defineMessages } from 'react-intl';
+import { reduce } from 'lodash';
-import enTranslationMessages from 'translations/en.json'; // eslint-disable-line
-import frTranslationMessages from 'translations/fr.json'; // eslint-disable-line
+// Plugin identifier based on the package.json `name` value
+const pluginPkg = require('../../../../package.json');
+const pluginId = pluginPkg.name.replace(
+ /^strapi-plugin-/i,
+ ''
+);
-const translationMessages = {
- en: enTranslationMessages,
- fr: frTranslationMessages,
+/**
+ * Add plugin identifier as translation message prefix,
+ * in order to avoid confusion and errors when many
+ * plugins are installed.
+ *
+ * @param messages
+ */
+const formatMessages = messages => reduce(messages, (result, value, key) => {
+ const obj = result;
+ obj[`${pluginId}.${key}`] = value;
+ return obj;
+}, {});
+
+/**
+ * Try to require translation file.
+ *
+ * @param language {String}
+ */
+const requireTranslations = language => {
+ try {
+ return require(`translations/${language}.json`); // eslint-disable-line global-require
+ } catch (error) {
+ console.error(`Unable to load "${language}" translation for the plugin ${pluginId}. Please make sure "${language}.json" file exists in "pluginPath/admin/src/translations" folder.`);
+ return false;
+ }
};
-const define = messages => {
- defineMessages(messages);
-};
+/**
+ * Dynamically generate `translationsMessages object`.
+ */
+const translationMessages = reduce(window.Strapi.languages, (result, language) => {
+ const obj = result;
+ const messages = requireTranslations(language);
+ obj[language] = formatMessages(messages);
+ return obj;
+}, {});
-export { translationMessages, define };
+export { translationMessages };
diff --git a/packages/strapi-helper-plugin/lib/src/routes.js b/packages/strapi-helper-plugin/lib/src/routes.js
index 2c51c97341..78a55a5afb 100644
--- a/packages/strapi-helper-plugin/lib/src/routes.js
+++ b/packages/strapi-helper-plugin/lib/src/routes.js
@@ -2,7 +2,7 @@
// They are all wrapped in the App component, which should contain the navbar etc
// See http://blog.mxstbr.com/2016/01/react-apps-with-pages for more information
// about the code splitting business
-import { map } from 'lodash';
+import { camelCase, map } from 'lodash';
import { getAsyncInjectors } from 'utils/asyncInjectors';
import routes from 'routes.json'; // eslint-disable-line
@@ -32,7 +32,7 @@ export default function createRoutes(store) {
const component = tryRequire(`${route.container}/index`); // eslint-disable-line global-require
process.nextTick(() => {
- if (reducer) injectReducer(route.name, reducer.default);
+ if (reducer) injectReducer(camelCase(route.container), reducer.default);
if (sagas) injectSagas(sagas.default);
cb(null, component.default);
});
diff --git a/packages/strapi-helper-plugin/package.json b/packages/strapi-helper-plugin/package.json
index eec76cef08..f3cf140d7d 100644
--- a/packages/strapi-helper-plugin/package.json
+++ b/packages/strapi-helper-plugin/package.json
@@ -120,4 +120,4 @@
"webpack-hot-middleware": "2.13.1",
"whatwg-fetch": "1.0.0"
}
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-knex/.gitignore b/packages/strapi-knex/.gitignore
index 664d4fb312..218a5700e9 100755
--- a/packages/strapi-knex/.gitignore
+++ b/packages/strapi-knex/.gitignore
@@ -92,3 +92,4 @@ results
build
node_modules
.node_history
+package-lock.json
diff --git a/packages/strapi-mongoose/.gitignore b/packages/strapi-mongoose/.gitignore
index 664d4fb312..218a5700e9 100644
--- a/packages/strapi-mongoose/.gitignore
+++ b/packages/strapi-mongoose/.gitignore
@@ -92,3 +92,4 @@ results
build
node_modules
.node_history
+package-lock.json
diff --git a/packages/strapi-mongoose/package.json b/packages/strapi-mongoose/package.json
index 1c76b05c08..31d1c1263d 100644
--- a/packages/strapi-mongoose/package.json
+++ b/packages/strapi-mongoose/package.json
@@ -20,7 +20,7 @@
"mongoose-double": "0.0.1",
"mongoose-float": "^1.0.2",
"pluralize": "^6.0.0",
- "strapi-utils": "^3.0.0-alpha.4.8"
+ "strapi-utils": "file:../strapi-utils"
},
"strapi": {
"isHook": true
@@ -49,4 +49,4 @@
"npm": ">= 5.3.0"
},
"license": "MIT"
-}
\ No newline at end of file
+}
diff --git a/packages/strapi-plugin-content-manager/.gitignore b/packages/strapi-plugin-content-manager/.gitignore
index 5d06c054ed..76c6eb04d9 100644
--- a/packages/strapi-plugin-content-manager/.gitignore
+++ b/packages/strapi-plugin-content-manager/.gitignore
@@ -3,6 +3,7 @@ coverage
build
node_modules
stats.json
+package-lock.json
# Cruft
.DS_Store
diff --git a/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js b/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js
index 9a6b634aba..b47fcdbc53 100644
--- a/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js
+++ b/packages/strapi-plugin-content-manager/admin/src/components/LimitSelect/index.js
@@ -8,12 +8,8 @@ import React from 'react';
import _ from 'lodash';
import { FormattedMessage } from 'react-intl';
-import { define } from 'i18n';
-
-import messages from './messages.json';
import styles from './styles.scss';
-define(messages);
class LimitSelect extends React.Component {
componentWillMount() {
@@ -47,7 +43,8 @@ class LimitSelect extends React.Component {