Dynamic import didn’t do what we wanted, so just added `npm run i18n:msgs` to the start command. This is just temporary. Other changes as requested:
* exports in one place
* loc=> locale
Also fixed use of require for localeData to use dynamic import (this one works), so the babelrc changes are needed, otherwise import as a function is not recognized.
Generating the localization source to update the translation system (transifex) is really separate from building. When building we want to be using the current state of translations from transifex, and the english default strings are not needed.
Uses the babel-cli to run the babel-plugin-react-intl separately from webpack.
Using babel-plugin-react intl to extract messages from sources that use react-intl. It creates one file per component, that’s not ideal for translators.
Transifex supports several different json formats. We picked the chrome i18n json format because it includes the ‘description’ and displays that to translators as instructions in the transifex UI.
Add missing file types to `.gitattributes`.
Use `node` instead of deprecated `stable` version specifier for Travis.
Set dev tool to `cheap-module-source-map`.
Using postcss-modules-values with imported values failed on our current basic usage; it is apparently not mature enough to be used yet.
The syntax used by postcss-simple-vars is already familiar to most people familiar with modern CSS build systems.
* Covers parts of these issues: GUI layout panes (#69), sprite libraries (#12), import buttons (#64), menu bar (#67), and sprite info area (#53)
~ Refactored layout pane structure by removing `display: flex` from `.box`, by default. Declaring flex instead only where specifically needed. This helped fix layout quirks, and should help us avoid hard to find issues related to nested flex boxes
~ Added descriptive classnames to boxes/containers/wrappers. Moved more padding, margins + layout into these wrappers to help with component reusability.
~ Set up a spacer unit variable inside `gui.css`, to start keeping consistent padding, margins and rounded corners between panes. Used [CSS/PostCSS Modules](https://github.com/css-modules/postcss-modules-values) to avoid SCSS dependency.
~ Refactored inline styles from JSX, into CSS files. 2 reasons: a) prepping for reuse of CSS Module variables. b) Feels easier to debug complex flex layouts when all the styles are in one place vs JS/HTML/CSS syntax mixed together
~ Added menu bar into layout via new component, and sprite info header in sprite selector pane, with stubs for the labels + forms. Sprite items are correctly scrolling, while leaving the header fixed, in Chrome. Mostly working in FFx. Not working in Safari, IE yet.
~ Style pass on library modal
~ Experimenting with a few different transition styles: Logo in menu bar, sprite library items, Add buttons.
Move layout styles from component stylesheets to the GUI, or the component that is placing the component.
Add a new `Box` component to control layouts, basically giving a convenient way to lay out with flexbox.
Use `Box` as the output component for any component that may need to be passed layout options. The props passing convention allows giving layout props to the final `Box` component, making wrapping with another `Box` unnecessary in some cases.
The inline css method gives us nothing that CSS modules can't give us. This puts the project more in line with the way www works, and makes CSS actually readable.
Using class names gives us full control of the modal styles.
While doing so:
- Use ProjectLoader for loading projects
- Stop using loadEmptyProject and supply empty project data
- Move project loading to App, GUI now receives data (as a string - the vm should receive an object eventually)
- Add logging
Thanks to babel-loader and babel-eslint, we can use the same linting everywhere. This makes our imports easier since we don't need to think about the extension.
Also export things more succinctly in src/index.js