diff --git a/.gitignore b/.gitignore
index a6ae2b5f..54664d63 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
dist/
node_modules/
npm-debug.log
+.DS_Store
diff --git a/package.json b/package.json
index 68f1ff9f..e5bac462 100644
--- a/package.json
+++ b/package.json
@@ -27,6 +27,7 @@
"babel-preset-react": "^6.5.0",
"babel-register": "^6.5.2",
"babel-runtime": "^6.5.0",
+ "css-loader": "^0.23.1",
"eslint": "^1.10.3",
"eslint-loader": "^1.2.1",
"eslint-plugin-react": "^5.1.1",
@@ -39,6 +40,8 @@
"mocha": "^2.4.5",
"moment": "^2.11.2",
"normalizr": "^2.0.0",
+ "postcss-cssnext": "^2.7.0",
+ "postcss-loader": "^0.9.1",
"react": "^15.1.0",
"react-dom": "^15.1.0",
"react-immutable-proptypes": "^1.6.0",
diff --git a/src/components/UI/card/Card.css b/src/components/UI/card/Card.css
new file mode 100644
index 00000000..7d93192c
--- /dev/null
+++ b/src/components/UI/card/Card.css
@@ -0,0 +1,23 @@
+.card {
+ composes: base from "../theme.css";
+ composes: container from "../theme.css";
+ composes: rounded from "../theme.css";
+ composes: depth from "../theme.css";
+ overflow: hidden;
+}
+
+.card > *:not(iframe, video, img, header, footer) {
+ margin: 0 10px;
+}
+
+.card > *:not(iframe, video, img, header, footer):first-child {
+ margin-top: 10px;
+}
+
+.card > *:not(iframe, video, img, header, footer):last-child {
+ margin-bottom: 10px;
+}
+
+.card > iframe, .card > video, .card > img {
+ max-width: 100%;
+}
diff --git a/src/components/UI/card/Card.js b/src/components/UI/card/Card.js
new file mode 100644
index 00000000..3d18a584
--- /dev/null
+++ b/src/components/UI/card/Card.js
@@ -0,0 +1,7 @@
+import React from 'react';
+import styles from './Card.css'
+
+
+export default function Card({style, children}) {
+ return
{children}
+}
diff --git a/src/components/UI/index.js b/src/components/UI/index.js
new file mode 100644
index 00000000..7c769eeb
--- /dev/null
+++ b/src/components/UI/index.js
@@ -0,0 +1 @@
+export { default as Card } from './card/Card'
diff --git a/src/components/UI/theme.css b/src/components/UI/theme.css
new file mode 100644
index 00000000..e39e702b
--- /dev/null
+++ b/src/components/UI/theme.css
@@ -0,0 +1,26 @@
+:root {
+ --defaultColor: #333;
+ --backgroundColor: #fff;
+ --shadowColor: rgba(0, 0, 0, 0.25);
+ --successColor: #1c7;
+ --warningColor: #fa0;
+ --errorColor: #f52;
+}
+
+.base {
+ box-sizing: border-box;
+}
+
+.container {
+ margin: 10px;
+ color: var(--defaultColor);
+ background-color: var(--backgroundColor);
+}
+
+.rounded {
+ border-radius: 6px;
+}
+
+.depth {
+ box-shadow: 0px 1px 2px 0px var(--shadowColor);
+}
diff --git a/src/index.css b/src/index.css
new file mode 100644
index 00000000..737595ab
--- /dev/null
+++ b/src/index.css
@@ -0,0 +1,13 @@
+html {
+ box-sizing: border-box;
+}
+
+html, body, #appRoot, #appRoot > * {
+ margin: 0;
+ height: 100%;
+}
+
+h1, h2, h3, h4, h5, h6, p, blockquote, figure, dl, ol, ul {
+ margin: 0;
+ padding: 0;
+}
diff --git a/src/index.js b/src/index.js
index dd7e27f6..dafc5977 100644
--- a/src/index.js
+++ b/src/index.js
@@ -4,12 +4,14 @@ import { Provider } from 'react-redux';
import configureStore from './store/configureStore';
import Routes from './routes/routes';
import 'file?name=index.html!../example/index.html';
+import styles from './index.css';
const store = configureStore();
window.store = store;
const el = document.createElement('div');
+el.id = 'appRoot';
document.body.appendChild(el);
render((
diff --git a/webpack.config.js b/webpack.config.js
index 7071d1da..5b6a093c 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -10,6 +10,10 @@ module.exports = {
loader: 'file?name=/[hash].[ext]'
},
{ test: /\.json$/, loader: 'json-loader' },
+ {
+ test: /\.css$/,
+ loader: 'style!css?modules!postcss'
+ },
{
loader: 'babel',
test: /\.js?$/,
@@ -23,6 +27,10 @@ module.exports = {
]
},
+ postcss: [
+ require('postcss-cssnext')
+ ],
+
plugins: [
new webpack.ProvidePlugin({
'fetch': 'imports?this=>global!exports?global.fetch!whatwg-fetch'