diff --git a/api/hooks/webpack/index.js b/api/hooks/webpack/index.js
new file mode 100644
index 0000000..197167f
--- /dev/null
+++ b/api/hooks/webpack/index.js
@@ -0,0 +1,43 @@
+module.exports = function (sails) {
+ return {
+
+ initialize: function (callback) {
+
+ try {
+ var webpack = require('webpack');
+ var server = require('webpack-dev-server');
+ var config = require('../../../webpack.config');
+ } catch (error) {
+ console.error('WebPack hook has errored.');
+ console.error(error);
+ }
+
+ if (process.env.NODE_ENV === 'development') {
+
+ var port = 3000;
+
+ new server(webpack(config), {
+ contentBase: '.tmp/',
+ publicPath: config.publicPath,
+ path: '.tmp/public/bundles',
+ hot: true,
+ quiet: false,
+ noInfo: false,
+ lazy: true,
+ watchDelay: 300
+ }).listen(port, 'localhost', function (error, result) {
+ if (error) {
+ console.error('WebPack hook has errored.');
+ console.error(error);
+ } else {
+ console.log('Listening to http://localhost:' + port);
+ console.log(config);
+ return callback();
+ }
+ }.bind(this));
+
+ }
+ }
+
+ };
+};
diff --git a/assets/fonts/cooperhewitt/100.eot b/assets/fonts/cooperhewitt/100.eot
new file mode 100644
index 0000000..f9a9898
Binary files /dev/null and b/assets/fonts/cooperhewitt/100.eot differ
diff --git a/assets/fonts/cooperhewitt/100.svg b/assets/fonts/cooperhewitt/100.svg
new file mode 100644
index 0000000..6f95acd
--- /dev/null
+++ b/assets/fonts/cooperhewitt/100.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/100.woff b/assets/fonts/cooperhewitt/100.woff
new file mode 100644
index 0000000..6881032
Binary files /dev/null and b/assets/fonts/cooperhewitt/100.woff differ
diff --git a/assets/fonts/cooperhewitt/100.woff2 b/assets/fonts/cooperhewitt/100.woff2
new file mode 100755
index 0000000..7b1fece
Binary files /dev/null and b/assets/fonts/cooperhewitt/100.woff2 differ
diff --git a/assets/fonts/cooperhewitt/100i.eot b/assets/fonts/cooperhewitt/100i.eot
new file mode 100644
index 0000000..1baa105
Binary files /dev/null and b/assets/fonts/cooperhewitt/100i.eot differ
diff --git a/assets/fonts/cooperhewitt/100i.svg b/assets/fonts/cooperhewitt/100i.svg
new file mode 100644
index 0000000..9b3d9aa
--- /dev/null
+++ b/assets/fonts/cooperhewitt/100i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/100i.woff b/assets/fonts/cooperhewitt/100i.woff
new file mode 100644
index 0000000..e1099c0
Binary files /dev/null and b/assets/fonts/cooperhewitt/100i.woff differ
diff --git a/assets/fonts/cooperhewitt/100i.woff2 b/assets/fonts/cooperhewitt/100i.woff2
new file mode 100755
index 0000000..e639bb6
Binary files /dev/null and b/assets/fonts/cooperhewitt/100i.woff2 differ
diff --git a/assets/fonts/cooperhewitt/200.eot b/assets/fonts/cooperhewitt/200.eot
new file mode 100644
index 0000000..c0952b0
Binary files /dev/null and b/assets/fonts/cooperhewitt/200.eot differ
diff --git a/assets/fonts/cooperhewitt/200.svg b/assets/fonts/cooperhewitt/200.svg
new file mode 100644
index 0000000..131157d
--- /dev/null
+++ b/assets/fonts/cooperhewitt/200.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/200.woff b/assets/fonts/cooperhewitt/200.woff
new file mode 100644
index 0000000..3c73d8c
Binary files /dev/null and b/assets/fonts/cooperhewitt/200.woff differ
diff --git a/assets/fonts/cooperhewitt/200.woff2 b/assets/fonts/cooperhewitt/200.woff2
new file mode 100755
index 0000000..b8b4ad3
Binary files /dev/null and b/assets/fonts/cooperhewitt/200.woff2 differ
diff --git a/assets/fonts/cooperhewitt/200i.eot b/assets/fonts/cooperhewitt/200i.eot
new file mode 100644
index 0000000..6d0e7f2
Binary files /dev/null and b/assets/fonts/cooperhewitt/200i.eot differ
diff --git a/assets/fonts/cooperhewitt/200i.svg b/assets/fonts/cooperhewitt/200i.svg
new file mode 100644
index 0000000..d2e0172
--- /dev/null
+++ b/assets/fonts/cooperhewitt/200i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/200i.woff b/assets/fonts/cooperhewitt/200i.woff
new file mode 100644
index 0000000..69e802e
Binary files /dev/null and b/assets/fonts/cooperhewitt/200i.woff differ
diff --git a/assets/fonts/cooperhewitt/200i.woff2 b/assets/fonts/cooperhewitt/200i.woff2
new file mode 100755
index 0000000..7c98ac2
Binary files /dev/null and b/assets/fonts/cooperhewitt/200i.woff2 differ
diff --git a/assets/fonts/cooperhewitt/400.eot b/assets/fonts/cooperhewitt/400.eot
new file mode 100644
index 0000000..07cb19d
Binary files /dev/null and b/assets/fonts/cooperhewitt/400.eot differ
diff --git a/assets/fonts/cooperhewitt/400.svg b/assets/fonts/cooperhewitt/400.svg
new file mode 100644
index 0000000..12ee232
--- /dev/null
+++ b/assets/fonts/cooperhewitt/400.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/400.woff b/assets/fonts/cooperhewitt/400.woff
new file mode 100644
index 0000000..a4d6974
Binary files /dev/null and b/assets/fonts/cooperhewitt/400.woff differ
diff --git a/assets/fonts/cooperhewitt/400.woff2 b/assets/fonts/cooperhewitt/400.woff2
new file mode 100755
index 0000000..92580fa
Binary files /dev/null and b/assets/fonts/cooperhewitt/400.woff2 differ
diff --git a/assets/fonts/cooperhewitt/400i.eot b/assets/fonts/cooperhewitt/400i.eot
new file mode 100644
index 0000000..6aee4b3
Binary files /dev/null and b/assets/fonts/cooperhewitt/400i.eot differ
diff --git a/assets/fonts/cooperhewitt/400i.svg b/assets/fonts/cooperhewitt/400i.svg
new file mode 100644
index 0000000..4599ddd
--- /dev/null
+++ b/assets/fonts/cooperhewitt/400i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/400i.woff b/assets/fonts/cooperhewitt/400i.woff
new file mode 100644
index 0000000..ce8d73b
Binary files /dev/null and b/assets/fonts/cooperhewitt/400i.woff differ
diff --git a/assets/fonts/cooperhewitt/400i.woff2 b/assets/fonts/cooperhewitt/400i.woff2
new file mode 100755
index 0000000..329c36d
Binary files /dev/null and b/assets/fonts/cooperhewitt/400i.woff2 differ
diff --git a/assets/fonts/cooperhewitt/500.eot b/assets/fonts/cooperhewitt/500.eot
new file mode 100644
index 0000000..08e7baf
Binary files /dev/null and b/assets/fonts/cooperhewitt/500.eot differ
diff --git a/assets/fonts/cooperhewitt/500.svg b/assets/fonts/cooperhewitt/500.svg
new file mode 100644
index 0000000..1d4b0af
--- /dev/null
+++ b/assets/fonts/cooperhewitt/500.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/500.woff b/assets/fonts/cooperhewitt/500.woff
new file mode 100644
index 0000000..8f395de
Binary files /dev/null and b/assets/fonts/cooperhewitt/500.woff differ
diff --git a/assets/fonts/cooperhewitt/500.woff2 b/assets/fonts/cooperhewitt/500.woff2
new file mode 100755
index 0000000..5fbd6d3
Binary files /dev/null and b/assets/fonts/cooperhewitt/500.woff2 differ
diff --git a/assets/fonts/cooperhewitt/500i.eot b/assets/fonts/cooperhewitt/500i.eot
new file mode 100644
index 0000000..a512071
Binary files /dev/null and b/assets/fonts/cooperhewitt/500i.eot differ
diff --git a/assets/fonts/cooperhewitt/500i.svg b/assets/fonts/cooperhewitt/500i.svg
new file mode 100644
index 0000000..61f3d72
--- /dev/null
+++ b/assets/fonts/cooperhewitt/500i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/500i.woff b/assets/fonts/cooperhewitt/500i.woff
new file mode 100644
index 0000000..2d42dad
Binary files /dev/null and b/assets/fonts/cooperhewitt/500i.woff differ
diff --git a/assets/fonts/cooperhewitt/500i.woff2 b/assets/fonts/cooperhewitt/500i.woff2
new file mode 100755
index 0000000..f46cc53
Binary files /dev/null and b/assets/fonts/cooperhewitt/500i.woff2 differ
diff --git a/assets/fonts/cooperhewitt/600.eot b/assets/fonts/cooperhewitt/600.eot
new file mode 100644
index 0000000..7ff6e64
Binary files /dev/null and b/assets/fonts/cooperhewitt/600.eot differ
diff --git a/assets/fonts/cooperhewitt/600.svg b/assets/fonts/cooperhewitt/600.svg
new file mode 100644
index 0000000..31b4002
--- /dev/null
+++ b/assets/fonts/cooperhewitt/600.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/600.woff b/assets/fonts/cooperhewitt/600.woff
new file mode 100644
index 0000000..23c99a7
Binary files /dev/null and b/assets/fonts/cooperhewitt/600.woff differ
diff --git a/assets/fonts/cooperhewitt/600.woff2 b/assets/fonts/cooperhewitt/600.woff2
new file mode 100755
index 0000000..0bb89c9
Binary files /dev/null and b/assets/fonts/cooperhewitt/600.woff2 differ
diff --git a/assets/fonts/cooperhewitt/600i.eot b/assets/fonts/cooperhewitt/600i.eot
new file mode 100644
index 0000000..2511727
Binary files /dev/null and b/assets/fonts/cooperhewitt/600i.eot differ
diff --git a/assets/fonts/cooperhewitt/600i.svg b/assets/fonts/cooperhewitt/600i.svg
new file mode 100644
index 0000000..b3e46c7
--- /dev/null
+++ b/assets/fonts/cooperhewitt/600i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/600i.woff b/assets/fonts/cooperhewitt/600i.woff
new file mode 100644
index 0000000..1d877a0
Binary files /dev/null and b/assets/fonts/cooperhewitt/600i.woff differ
diff --git a/assets/fonts/cooperhewitt/600i.woff2 b/assets/fonts/cooperhewitt/600i.woff2
new file mode 100755
index 0000000..30b99b2
Binary files /dev/null and b/assets/fonts/cooperhewitt/600i.woff2 differ
diff --git a/assets/fonts/cooperhewitt/700.eot b/assets/fonts/cooperhewitt/700.eot
new file mode 100644
index 0000000..64413dd
Binary files /dev/null and b/assets/fonts/cooperhewitt/700.eot differ
diff --git a/assets/fonts/cooperhewitt/700.svg b/assets/fonts/cooperhewitt/700.svg
new file mode 100644
index 0000000..a15c8fb
--- /dev/null
+++ b/assets/fonts/cooperhewitt/700.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/700.woff b/assets/fonts/cooperhewitt/700.woff
new file mode 100644
index 0000000..b33ac1b
Binary files /dev/null and b/assets/fonts/cooperhewitt/700.woff differ
diff --git a/assets/fonts/cooperhewitt/700.woff2 b/assets/fonts/cooperhewitt/700.woff2
new file mode 100755
index 0000000..2f22bdc
Binary files /dev/null and b/assets/fonts/cooperhewitt/700.woff2 differ
diff --git a/assets/fonts/cooperhewitt/700i.eot b/assets/fonts/cooperhewitt/700i.eot
new file mode 100644
index 0000000..5d840dc
Binary files /dev/null and b/assets/fonts/cooperhewitt/700i.eot differ
diff --git a/assets/fonts/cooperhewitt/700i.svg b/assets/fonts/cooperhewitt/700i.svg
new file mode 100644
index 0000000..bd6764f
--- /dev/null
+++ b/assets/fonts/cooperhewitt/700i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/700i.woff b/assets/fonts/cooperhewitt/700i.woff
new file mode 100644
index 0000000..a71b6a9
Binary files /dev/null and b/assets/fonts/cooperhewitt/700i.woff differ
diff --git a/assets/fonts/cooperhewitt/700i.woff2 b/assets/fonts/cooperhewitt/700i.woff2
new file mode 100755
index 0000000..8533e5d
Binary files /dev/null and b/assets/fonts/cooperhewitt/700i.woff2 differ
diff --git a/assets/fonts/cooperhewitt/800.eot b/assets/fonts/cooperhewitt/800.eot
new file mode 100644
index 0000000..76be7d8
Binary files /dev/null and b/assets/fonts/cooperhewitt/800.eot differ
diff --git a/assets/fonts/cooperhewitt/800.svg b/assets/fonts/cooperhewitt/800.svg
new file mode 100644
index 0000000..4703374
--- /dev/null
+++ b/assets/fonts/cooperhewitt/800.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/800.woff b/assets/fonts/cooperhewitt/800.woff
new file mode 100644
index 0000000..5242ac0
Binary files /dev/null and b/assets/fonts/cooperhewitt/800.woff differ
diff --git a/assets/fonts/cooperhewitt/800.woff2 b/assets/fonts/cooperhewitt/800.woff2
new file mode 100755
index 0000000..216f10a
Binary files /dev/null and b/assets/fonts/cooperhewitt/800.woff2 differ
diff --git a/assets/fonts/cooperhewitt/800i.eot b/assets/fonts/cooperhewitt/800i.eot
new file mode 100644
index 0000000..a38af56
Binary files /dev/null and b/assets/fonts/cooperhewitt/800i.eot differ
diff --git a/assets/fonts/cooperhewitt/800i.svg b/assets/fonts/cooperhewitt/800i.svg
new file mode 100644
index 0000000..a589c7a
--- /dev/null
+++ b/assets/fonts/cooperhewitt/800i.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/fonts/cooperhewitt/800i.woff b/assets/fonts/cooperhewitt/800i.woff
new file mode 100644
index 0000000..52715fc
Binary files /dev/null and b/assets/fonts/cooperhewitt/800i.woff differ
diff --git a/assets/fonts/cooperhewitt/800i.woff2 b/assets/fonts/cooperhewitt/800i.woff2
new file mode 100755
index 0000000..dc69fe4
Binary files /dev/null and b/assets/fonts/cooperhewitt/800i.woff2 differ
diff --git a/assets/js/app.js b/assets/js/app.js
new file mode 100644
index 0000000..e69de29
diff --git a/assets/js/components/footer.jsx b/assets/js/components/footer.jsx
new file mode 100644
index 0000000..a20312c
--- /dev/null
+++ b/assets/js/components/footer.jsx
@@ -0,0 +1,36 @@
+/** @jsx React.DOM */
+
+var React = require('react');
+var classes = require('react-classes');
+
+var Footer = React.createClass({
+
+ mixins: [classes],
+
+ componentDidMount: function () {
+
+ },
+
+ getInitialState: function () {
+ return {
+
+ };
+ },
+
+ render: function () {
+
+ var classes = this.getClass('', {
+
+ });
+
+ return (
+
+
+
+ )
+
+ }
+
+});
+
+module.exports = Footer;
diff --git a/assets/js/components/header.jsx b/assets/js/components/header.jsx
new file mode 100644
index 0000000..c18260d
--- /dev/null
+++ b/assets/js/components/header.jsx
@@ -0,0 +1,38 @@
+/** @jsx React.DOM */
+
+var React = require('react');
+var classes = require('react-classes');
+
+var Navigation = require('./navigation');
+
+var Header = React.createClass({
+
+ mixins: [classes],
+
+ componentDidMount: function () {
+
+ },
+
+ getInitialState: function () {
+ return {
+
+ };
+ },
+
+ render: function () {
+
+ var classes = this.getClass('', {
+
+ });
+
+ return (
+
+
+
+ )
+
+ }
+
+});
+
+module.exports = Header;
diff --git a/assets/js/components/input.jsx b/assets/js/components/input.jsx
new file mode 100644
index 0000000..d9da974
--- /dev/null
+++ b/assets/js/components/input.jsx
@@ -0,0 +1,63 @@
+/** @jsx React.DOM */
+
+var React = require('react');
+var classes = require('react-classes');
+
+var Input = React.createClass({
+
+ mixins: [React.addons.LinkedStateMixin, classes],
+
+ propTypes: {
+ label: React.PropTypes.string, // Optional: The label for the input
+ placeholder: React.PropTypes.string, // Optional: The input placeholder text
+ type: React.PropTypes.string, // The type of input
+ value: React.PropTypes.string, // The initial value of the input
+ onChange: React.PropTypes.func, // Callback to run when the input changes
+ valueLink: React.PropTypes.shape({
+ value: React.PropTypes.string.isRequired,
+ requestChange: React.PropTypes.func.isRequired
+ })
+ },
+
+ getDefaultProps: function () {
+ return {
+ label: '',
+ type: 'text',
+ value: '',
+ onChange: function () {
+ return;
+ },
+ valueLink: null
+ }
+ },
+
+ getValueLink: function (props) {
+ return props.valueLink || {
+ value: props.value,
+ requestChange: props.onChange
+ };
+ },
+
+ _onChange (event) {
+ this.getValueLink(this.props).requestChange(event.target.value);
+ },
+
+ render: function () {
+ return (
+
+ if (this.props.label) {
+
+ }
+
+
+ )
+ }
+});
+
+module.exports = Input;
diff --git a/assets/js/components/navigation.jsx b/assets/js/components/navigation.jsx
new file mode 100644
index 0000000..2cccb87
--- /dev/null
+++ b/assets/js/components/navigation.jsx
@@ -0,0 +1,30 @@
+/** @jsx React.DOM */
+
+var React = require('react');
+var classes = require('react-classes');
+
+var Navigation = React.createClass({
+
+ mixins: [classes],
+
+ componentDidMount: function () {
+
+ },
+
+ render: function () {
+
+ var classes = this.getClass('', {
+
+ });
+
+ return (
+
+
+
+ )
+
+ }
+
+});
+
+module.exports = Navigation;
diff --git a/assets/js/router.js b/assets/js/router.js
new file mode 100644
index 0000000..e69de29
diff --git a/assets/js/dependencies/sails.io.js b/assets/js/vendor/sails.io.js
similarity index 100%
rename from assets/js/dependencies/sails.io.js
rename to assets/js/vendor/sails.io.js
diff --git a/assets/less/modules/buttons/base.less b/assets/less/modules/buttons/base.less
index 6ca755d..28726ad 100644
--- a/assets/less/modules/buttons/base.less
+++ b/assets/less/modules/buttons/base.less
@@ -2,13 +2,23 @@
* @module buttons#base
* @description Common button styles.
*/
-
-button,
-.btn {
-
+
+@import 'mixins';
+
+.btn,
+button {
+ font-family: inherit;
+ font-size: 1rem;
+ padding: .5rem;
+ margin: .5rem;
+ color: @color-black;
+ border: none;
+ background-color: @color-grey;
+ line-height: 1;
+ text-decoration: none;
+ text-transform: uppercase;
-webkit-appearance: none;
-
- .box-sizing();
+ box-sizing: border-box;
&:hover,
&:active {
@@ -23,3 +33,25 @@ button,
}
}
+
+.btn-primary,
+.btn-orange {
+ .button-variant(@color-orange);
+}
+
+.btn-secondary,
+.btn-blue {
+ //.button-variant(@color-blue);
+}
+
+.btn-success {
+ //.button-variant(@color-green);
+}
+
+.btn-warning {
+ //.button-variant(@color-yellow);
+}
+
+.btn-error {
+ //.button-variant(@color-red);
+}
diff --git a/assets/less/modules/buttons/mixins.less b/assets/less/modules/buttons/mixins.less
new file mode 100644
index 0000000..32b1a8f
--- /dev/null
+++ b/assets/less/modules/buttons/mixins.less
@@ -0,0 +1,28 @@
+.btn-background (@color, @hover-color, @selected-color, @text-color) {
+
+ color: @text-color;
+ background-color: transparent;
+ background-image: -webkit-linear-gradient(@color, darken(@color, 5%));
+
+ &:hover {
+ color: @text-color-highlight;
+ background-image: -webkit-linear-gradient(@hover-color, darken(@hover-color, 5%));
+ }
+
+ &.selected,
+ &.selected:hover {
+ color: @text-color-highlight;
+ background-image: -webkit-linear-gradient(darken(@selected-color, 5%), @selected-color);
+ &:hover {
+ background-image: -webkit-linear-gradient(@selected-color, darken(@selected-color, 5%));
+ }
+ }
+
+}
+
+.btn-variant (@color) {
+ @background: darken(@color, 10%);
+ @hover: @color;
+ @selected: @color;
+ .btn-background(@background, @hover, @selected, @text-color-highlight);
+}
\ No newline at end of file
diff --git a/assets/less/modules/layout/base.less b/assets/less/modules/layout/base.less
new file mode 100644
index 0000000..abe24bf
--- /dev/null
+++ b/assets/less/modules/layout/base.less
@@ -0,0 +1,129 @@
+/**!
+ * @module layout#base
+ * @description Common layout styles.
+ */
+
+/**
+ * @class {component} page
+ * @description The parent container for the
+ * page content, header, and footer.
+ */
+.page {
+ width: 100%;
+ margin: 0;
+ padding: 0;
+}
+
+/**
+ * @class {utility} page-full-width
+ * @description Increase the width of the page class.
+ */
+.page-full-width {
+ width: 100vw;
+ min-width: 100vw;
+}
+
+/**
+ * @class {utility} page-full-height
+ * @description Increase the height of the page class.
+ */
+.page-full-height {
+ width: 100vh;
+ min-height: 100vh;
+}
+
+/**
+ * @class {utility} page-flex
+ * @description Enable flexbox layout on the page.
+ */
+.page-flex {
+ display: flex;
+ flex: 1 auto;
+}
+
+.page-full-height.page-full-width.page-flex {
+ section {
+ max-width: 300px;
+ align-self: center;
+ margin: 0 auto;
+ }
+}
+
+/**
+ * @class {component} page-header
+ * @description The header for the page.
+ */
+.page-header {
+ margin: 3rem 0 2rem 0;
+ padding: 0;
+}
+
+.page-header-full-width {
+ display: flex;
+ flex: 1 auto;
+ height: 25vh;
+ margin: 0 0 3rem 0;
+ padding: 4rem 1rem;
+ text-align: center;
+ hgroup {
+ margin: 0 auto;
+ align-self: center;
+ }
+}
+
+/**
+ * @class {component} page-title
+ * @description The title of the page.
+ * @parent page-header
+ */
+.page-title {
+ margin: 0;
+ padding: 0 .5rem;
+ max-width: 520px;
+ font-family: 'Open Sans';
+ font-weight: bold;
+ line-height: 1.2;
+ padding: .5rem;
+ box-sizing: border-box;
+}
+
+/**
+ * @class {component} page-subtitle
+ * @description The subtitle of the page.
+ * @parent page-header
+ */
+.page-subtitle {
+ max-width: 300px;
+ margin: .25rem auto 0 auto;
+ font-size: 1rem;
+ letter-spacing: .125rem;
+ font-style: normal;
+ font-weight: 400;
+ font-family: 'Open Sans';
+}
+
+/**
+ * @class {component} page-content
+ * @description The main body of content on the page. Usually
+ * text and image content.
+ */
+.page-content {
+ font-family: '';
+}
+
+/**
+ * @class {component} page-footer
+ * @description The footer for the page.
+ */
+.page-footer {
+ margin: 2.5rem 0 5rem 0;
+}
+
+/**
+ * @class {component} page-aside
+ * @description Container for page comments.
+ */
+.page-aside {
+ margin: 0 0 5rem 0;
+ font-family: '';
+}
\ No newline at end of file
diff --git a/assets/less/modules/layout/grid.less b/assets/less/modules/layout/grid.less
index 4f6b127..f6a25b1 100644
--- a/assets/less/modules/layout/grid.less
+++ b/assets/less/modules/layout/grid.less
@@ -54,7 +54,7 @@
max-width: none;
padding: 0 1rem;
float: left;
- .box-sizing();
+ box-sizing: border-box;
}
[class*='col'] +
[class*='col']:last-child {
diff --git a/assets/less/modules/typography/base.less b/assets/less/modules/typography/base.less
index 073d664..74692f9 100644
--- a/assets/less/modules/typography/base.less
+++ b/assets/less/modules/typography/base.less
@@ -28,7 +28,7 @@ p {
}
small {
- .small();
+ .text-small();
}
strike {
diff --git a/assets/less/modules/typography/code.less b/assets/less/modules/typography/code.less
index 38e2714..8d7305c 100644
--- a/assets/less/modules/typography/code.less
+++ b/assets/less/modules/typography/code.less
@@ -11,7 +11,7 @@ pre {
margin: 2rem 0;
padding: 0 1rem 0 2rem;
color: @color-black;
- background: @light-grey;
+ background: @color-grey;
&::-webkit-scrollbar {
height: 0.5rem;
}
diff --git a/assets/less/modules/typography/fonts.less b/assets/less/modules/typography/fonts.less
index a0f7747..b0ad9e3 100644
--- a/assets/less/modules/typography/fonts.less
+++ b/assets/less/modules/typography/fonts.less
@@ -3,3 +3,35 @@
* @description Font face declarations
* @since 0.2.0
*/
+
+@font-face {
+ font-family: 'Cooper Hewitt';
+ src: url('/fonts/cooperhewitt/400.woff2') format('woff2'),
+ url('/fonts/cooperhewitt/400.woff') format('woff');
+ font-weight: 400;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Cooper Hewitt';
+ src: url('/fonts/cooperhewitt/400i.woff2') format('woff2'),
+ url('/fonts/cooperhewitt/400i.woff') format('woff');
+ font-weight: 400;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Cooper Hewitt';
+ src: url('/fonts/cooperhewitt/600.woff2') format('woff2'),
+ url('/fonts/cooperhewitt/600.woff') format('woff');
+ font-weight: 600;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Cooper Hewitt';
+ src: url('/fonts/cooperhewitt/600i.woff2') format('woff2'),
+ url('/fonts/cooperhewitt/600i.woff') format('woff');
+ font-weight: 600;
+ font-style: italic;
+}
diff --git a/assets/less/modules/views/index.less b/assets/less/modules/views/index.less
new file mode 100644
index 0000000..78b4a1e
--- /dev/null
+++ b/assets/less/modules/views/index.less
@@ -0,0 +1,3 @@
+.page-index {
+ background: @color-orange;
+}
\ No newline at end of file
diff --git a/assets/less/modules/views/profile.less b/assets/less/modules/views/profile.less
new file mode 100644
index 0000000..e69de29
diff --git a/assets/less/modules/views/register.less b/assets/less/modules/views/register.less
index 036b122..417ee71 100644
--- a/assets/less/modules/views/register.less
+++ b/assets/less/modules/views/register.less
@@ -2,4 +2,4 @@
* @module views#register
* @description User registration page.
* @since 0.2.0
- */
\ No newline at end of file
+ */
diff --git a/assets/less/styles.less b/assets/less/styles.less
index 80bca48..1240c06 100644
--- a/assets/less/styles.less
+++ b/assets/less/styles.less
@@ -1,7 +1,22 @@
-@import 'utils/mixins'
-@import 'utils/variables'
-@import 'components/header'
-@import 'components/footer'
-@import 'modules/layout/grid'
-@import 'modules/layout/print'
-@import 'modules/layout/reset'
\ No newline at end of file
+@import 'utils/mixins';
+@import 'utils/variables';
+@import 'components/header';
+@import 'components/footer';
+@import 'components/navigation';
+@import 'modules/buttons/base';
+@import 'modules/layout/base';
+@import 'modules/layout/grid';
+@import 'modules/layout/print';
+@import 'modules/layout/reset';
+@import 'modules/typography/anchor';
+@import 'modules/typography/base';
+@import 'modules/typography/blockquote';
+@import 'modules/typography/code';
+@import 'modules/typography/fonts';
+@import 'modules/typography/headings';
+@import 'modules/typography/lists';
+@import 'modules/typography/utilities';
+@import 'modules/views/index';
+@import 'modules/views/profile';
+@import 'modules/views/register';
+@import 'modules/common';
\ No newline at end of file
diff --git a/assets/less/utils/variables.less b/assets/less/utils/variables.less
index 6fea776..256c529 100644
--- a/assets/less/utils/variables.less
+++ b/assets/less/utils/variables.less
@@ -1,10 +1,10 @@
-@color-black: ;
-@color-white: ;
-@color-grey: ;
+@color-black: #000;
+@color-white: #fff;
+@color-grey: #555;
-@color-orange: ;
-@color-orange-dark: ;
-@color-orange-light: ;
+@color-orange: #f8694c;
+@color-orange-dark: #df5339;
+@color-orange-light: #e3b6a4;
@color-blue: ;
@color-blue-dark: ;
@@ -14,7 +14,7 @@
@color-red-dark: ;
@color-red-light: ;
-@font-family-primary: '', Helvetica, Arial, sans-serif;
+@font-family-primary: 'Cooper Hewitt', Helvetica, Arial, sans-serif;
@font-family-secondary: '', Helvetica, Arial, sans-serif;
@screen-medium: ;
diff --git a/bin/tasks/copy.js b/bin/tasks/copy.js
index 32bfdb9..bc8a4c0 100644
--- a/bin/tasks/copy.js
+++ b/bin/tasks/copy.js
@@ -1,7 +1,9 @@
var gulp = require('gulp');
module.exports = function (callback) {
- gulp.src(gulp.cache.opt.src + '/img/**')
- .pipe(gulp.dest(gulp.cache.opt.dest + '/public/img/'));
+ gulp.src(gulp.cache.opt.src + '/images/**')
+ .pipe(gulp.dest(gulp.cache.opt.dest + '/images/'));
+ gulp.src(gulp.cache.opt.src + '/fonts/**')
+ .pipe(gulp.dest(gulp.cache.opt.dest + '/fonts/'));
callback();
};
diff --git a/bin/tasks/index.js b/bin/tasks/index.js
index bb5a1d1..dd1f85b 100644
--- a/bin/tasks/index.js
+++ b/bin/tasks/index.js
@@ -1,3 +1,3 @@
exports.copy = require('./copy');
exports.scripts = require('./bundle');
-exports.scripts = require('./styles');
\ No newline at end of file
+exports.styles = require('./styles');
\ No newline at end of file
diff --git a/bin/tasks/styles.js b/bin/tasks/styles.js
index f2636fb..6af5716 100644
--- a/bin/tasks/styles.js
+++ b/bin/tasks/styles.js
@@ -1,5 +1,3 @@
-'use strict';
-
var gulp = require('gulp');
var path = require('path');
var less = require('gulp-less');
@@ -7,20 +5,14 @@ var gutil = require('gulp-util');
var prefix = require('gulp-autoprefixer');
var minify = require('gulp-minify-css');
var plumber = require('gulp-plumber');
-var opt = require('../options.json');
-var header = require('../utils/header');
+var header = require('../utils').header;
module.exports = function () {
-
- var src = opt.src + '/less/*.less';
- var dest = opt.dest;
-
- gulp.src(src)
+ return gulp.src(gulp.cache.opt.src + 'less/styles.less')
.pipe(plumber())
.pipe(less({paths: [ path.join(__dirname, 'less', 'includes') ] }))
.pipe(prefix('last 2 version','safari 5','opera 12.1'))
- .pipe(header('Primary stylesheet.'))
+ .pipe(header('common styles'))
.pipe(minify())
- .pipe(gulp.dest(dest));
-
+ .pipe(gulp.dest(gulp.cache.opt.dest));
};
diff --git a/bin/utils/index.js b/bin/utils/index.js
index 46a6c3a..34f3ca6 100644
--- a/bin/utils/index.js
+++ b/bin/utils/index.js
@@ -1,2 +1,2 @@
exports.clean = require('./clean');
-exports.watch = require('./watch');
\ No newline at end of file
+exports.header = require('./header');
\ No newline at end of file
diff --git a/bin/utils/watch.js b/bin/utils/watch.js
deleted file mode 100644
index 9106ce0..0000000
--- a/bin/utils/watch.js
+++ /dev/null
@@ -1,30 +0,0 @@
-var gulp = require('gulp');
-var minimist = require('minimist');
-
-module.exports = function (callback) {
-
- var argv = minimist(process.argv.slice(2));
-
- if (argv.serve) {
- if (typeof argv.serve === 'number') { // If a port number is specified, use it instead of the default
- var port = argv.serve;
- if (opt.port.toString().length != 4) {
- throw new Error('Server port must be a 4 digit number');
- }
- };
-
- var server = require('./server');
-
- server.init({
- port: port || process.env.PORT || 8000,
- root: gulp.cache.opt.dest
- }, server.listen);
-
- gulp.watch(gulp.cache.opt.dest + '/**/*.html', server.refresh);
- };
-
- gulp.task('scripts', require('../tasks/scripts.js'));
-
- gulp.watch(gulp.cache.opt.src + '/js/**/*.js', ['scripts']);
-
-};
diff --git a/gulpfile.js b/gulpfile.js
index d609f47..beaead7 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -5,13 +5,14 @@ var utils = require('./bin/utils');
gulp.cache = {};
gulp.cache.opt = {
- src: './',
- dest: './.build/'
+ src: './assets/',
+ dest: './.tmp/public/'
};
gulp.task('bundle', tasks.bundle);
+gulp.task('styles', tasks.styles);
gulp.task('copy', tasks.copy);
-gulp.task('build',['scripts','copy']);
+gulp.task('build',['bundle','styles','copy']);
gulp.task('clean', utils.clean);
gulp.task('watch', utils.watch);
gulp.task('default', ['build']);
diff --git a/package.json b/package.json
index fcf30d8..35ba255 100644
--- a/package.json
+++ b/package.json
@@ -8,9 +8,10 @@
"scripts": {
"test": "",
"postinstall": "",
- "preinstall": "",
"start": "sails lift",
- "watch": "nodemon --exec \"sails lift\""
+ "watch": "nodemon --exec \"sails lift\"",
+ "prestart": "gulp styles",
+ "start": "node app.js"
},
"engines": {
"node": "0.10.x",
@@ -24,7 +25,14 @@
"express": "^4.3.0",
"include-all": "~0.1.3",
"newrelic": "^1.14.7",
+ "captains-log": "~0.11.8",
+ "ejs": "~0.8.4",
+ "express": "^4.3.0",
+ "include-all": "~0.1.3",
+ "q": "^1.1.2",
"rc": "~0.5.0",
+ "react": "^0.12.2",
+ "react-classes": "^1.0.3",
"sails": "~0.10.5",
"sails-disk": "~0.10.0",
"sails-generate-hook": "0.0.1",
@@ -35,14 +43,30 @@
"bcrypt": "^0.8.0",
"chai": "^1.10.0",
"expect.js": "^0.3.1",
+ "sails-mongo": "^0.10.5",
+ "winston": "^0.9.0",
+ "del": "^1.1.1",
"file-loader": "^0.8.1",
"gulp": "^3.8.10",
+ "gulp-autoprefixer": "^2.1.0",
+ "gulp-header": "^1.2.2",
+ "gulp-less": "^2.0.1",
+ "gulp-minify-css": "^0.3.13",
+ "gulp-plumber": "^0.6.6",
+ "gulp-util": "^3.0.2",
"jsx-loader": "^0.12.2",
+ "less-loader": "^2.0.0",
+ "minimist": "^1.1.0",
"mocha": "^1.18.0",
"mongo-express": "^0.20.0",
+ "moment": "^2.9.0",
+ "react-hot-loader": "^1.1.4",
+ "react-tools": "^0.12.2",
+ "sails-generate-hook": "0.0.1",
"sinon": "^1.12.2",
"style-loader": "^0.8.3",
"url-loader": "^0.5.5",
- "webpack": "^1.5.1"
+ "webpack": "^1.5.1",
+ "webpack-dev-server": "^1.7.0"
}
}
diff --git a/views/layout.ejs b/views/layout.ejs
index 16e651e..8cf3b82 100644
--- a/views/layout.ejs
+++ b/views/layout.ejs
@@ -3,12 +3,11 @@
<%- title %>
+
<%- partial('partials/header.ejs') %>
-
- <%- body %>
-
+<%- body %>
<%- partial('partials/footer.ejs') %>