ff-stream-web

git clone git://archive.git.mtrnord.blog/MTRNord/ff-stream-web.git
Log | Files | Refs | README | LICENSE

commit 0aaf3f39914085fe6558fcc8a5ccb2efec30ed3b
parent c5469a3bedfa3e637347bc8747e36dbdcd654589
Author: Konstantin Tarkus <hello@tarkus.me>
Date:   Sat, 13 Sep 2014 01:20:08 +0400

Add routes, pages, components, layouts

Diffstat:
Mpackage.json | 1+
Msrc/app.jsx | 51+++++++++++++++------------------------------------
Asrc/components/Navbar.jsx | 17+++++++++++++++++
Asrc/layouts/Default.jsx | 23+++++++++++++++++++++++
Asrc/pages/Home.jsx | 29+++++++++++++++++++++++++++++
Asrc/pages/Privacy.jsx | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/styles/base.less | 20++++++++++++++------
Msrc/styles/variables.less | 2++
8 files changed, 156 insertions(+), 42 deletions(-)

diff --git a/package.json b/package.json @@ -37,6 +37,7 @@ "merge-stream": "^0.1.5", "minimist": "^1.1.0", "protractor": "^1.2.0", + "react-router": "^0.7.0", "rimraf": "^2.2.8", "run-sequence": "^0.3.6", "url-loader": "^0.5.5", diff --git a/src/app.jsx b/src/app.jsx @@ -3,41 +3,21 @@ */ var React = require('react'); +var Router = require('react-router'); -var Navbar = React.createClass({ - render: function () { - return ( - <div className="navbar navbar-inverse navbar-fixed-top"> - <div className="container"> - <a className="navbar-brand" href="/"><img src="/images/logo-small.png" width="38" height="38" alt="" /> React Seed</a> - </div> - </div> - ); - } -}); +var Routes = Router.Routes; +var Route = Router.Route; -var Page = React.createClass({ - render: function () { - return ( - <div className="container"> - <h2>Facebook React Starter Kit</h2> - <p>This is a single-page application (SPA) project template based on Facebook React.</p> - <h4>Runtime Components:</h4> - <ul> - <li><a href="https://facebook.github.io/react/">React</a> - A JavaScript library for building user interfaces, developed by Facebook</li> - <li><a href="http://getbootstrap.com/">Bootstrap</a> - CSS framework for developing responsive, mobile first interfaces</li> - <li><a href="http://jquery.com/">jQuery</a> - a JavaScript library designed to simplify the client-side scripting of HTML</li> - </ul> - <h4>Development Tools:</h4> - <ul> - <li><a href="http://webpack.github.io/">Webpack</a> - Compiles front-end source code into modules / bundles</li> - <li><a href="http://gulpjs.com">Gulp</a> - JavaScript streaming build system and task automation</li> - </ul> - <h3>Fork me on GitHub</h3> - <p><a href="https://github.com/kriasoft/react-seed">https://github.com/kriasoft/react-seed</a></p> - </div> - ); - } -}); +var DefaultLayout = require('./layouts/Default.jsx'); +var HomePage = require('./pages/Home.jsx'); +var PrivacyPage = require('./pages/Privacy.jsx'); -React.renderComponent(<div><Navbar /><Page /></div>, document.body); -\ No newline at end of file +React.renderComponent( + <Routes location="history"> + <Route name="app" path="/" handler={DefaultLayout}> + <Route name="home" path="/" handler={HomePage} /> + <Route name="privacy" path="/privacy" handler={PrivacyPage} /> + </Route> + </Routes>, + document.body +); diff --git a/src/components/Navbar.jsx b/src/components/Navbar.jsx @@ -0,0 +1,17 @@ +/** + * @jsx React.DOM + */ + +var React = require('react'); + +module.exports = React.createClass({ + render: function () { + return ( + <div className="navbar navbar-inverse navbar-fixed-top"> + <div className="container"> + <a className="navbar-brand" href="/"><img src="/images/logo-small.png" width="38" height="38" alt="" /> React Seed</a> + </div> + </div> + ); + } +}); diff --git a/src/layouts/Default.jsx b/src/layouts/Default.jsx @@ -0,0 +1,23 @@ +/** + * @jsx React.DOM + */ + +var React = require('react'); +var Link = require('react-router').Link; +var Navbar = require('../components/Navbar.jsx'); + +module.exports = React.createClass({ + render: function () { + return ( + <div> + <Navbar /> + <this.props.activeRouteHandler /> + <div className="navbar navbar-fixed-bottom"> + <div className="container"> + <p className="text-muted">&copy; KriaSoft • <Link to="home">Home</Link> • <Link to="privacy">Privacy</Link></p> + </div> + </div> + </div> + ); + } +}); diff --git a/src/pages/Home.jsx b/src/pages/Home.jsx @@ -0,0 +1,29 @@ +/** + * @jsx React.DOM + */ + +var React = require('react'); + +module.exports = React.createClass({ + render: function () { + return ( + <div className="container"> + <h2>Facebook React Starter Kit</h2> + <p>This is a single-page application (SPA) project template based on Facebook React.</p> + <h4>Runtime Components:</h4> + <ul> + <li><a href="https://facebook.github.io/react/">React</a> - A JavaScript library for building user interfaces, developed by Facebook</li> + <li><a href="http://getbootstrap.com/">Bootstrap</a> - CSS framework for developing responsive, mobile first interfaces</li> + <li><a href="http://jquery.com/">jQuery</a> - a JavaScript library designed to simplify the client-side scripting of HTML</li> + </ul> + <h4>Development Tools:</h4> + <ul> + <li><a href="http://webpack.github.io/">Webpack</a> - Compiles front-end source code into modules / bundles</li> + <li><a href="http://gulpjs.com">Gulp</a> - JavaScript streaming build system and task automation</li> + </ul> + <h3>Fork me on GitHub</h3> + <p><a href="https://github.com/kriasoft/react-seed">https://github.com/kriasoft/react-seed</a></p> + </div> + ); + } +}); diff --git a/src/pages/Privacy.jsx b/src/pages/Privacy.jsx @@ -0,0 +1,55 @@ +/** + * @jsx React.DOM + */ + +var React = require('react'); + +module.exports = React.createClass({ + render: function () { + return ( + <div className="container"> + <h2>Privacy Policy</h2> + <p> + Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean consequat tortor fermentum mi + fermentum dignissim. Nullam vel ipsum ut ligula elementum lobortis. Maecenas aliquam, massa laoreet + lacinia pretium, nisi urna venenatis tortor, nec imperdiet tellus libero efficitur metus. Fusce + semper posuere ligula, et facilisis metus bibendum interdum. Mauris at mauris sit amet sem pharetra + commodo a eu leo. Nam at est non risus cursus maximus. Nam feugiat augue libero, id consectetur + tortor bibendum non. Quisque nec fringilla lorem. Nullam efficitur vulputate mauris, nec maximus leo + dignissim id. + </p> + <p> + In hac habitasse platea dictumst. Duis sagittis dui ac ex suscipit maximus. Morbi pellentesque + venenatis felis sed convallis. Nulla varius, nibh vitae placerat tempus, mauris sem elementum ipsum, + eget sollicitudin nisl est vel purus. Fusce malesuada odio velit, non cursus leo fermentum id. Cras + pharetra sodales fringilla. Etiam quis est a dolor egestas pellentesque. Maecenas non scelerisque + purus, congue cursus arcu. Donec vel dapibus mi. Mauris maximus posuere placerat. Sed et libero eu + nibh tristique mollis a eget lectus. Donec interdum augue sollicitudin vehicula hendrerit. Vivamus + justo orci, molestie ac sollicitudin ac, lobortis at tellus. Etiam rhoncus ullamcorper risus eu + tempor. Sed porttitor, neque ac efficitur gravida, arcu lacus pharetra dui, in consequat elit tellus + auctor nulla. Donec placerat elementum diam, vitae imperdiet lectus luctus at. + </p> + <p> + Nullam eu feugiat mi. Quisque nec tristique nisl, dignissim dictum leo. Nam non quam nisi. Donec + rutrum turpis ac diam blandit, id pulvinar mauris suscipit. Pellentesque tincidunt libero ultricies + risus iaculis, sit amet consequat velit blandit. Fusce quis varius nulla. Nullam nisi nisi, suscipit + ut magna quis, feugiat porta nibh. Sed id enim lectus. Suspendisse elementum justo sapien, sit amet + consequat orci accumsan et. Aliquam ornare ullamcorper sem sed finibus. Nullam ac lacus pulvinar, + egestas felis ut, accumsan est. + </p> + <p> + Pellentesque sagittis vehicula sem quis luctus. Proin sodales magna in lorem hendrerit aliquam. + Integer eu varius orci. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere + cubilia Curae; Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia + Curae; Ut at mauris nibh. Suspendisse maximus ac eros at vestibulum. + </p> + <p> + Interdum et malesuada fames ac ante ipsum primis in faucibus. Quisque egestas tortor et dui + consequat faucibus. Nunc vitae odio ornare, venenatis ligula a, vulputate nisl. Aenean congue varius + ex, sit amet bibendum odio posuere at. Nulla facilisi. In finibus, nulla vitae tincidunt ornare, + sapien nulla fermentum mauris, sed consectetur tortor arcu eget arcu. Vestibulum vel quam enim. + </p> + </div> + ); + } +}); diff --git a/src/styles/base.less b/src/styles/base.less @@ -6,10 +6,6 @@ html { padding-top: 48px; } -html, body { - background-color: #f9f9f9; -} - /* ========================================================================== Browse Happy prompt ========================================================================== */ @@ -19,4 +15,17 @@ html, body { background: #ccc; color: #000; padding: 0.2em 0; -} -\ No newline at end of file +} + +/* ========================================================================== + Footer + ========================================================================== */ + +.navbar-fixed-bottom { + + background-color: darken(@body-bg, 2%); + + .text-muted { + margin-top: 1em; + } +} diff --git a/src/styles/variables.less b/src/styles/variables.less @@ -1,3 +1,5 @@ /* ========================================================================== Variables ========================================================================== */ + +@body-bg: #f9f9f9;