diff options
author | Vitaly Takmazov | 2017-12-20 13:28:12 +0300 |
---|---|---|
committer | Vitaly Takmazov | 2023-01-13 10:37:52 +0300 |
commit | 813c5e7eda90944733d60dd324459ced93c9c087 (patch) | |
tree | b3a7e40532aef4544377e66fd00a0fc5eac21671 /vnext | |
parent | a12975463c3389e506d24288341b30257419d8d2 (diff) |
initial demo
Diffstat (limited to 'vnext')
-rw-r--r-- | vnext/package.json | 42 | ||||
-rw-r--r-- | vnext/server.js | 15 | ||||
-rw-r--r-- | vnext/src/app.js | 34 | ||||
-rw-r--r-- | vnext/src/components/message.jsx | 26 | ||||
-rw-r--r-- | vnext/src/style/main.css | 263 | ||||
-rw-r--r-- | vnext/src/views/index.jade | 22 | ||||
-rw-r--r-- | vnext/webpack.config.js | 34 |
7 files changed, 436 insertions, 0 deletions
diff --git a/vnext/package.json b/vnext/package.json new file mode 100644 index 00000000..56640ed6 --- /dev/null +++ b/vnext/package.json @@ -0,0 +1,42 @@ +{ + "name": "juick", + "version": "1.0.0", + "description": "", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "compile": "webpack --colors -p" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "babel-core": "^6.7.2", + "babel-loader": "^6.2.4", + "babel-preset-es2015": "^6.6.0", + "babel-preset-react": "^6.5.0", + "babel-preset-stage-0": "^6.5.0", + "css-loader": "^0.23.1", + "extract-text-webpack-plugin": "^1.0.1", + "file-loader": "^0.8.5", + "jade": "^1.11.0", + "jade-html-loader": "0.0.3", + "jade-react-loader": "^1.0.2", + "react-hot-loader": "^1.3.0", + "style-loader": "^0.13.0", + "webpack": "^1.12.14", + "webpack-dev-server": "^1.14.1" + }, + "babel": { + "presets": [ + "es2015", + "react", + "stage-0" + ] + }, + "dependencies": { + "react": "^0.14.7", + "react-dom": "^0.14.7", + "whatwg-fetch": "^0.11.0" + } +} diff --git a/vnext/server.js b/vnext/server.js new file mode 100644 index 00000000..600e954a --- /dev/null +++ b/vnext/server.js @@ -0,0 +1,15 @@ +var webpack = require("webpack"); +var WebPackDevServer = require("webpack-dev-server"); +var config = require("./webpack.config"); + +new WebPackDevServer(webpack(config), { + publicPath: config.output.publicPath, + hot: true, + inline: true, + historyApiFallback: true +}).listen(3000, 'localhost', function (err, result) { + if (err) { + return console.log(err); + } + console.log("listening") +})
\ No newline at end of file diff --git a/vnext/src/app.js b/vnext/src/app.js new file mode 100644 index 00000000..52f35076 --- /dev/null +++ b/vnext/src/app.js @@ -0,0 +1,34 @@ +import "whatwg-fetch" +import React, {PropTypes} from "react" +import ReactDOM from "react-dom" + +import Message from "./components/Message.jsx" + +const Page = React.createClass({ + getInitialState() { + return {msgs: [], loading: false} + }, + propTypes: { + msgs: PropTypes.array, + source: PropTypes.string.isRequired + }, + render() { + var nodes = this.state.msgs.map(msg => { + return (<Message key={msg.mid} mid={msg.mid} user={msg.user} body={msg.body} timestamp={msg.timestamp}/>) + }); + return (<div className="msgs">{nodes}</div>) + }, + componentDidMount() { + fetch(this.props.source) + .then(response => { + return response.json() + }) + .then(data => + this.setState({ msgs: data }) + ).catch(ex => { + console.log(ex) + }); + } +}); + +ReactDOM.render(<Page source="https://api.juick.com/messages" />, document.getElementById("content"));
\ No newline at end of file diff --git a/vnext/src/components/message.jsx b/vnext/src/components/message.jsx new file mode 100644 index 00000000..faeb4b4e --- /dev/null +++ b/vnext/src/components/message.jsx @@ -0,0 +1,26 @@ +import React, {PropTypes} from "react" + +const Message = React.createClass({ + propTypes: { + mid: PropTypes.number.isRequired, + user: PropTypes.shape({ + uid: PropTypes.number.isRequired, + uname: PropTypes.string.isRequired + }), + timestamp: PropTypes.string.isRequired, + body: PropTypes.string.isRequired + }, + render() { return ( + <article> + <aside> + <a href={this.props.user.uname + "/"}> + <img src={"//i.juick.com/a/" + this.props.user.uid + ".png"} alt=""/></a> + </aside> + <header className="u">@<a href={this.props.user.uname + "/"}>{this.props.user.uname}</a>: </header> + <header className="t"><a href={this.props.user.uname + "/" + this.props.mid}> + <time dateTime={this.props.timestamp} title={this.props.timestamp}>{this.props.timestamp}</time></a></header> + <p>{this.props.body}</p> + </article>) } +}); + +export default Message
\ No newline at end of file diff --git a/vnext/src/style/main.css b/vnext/src/style/main.css new file mode 100644 index 00000000..a65e3389 --- /dev/null +++ b/vnext/src/style/main.css @@ -0,0 +1,263 @@ +html,body,div,h1,h2,ul,li,p,form,input,textarea,pre { margin: 0; padding: 0; } +html,input,textarea { font-family: sans-serif; font-size: 12pt; } +html { background: #EEEEE5; color: #000; } +body { width: 1024px; margin: 0 auto; } +h1,h2 { font-weight: normal; } +ul { list-style-type: none; } +a { text-decoration: none; color: #069; } +img,hr { border: none; } +hr { height: 1px; background: #CCC; margin: 10px 0; } +pre { white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word; } +span.u { text-decoration: underline; } + +#content { width: 728px; margin: 15px 0 0 40px; float: right; } +#topwrapper { position: relative; clear: both; } + +/********/ + +body>header { width: 1024px; } +body>header a { color: #000; border-bottom: 1px dotted #666; font-size: 13pt; } + +#logo { float: left; width: 110px; height: 36px; margin: 7px 25px 0 20px; } +#logo a { display: block; width: 110px; height: 36px; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; +background: url("//i.juick.com/logo.png") no-repeat; } +@media screen and (-webkit-min-device-pixel-ratio: 2), + (min-resolution: 192dpi) { + #logo a { + background: url("//i.juick.com/logo_2x.png") no-repeat; + background-size: cover; + } +} +nav#global { float: left; } +nav#global li { display: inline-block; margin: 14px 12px 0 0; } +#search { float: right; margin: 12px 20px 12px 0; } +#search input { background: #FFF; border: 1px solid #DDDDD5; padding: 4px; } + +#headdiv { clear: both; margin: 0 0 5px 0; padding: 0 20px; background: #DDDDD5; border-top: 1px solid #D5D5D0; border-bottom: 1px solid #D5D5D0; position: relative; } +#headdiv li { display: inline-block; margin: 12px 12px 12px 0; } +nav#actions { top: 0; right: 8px; position: absolute; } + +body>header nav li:after { display: inline-block; content: "/"; margin-left: 12px; color: #AAA; } +body>header nav li:last-child:after { display: none; } + +body>header p { color: #000; font-size: 13pt; margin: 12px 0; text-align: center; } + +/********/ + +#content>p, #content>h1, #content>h2 { margin: 1em 0; } + +#newmessage { background: #E5E5E0; padding: 15px; margin-bottom: 20px; } +#newmessage textarea { border: 1px solid #CCC; padding: 4px; width: 688px; resize: vertical; min-height: 14pt; height: 14pt; margin: 0 0 5px 0; } +#newmessage input { border: 1px solid #CCC; padding: 3px 6px 4px; /*margin: 5px 0;*/ } +#newmessage>div { display: none; } +#newmessage .img { width: 500px; } +#newmessage .tags { width: 500px; } +#newmessage .subm { width: 150px; background: #EEEEE5; } + +article { margin: 10px 0 20px 58px; background: #FFF; padding: 12px 13px; } +article>aside { margin: -12px 0 0 -71px; width: 48px; height: 48px; float: left; } +article>aside img { width: 48px; height: 48px; } +article>header.u { overflow: hidden; display: inline-block; width: 460px; } +article>header.t { width: 140px; text-align: right; float: right; } +article time { color: #999; font-size: 10pt; border-bottom: 1px dotted #999; } +article p { margin: 10px 0 15px 0; } +article p.i { text-align: center; } +article p.ir { float: right; margin-left: 10px; margin-bottom: 10px; } +article p.ir a { cursor: -webkit-zoom-in; cursor: -moz-zoom-in; } +article p.ir img { max-width: 200px; max-height: 200px; } +article .irbr { clear: right; } +article>nav.l { display: inline-block; font-size: 10pt; } +article>nav.l a { color: #888; border-bottom: 1px dotted #AAA; margin-right: 15px; } +article>nav.s { display: inline-block; text-align: right; float: right; } +article>nav.s a { font-weight: bold; color: #222; } +article a.likes { padding-left: 20px; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAXNSR0IArs4c6QAAAMRJREFUGBmtwbsuQ2EAAOCPX6LlKSRGD2E0YCKRGDqLQReDSVhIjI1r49bRdiZJn0GIQcPSxFO4HPHLOe1J2rpMvo//MaMl1batZNSWtlTLrK4JL5qqTqQO1aTqqppeTcrtexRklkTRskzw4Eju1rmOIIqCjrp7uRsNhQWLCmfu5C48Kxk05MmV3JR3xwatiaZ1rYg29Zr34VSPHdG6wpw3iaDPnmhDpiKVKPtmV7Sq4tOlET86EEUNw34RJK4Ffxgzrs8XpvA41+ECiwcAAAAASUVORK5CYII=") no-repeat 0px 1px; } +article a.replies { margin-left: 18px; padding-left: 20px; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAANdJREFUOMvN069OgmEUBvAfSCUxNicFKTQ3bkCLyRvwDrgHZ5Q7MFlobAY3G9UrsOi0iIGNBIGgG00o53PvCMAHBJ7thPecPc/5+3IoKKKDIeZrbIi74CiFQBs3eMTbmmRnuMUID5nzG90cFXcxyEqHU3zlEBigkQoUor9N8Recf4Gdpr8XgV+Uc/DK+Ekdz/hAcwNyE594Sp0NTJYOZobriB/FjUwjNkE9m36GKq5wHO9zXOICtch4j1f0Q2QlSnjBGL10dXlQxXvSVmWbTZ3E/5ijtRxcAIj4MflVC0WJAAAAAElFTkSuQmCC") no-repeat 0px 1px; } +article footer.comm { margin: 13px 0 0 0; } +article textarea { width: 530px; padding: 2px; resize: vertical; vertical-align: top; min-height: 12pt; height: 12pt; border: 0; } +article input { width: 50px; margin-left: 6px; vertical-align: top; border: 1px solid #CCC; background: #EEE; color: #999; } + +#yandex_ad_728 { width: 728px; height: 90px; margin: 20px 0; padding: 15px 0; background: #FFF; } +.adslot1 { display: inline-block; width: 320px; height: 90px; } + +@media (min-width:500px) {.adslot1 {width: 468px; height: 60px;}} +@media (min-width:800px) {.adslot1 {width: 728px; height: 90px; margin: 10px 0 20px 0; }} + + +#geomap { width: 700px; height: 300px; margin-top: 1em; overflow: hidden; } + +.msg { margin: 10px 0 20px 0; } +.ads { padding: 13px 10px 5px 10px; margin: 8px 0 16px 58px; background: #FFF; } +.msgthread { margin-bottom: 0; } +.msg-avatar { float: left; width: 48px; height: 48px; } +.msg-avatar img { width: 48px; height: 48px; vertical-align: top; } +.msg-cont { background: #FFF; margin-left: 58px; padding: 12px 15px; width: 640px; } +.msg-menu { float: right; width: 16px; height: 16px; } +.msg-menu>a { display: block; width: 16px; height: 16px; vertical-align: top; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IArs4c6QAAALRQTFRFAAAAldX/ncT/ksj/ltL/nMb/lMn/mcz/l9H/lcr/mZmZmcz/m83/mJiYmZmZmcz/mM7/mpqamsr/l8v/m83/mJiYmM7/l8v/mZmZmcz/mpqamMv/mcz/mM3/ms3/msv/mMv/mMz/mcz/msz/mc3/mMz/mcz/msz/mc3/mcv/mc3/mcv/mcz/mcz/mcz/mcz/mZmZmZmZmcz/mcz/mcz/mcz/mcz/mcz/mcz/mcz/mcz/mZmZiZsGCAAAADx0Uk5TAAwNDhESExQWGC0tLi8yMjQ1NTY4OTk7PDxESktNUVNUd3h5eoGCg4mKmMvMzc7P29zd3uLj7O3u8vT2+A5wCAAAAJFJREFUGBkFwQlCgkAAAMDRxEySkryyzDxSAc+gkvX//2oGAAB42J5COG46AJ+/+SiKxvl1DsyqJyCtZnBXxgDxdxPrHQDZCvvUNIFkalAgtCSXHr1LIqpRt+ifu91zn6hG8YLh7TbEoMAyg8kEsgWaZQzwWDbgvXoG0p83YH7Nx+32a/73AdDZHEIovu4BAMA/t6QMuyHliCkAAAAASUVORK5CYII=") no-repeat; } +.msg-header { overflow: hidden; } +.msg-ts { font-size: small; vertical-align: top; margin: 5px 0; } +.msg-ts, .msg-ts>a { color: #999; } +.msg-place { font-size: small; } +.msg-place>a { color: #999; } +.msg-txt { overflow: hidden; margin: 10px 0 12px 0; } +.msg-media { text-align: center; } +.msg-links { font-size: small; color: #999; margin: 5px 0 0 0; } +.msg-comments { overflow: hidden; font-size: small; color: #AAA; text-indent: 10px; margin-top: 10px; } +.msg-comment { margin: 5px 0; } +.ta-wrapper { display: inline-block; border: 1px solid #DDD; } +.msg-comment textarea { width: 634px; padding: 2px; resize: vertical; vertical-align: top; min-height: 12pt; height: 12pt; border: 0; } +.msg-comment .narrow { width: 554px; } +.msg-comment .narrowpm { width: 580px; } +.attach-photo { display: inline-block; padding: 2px 4px; cursor: pointer; width: 16px; height: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAQAAAAKsiavAAAAAXNSR0IArs4c6QAAAKRJREFUGNNjZICC6Q5M+xlQwD/HzAMMDEwwLnM9AxqAiDDO/M+AFzCh8B4zhrDwsfAxBjHcggkhm/CY2SDlHYQ5TZD5EoMMmgmMhSnvZnrPfDLzyQyvrPf/CzGs+L2TgYFhBoM0gzTjDAaGX7uwuQG/I1ldGRj+pzM8YXjMmMrAwOGK6cibfy2z3sMdeYpBBTMcHjMU/9zJzsjo8r8DIk1yQGEBAFzpL+AuTCqZAAAAAElFTkSuQmCC") no-repeat 3px 4px; } +.attach-photo-active { display: inline-block; padding: 2px 4px; cursor: pointer; width: 16px; height: 13px; overflow: hidden; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAMAAACXZR4WAAAAAXNSR0IArs4c6QAAAEVQTFRFAAAAAJUAAJ0AAJIAAJkAAJYAAJwAAJcAAJoAAJgAAJkAAJoAAJoAAJgAAJkAAJoAAJkAAJkAAJkAAJkAAJkAAJkAAJkA9z3GXQAAABZ0Uk5TAAwNDg8REkBHSktRU1RVv9jZ2+Lj5OeV7PgAAABSSURBVAhbdcjBFkAgFADRIUlE9Or9/6daUC0cs5pzAXD65niKFSJQv/aChHHcrg4yA9jcILCW4tkbDGRVwfzDhs+yEBqcFsCmBiqHmULSDr0P3JdgDbuscEckAAAAAElFTkSuQmCC") no-repeat 3px 4px; } +.msg-comment input { width: 50px; margin-left: 6px; vertical-align: top; border: 1px solid #CCC; background: #EEE; color: #999; } +.msg-recomms { margin-top: 10px; overflow: hidden; font-size: small; color: #AAA; text-indent: 10px; } +.reply-new .msg-cont { border-right: 5px solid #0C0; } +q:before, q:after { content: "";} +q { border-left: 1px dashed #CCC; margin: 10px 0 10px 10px; padding-left: 10px; display: block; color: #666; } + +#mtoolbar { width: 670px; margin-left: 58px; background: #E5E5DD; border-top: 1px solid #CCC; } +#mtoolbar ul, #mtoolbar a { padding: 5px; } +#mtoolbar li { display: inline; } +#mtoolbar div { display: inline-block; width: 16px; height: 16px; background: url(//static.juick.com/toolbar-icons.png) no-repeat; vertical-align: middle; margin: 5px; } + +.newmessage { width: 695px; padding: 2px; resize: vertical; border: 1px solid #DDD; } /* textarea */ + +.users { width: 100%; margin: 10px 0; } /* table */ +.users td { width: 33%; padding: 6px 0; overflow: hidden; } /* table */ +.users img { width: 32px; height: 32px; vertical-align: middle; margin-right: 6px; } /* table */ + +.title2 { padding: 10px 20px; margin: 20px 0; background: #DDDDD0; } +.title2-right { float: right; line-height: 24px; } +#content .title2 h2 { font-size: x-large; margin: 0; } + +.page { text-align: center; padding: 5px; background: #E5E5DD; } + +/* signup form */ +.signup-h1>img { vertical-align: middle; margin-right: 10px; } +.signup-h1 { margin: 20px 0 10px 0; font-size: x-large; } +.signup-h2 { font-size: large; margin: 10px 0 5px 0; } +.signup-hr { margin: 20px 0; } + +/********/ + +#readerlinks li { margin: 15px 0; } +#readerlinks img { vertical-align: top; margin: 1px 7px 0 0; } +#readerlinks a { color: #000; border-bottom: 1px dotted #666; } +#readerlinks a:visited { color: #999; } + +/********/ + +.newpm { margin: 20px 60px 30px 60px; } +.newpm textarea { width: 100%; resize: vertical; } +.newpm-send input { width: 100px; } + +/********/ + +#column { width: 240px; padding-top: 10px; overflow: hidden; float: left; margin-left: 10px; } +#column ul, #column p, #column hr { margin: 10px 0; } +#column li { margin: 6px 0; } +#column .margtop { margin-top: 15px; } +#column p { font-size: 10pt; line-height: 140%; } +#column .tags { text-align: justify; } +#column .inp { width: 222px; padding: 3px; border: 1px solid #CCC; border-radius: 3px; background: #F5F5E9; } +#ctitle { font-size: 14pt; } +#ctitle img { vertical-align: middle; margin-right: 5px; } +#ctoolbar { margin: 10px 0; padding: 5px; line-height: 0; background: #E5E5DD; } +#ctoolbar li { display: inline; } +#ctoolbar a { padding: 5px 10px;} +#ctoolbar div { display: inline-block; width: 16px; height: 16px; background: url(//static.juick.com/toolbar-icons.png) no-repeat; vertical-align: middle; margin: 5px 0; } +#ustats li { margin: 3px 0; font-size: 10pt; } +#column table.iread { width: 100%; } +#column table.iread td { text-align: center; } +#column table.iread img { width: 48px; height: 48px; } + +/********/ + +#dialogb { position: fixed; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.6; background: #000; z-index: 10; } +#dialogt { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 10; } +#dialogt td { vertical-align: middle; text-align: center; } +#dialogw { position: relative; display: inline-block; text-align: left; z-index: 11; } +#dialogc { position: absolute; top: -15px; right: -15px; width: 30px; height: 30px; z-index: 12; cursor: pointer; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAQAAACROWYpAAAEEElEQVQ4y32Va2yTVRzGf23fd10vUNqxsY1dGIyba7BsTgiwhcRkgxHkFkJAuQzIggY0IXGYkKA4DeAQMQTIiIB+MyRAJn7hAxJRJKIRiJgQIhESZxYFEuja9f74oe1aoPh/vrx5z3nO/3qeA0+aBSvW+UaT2VBUb+91HXY3FDUUNZnzDaxYsfBcs2DDpHjqqC1ln07YU79t0oGX+mY1V3dWv1/VWVrqphgTW+EDLBjYS91tZZ/5v+34d1/sijIWv/bw2IXFy2urfKVu7BjP0q0YOCaMWVlzfF7wdJY2mLybzH4/+mpq3cxKrwcHBtanvTqrfK/X97+avCvFUn2xtjDBNJpDn8SGU1Ls+oXVTTUeL8587xYMHKN97fWnlikqnU/UDmWJWUwL/ZKQpPOvTZvg8eLI0W3Y8cyo+3hB4p50MmYLUgC24EdRSTq6rLIaD/Z06SyYuMdWvjnv4TfS+URhahpHYlLwR16gHDcmVrBSPNrXOv2LTimUrMoE3BiaO5Jz2dCmiDNIkGBRcCAuffde1WR8FGMDKy5n5cp5f34pHYqlt/tDkrQ7SpDgxNBASurLrHRFpPsXmUEFbgyw4fFM7FgQvi7NznirHQorTZ8cGkhJUm80vVIylJA0ppU6xlAEBiXj/EvWSI+TuewWhdP0xylJOhPPVeJGVNqxbdQ0xlIMprusoXnzW9LtRH5xFoUjmfHIpxL8Oiod3ed6kXE4wHRW+Od0dku/J57s7P1UmvxBNP//2ah0+CCNVOICk8qyOS3bpAeJfOpgSpISypUujZ+GpXd6HC8zPkM2Z9Vtiv0jZRvlGRrM5Lo4k/vWSHZUHsWlGW+YI+QKs7lh/Z1L0tuZLbPDuVzTpTsVT6+0haXB31hNUzbsMjMwZdWBz6XBuDOY7efWiG3kYuyOZmO6FJLOnWM5mYIZlDDd3lHVPXAt18/C2DAsBf8u2cECpqdbZcNDndHi27S5T5I2DD+POjccT0qHz9JJS3ZIrLioIGBbNu7dI6claVdB72uHI0np8lW6WUIgO55WivFRT6ttvffDQ/2SdCuyatiZR2wLXwlL0uVf6WEdrdRnL4YFEzfl+Gm3dXn2bun/67YkRZI3oscjxyM/Rx7FJenBwP6L7KWLdvy5K5kRA6qZSYety9nDiYM//HFLeXbvzsmr5kl66KKDmeSJQUaG8FJDgHbW0e3YzwnPmVe+33lz582Oy+P7OcF+ullHOwFqeEKGMgKIl2r8tLCUjWxnl7HH6KXX2GPdxXY2spQW/FTzlACOSC8eyplEgBYWsoI1rGUta1jBQloIMIlyCkhv9r2w48JLObVMwU+ARhoJ4GcKtZTjxZXL9Vm6BSsGJnYcOHFl4MSBHRMDK5b/e69yxzyNAvYf9TCL+HAwka4AAAAASUVORK5CYII="); } + +.dialoglogin { width: 300px; background: #EEEEE5; padding: 25px; } +#signfb,#signvk { display: block; width: 100%; height: 32px; line-height: 32px; text-indent: 37px; text-decoration: none; overflow: hidden; margin: 10px 0; } +#signfb { color: #FFF; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAADNQTFRFO1edX3ewl6bLnKrOoK3QrrrYvMXe2N7r3OLu3+Tv5urz7O/29vf6+Pn7+vv9/Pz9////ykQjsQAAAEZJREFUOMtjYBgFuAATO68ADxdOaUYuATDAqYBbAL8CFgECCjiBcqz4XMiPz3oQEKCtAgEkwEdIAQchBWyEFDAPkDdHsAIAhZkIwz/VK/UAAAAASUVORK5CYII=") no-repeat #3A569C; } +#signvk { margin-bottom: 30px; color: #FFF; background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHJQTFRFbY+zbo+zbpCzb5C0cpO1c5O2dZW3dpa4e5m6gJ29gZ69lq/In7bNo7jPrcDUs8XXvs3dv87dy9fkztnlz9rm0Nrm093o1N7o1+Dq3OTt3ubu4Ofv5Orw7fH27vL28PP38vX49Pb5+vv8+/z9/Pz9////2jSYlQAAAG5JREFUOMvtkEcOgDAMBE3vvXdIyP+/iMMRKfYHmMtcRtE6AD8f1Is8pyKgAs0RGYO2HSWqMQaoBHVRgYsS3AsrtyFlrqgdJlCLb95gxQO6IkZCqL+KCjz0TQU5ejOf2a3aJXPF7BOB2PvMhp8PDzGRFgEe7xvEAAAAAElFTkSuQmCC") no-repeat #6d8fb3; } +.dialoglogin form { margin-top: 7px; } +.signinput,.signsubmit { border: 1px solid #CCC; margin: 3px 0; padding: 3px; } +.signinput { width: 292px; } +.signsubmit { width: 70px; } + +.dialogshare { padding: 20px; background: #EEEEE5; border: 1px solid #999; min-width: 300px; overflow: auto; } +.dialogl { padding: 5px; margin: 3px 0 20px; border: 1px solid #DDD; background: #F5F5E9; } +.dialogshare li { float: left; margin: 5px 10px 0 0; } +.dialogshare a { display: block; width: 32px; height: 32px; background-image: url(//static.juick.com/sharesocial.png); } + +.dialogtxt { background: #EEEEE5; padding: 20px; } + +/********/ + +#wsthread { position: fixed; bottom: 20px; right: 20px; background: #CCC; cursor: pointer; padding: 5px 10px; display: none; } + +/********/ + +#footer { clear: both; font-size: 10pt; padding: 10px 0; color: #999; width: 1004px; margin: 0 auto 20px 0; } +#footer-social { float: left; } +#footer-social a { display: inline-block; width: 32px; height: 32px; text-indent: 100%; white-space: nowrap; overflow: hidden; border: 0; margin: 0 15px 0 0; } +#footer-left { margin-left: 286px; margin-right: 350px; } +#footer-right { float: right; } + +/******************************************************************************/ + +.sharenew { display: inline-block; padding: 0 12px 0 37px; min-height: 32px; line-height: 32px; min-width: 200px; color: #FFF; } + +.ico32-twi { background: #55acee url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAM9QTFRFVazuVqzuV6zuWK3uWq7uXK/uXrDuYLHvY7PvZLPvZrTvZ7Tva7bwbLfwbbjwbrjwcbnwc7rxdbvxer7xfL/xf8Dyg8LyhcPyhsTyh8TzisXzi8bzjcfzjsfzksn0qNT1rNb2udz3v+D4weD4weH4w+H5w+L5yuT5yuX5y+X5zuf60ej51er61uv62uz62+374O/75fL76PP86vT87PX87vb87/f98Pf88Pf98fj99Pn99vr99/v++Pv9+vz9+/z9/P39/f39/f7+/v7+////bJnt2AAAAKlJREFUGBntwUdWAkEABNAaQJIOkpMSJCcDKEEJ2lTd/0wyD1bdbFiw43/g5kIJHJXf/2b1u2fY/IWPQO1botiBraBFNQqE2zIy3L/CFl9Tg6dUbiyjAx+2WE8kl29zBfZwZD5+xYDRwTQEW2RCUkfkiwdHerilTpiHK9zXCTWKwOWVVjSUZPiTxVnJJimRu6oH1/1DpbURjfRZDOGMx+7WkNRXI4Gba/gHx4AiZYtLseAAAAAASUVORK5CYII=") no-repeat; } +.ico32-vk { background: #6d8fb3 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAHJQTFRFbY+zbo+zbpCzb5C0cpO1c5O2dZW3dpa4e5m6gJ29gZ69lq/In7bNo7jPrcDUs8XXvs3dv87dy9fkztnlz9rm0Nrm093o1N7o1+Dq3OTt3ubu4Ofv5Orw7fH27vL28PP38vX49Pb5+vv8+/z9/Pz9////2jSYlQAAAG5JREFUOMvtkEcOgDAMBE3vvXdIyP+/iMMRKfYHmMtcRtE6AD8f1Is8pyKgAs0RGYO2HSWqMQaoBHVRgYsS3AsrtyFlrqgdJlCLb95gxQO6IkZCqL+KCjz0TQU5ejOf2a3aJXPF7BOB2PvMhp8PDzGRFgEe7xvEAAAAAElFTkSuQmCC") no-repeat; } +.ico32-fb { background: #3b579d url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAADNQTFRFO1edX3ewl6bLnKrOoK3QrrrYvMXe2N7r3OLu3+Tv5urz7O/29vf6+Pn7+vv9/Pz9////ykQjsQAAAEZJREFUOMtjYBgFuAATO68ADxdOaUYuATDAqYBbAL8CFgECCjiBcqz4XMiPz3oQEKCtAgEkwEdIAQchBWyEFDAPkDdHsAIAhZkIwz/VK/UAAAAASUVORK5CYII=") no-repeat; } +.ico32-lj { background: #888888 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAAXNSR0IArs4c6QAAAlJQTFRFAAAAAAAAAFVVADNmACRtAEBgADNmADdtADBgADljADNmADFiADFjADVpADJjADRpADRoADFnADNmADJkADVlADJnADRnADJlADJnADJlADRnADNmADJnADNmADJmADRmADNlADRmADNnADNmADJmADRmADNmADRmADJmADNlADNmADNmADJmADNnADNlADNnADNmADNlADNmADNmADNmBTRmADNmADNmADNmWGh4ADNmBDZnK1J6LWCURmiIRmmLc4mfADNmKlyPADNmGkNsLF+SKFiIR3qtL1Z+ATRnDT9xE0Z5Gk2BN2ueOVh1UIO2DkFzE0Z5JVeLK1J5M2WYPlp1T3ehJEpuADNmK16QPG+iQHOmRFxze35/ADNmLV+SjIeCMVl/TmJ4BThqBzZnR3mtBjpsWo7AZ4KeFENxH0h0bJ7SADNmAzZpHz9sAzdqCzppEkBvF0RyO1+EP3OmBDZodKbafWR+ATRoDjlpQ3epADNmATNlDDdoQWOGaJvOBDVmBDZoQWWKRnmrUoS3AzZqBzdoWFZ4cKTVc4mgADNmBjdmCzhoVom5W47CADNmADNnAzRnBjVoWlh5opSHADNmATRlATRmCDlqcaXYh7rtADNmWYy/XI/CXpLFYZTHY5bJZZjLZpjLZpnMb2B9cmB8hbjrhp2zibvvjL7ylMj6l8r9l8v9mY6Fmcz/qneIrba+snqKuaKLwKeMxMbIx8jJy8vLzMzM1LOQ1dXV1d3m2YqR4LmS4uju7sGW78KV8cSX+fn5+smY/cqZ/f39/8yZQ9icRAAAAJt0Uk5TAAEDBQcICg4QEhkaHyIkJyw0QUJESE9RUlZeX2Fpa2x5e4GHiYqMmZ2rr7S2uL/Cw8nNzs/R19/g4OPj4+fn5+fo6Onp6erq6+zs7Ozs7Ozt7e3t7e3t7u/v7+/v7/Dw8PHx8vLy8/Pz9PT09fX19vb29vb29/f3+Pj4+fn5+fn6+vr6+vv7+/v7/Pz8/Pz9/f39/f3+/v7+/v7uuPuRAAABVElEQVQ4y83QU3sDURCA4U2dOrVtpbZt27Ztt2lTY6tTnxpb2/pf3dxPcp3vdt5n5jyHIIQpKSOXZS91/nPN4p6FvckuFr+5Hrn/wpmvbHBnwnMWt+1qdPD563LAhgECu9qLufGn37fDRmQIgm5Oh//DXflKaFkyVxkCDqT3w23ByCpFnUQFyQBAsTr8vjeyM46iqIM6e1FAaKGmlmkc00qLPtIMOmKOMjDeDTymRRapAQBxx6INjDd9zijqNDpXHhBy6Qk7GA+H0SuOSp0lAKFG5mGMM6toMTZrAT3DhByiRcgaLUqQDgBE2DXrGG9V+KX6FgazoRXSAfHbGMe+P378eXiCP67ETcQ45Y8uf0YMFAaoeSqHB66RAggY1u1JnzzwilRBQDDdlrJvaPDTrwsDQlLfFaUtfp9PmBL8YqhYcesRsiQEJGscgZwIgYlp2xJC0z8XJH2ZPhmkKgAAAABJRU5ErkJggg==") no-repeat; } +.ico32-gp { background: #dc4a38 url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAAAXNSR0IArs4c6QAAAa9JREFUSMftlTFoU1EUhr/3EguZFFzSIVVehyq03dxEJy3iIiJCi4Nr6eQmLoKggg46CaKj6FBB0OIgXcRJiQiKiFIf2KEJVsSCTWlN+Bx8eaQtaa5Dt57tP+/+/33n3P/cCzuxPeFh7/nRFdvxxtFw8m4f+tojJl62qT4xsRBOj511yT0Zuqjq5P/8/Lj6LEd9LqoLRt0Z8QY8Dqy2QbTGI6CfSrjAADDYgd8BUAgXWABG3Z/jH8Ai81lJE97pJfAYiJnK8RBwJWplaISTvZpYcEZteh7AQ9a90fH1ut96n0Ofl0zVOT/Y8mZurapVa65atert7iUQrUXXooQS9xkm5m6WbpCS8osmKSn1EEdcVfVWpweCSsgXH7Ch6rSlrQSKm9vICY4xxF5qVNjFGcqORQ0AXrLUa98x55x30oPG4LCfVDubtjX9tE2/tEcpm81XasNiCL1oTT23Idvvb7USYuURypmZO4+1xnv+8DNE4N8UHt20Zh9Po+WwHrxVGx5fl7tg3YHunHVXhYO8IEFmeE7KCglnKTMRfQ63T8kpZ/1uy2W/+sBTxjuPzLbHX6Ju9rcCQGEmAAAAAElFTkSuQmCC") no-repeat; } + +/******************************************************************************/ + +@media screen and (max-width: 850px) { + body { text-size-adjust: 100%; -webkit-text-size-adjust: 100%;} + body,body>header,#topwrapper,#content,#footer,#mtoolbar { width: auto; min-width: 310px; margin: 0 auto; } + + body>header { margin-bottom: 15px; } + body>header a { font-size: 12pt; } + #logo { display: none; } + nav#global { margin-left: 10px; } + nav#global li { margin-right: 10px; } + #search { float: none; display: inline-block; margin: 10px 10px; } + #headdiv { padding: 0 10px; } + #headdiv li { margin-right: 10px; } + nav#actions { position: relative; right: auto; } + #newmessage .img, #newmessage .tags { width: 100%; } + #column { /*float: none;*/ padding-top: 0; width: auto; margin: 0 10px; } + + article { margin-left: 0; overflow: auto; } + article>aside { margin: 0 10px 0 0; width: 40px; height: 40px; } + article>aside img { width: 40px; height: 40px; } + article>header.u { margin: 0; width: auto; display: block; } + article>header.t { float: none; text-align: left; margin: 0; width: auto; display: block; } + article p { margin: 10px 0 8px 0; } + article>nav.l { display: block; float: left; width: 65%; line-height: 15pt; } + article>nav.s { display: block; } + article textarea { width: 205px; } + article footer { float: left; } + + #content textarea { width: 100%; } + + .msg,.msg-cont { width: auto; min-width: 280px; } + .msg-cont,.ads { margin-left: 0; } + .msg-avatar { margin: 10px 10px 0 10px; width: 40px; height: 40px; } + .msg-avatar img { width: 40px; height: 40px; } + .msg-comment textarea { width: 100%; } + .msg-txt { margin: 8px 0 0 0; } + .msg-media { overflow: auto; } + + .title2 h2 { font-size: large; } + + #footer { margin: 0 10px; } + #footer div { float: none; margin: 10px 0; } +}
\ No newline at end of file diff --git a/vnext/src/views/index.jade b/vnext/src/views/index.jade new file mode 100644 index 00000000..6fa70833 --- /dev/null +++ b/vnext/src/views/index.jade @@ -0,0 +1,22 @@ +doctype html +html(lang="ru") + head + meta(charset="utf-8") + title Sample + script(type="text/javascript", src="/webpack-dev-server.js") + script(type="text/javascript", src="vendor.bundle.js") + link(rel="stylesheet", type="text/css", href="style.css") + body + header + div(id="logo") + a(href="/") Juick + nav(id="global") + ul + li + a(href="/") Популярные + li + a(href="/?show=all", rel="nofollow") Все сообщения + div(id="search") + aside(id="column") + section(id="content") + script(type="text/javascript", src="app.js")
\ No newline at end of file diff --git a/vnext/webpack.config.js b/vnext/webpack.config.js new file mode 100644 index 00000000..8e2af202 --- /dev/null +++ b/vnext/webpack.config.js @@ -0,0 +1,34 @@ +var webpack = require("webpack"); +var ExtractTextPlugin = require("extract-text-webpack-plugin"); +module.exports = { + devtool: 'eval', + entry: { + "vendor": ['react', 'react-dom', 'whatwg-fetch'], + "app": [ + 'file?name=index.html!jade-html!./src/views/index.jade', + __dirname + "/src/app.js", + __dirname + "/src/style/main.css", + 'webpack-dev-server/client?http://localhost:3000', + 'webpack/hot/only-dev-server' + ] + }, + output: { + path: __dirname + "/public", + filename: "[name].js" + }, + module: { + loaders: [ + { test: /\.css$/, loader: ExtractTextPlugin.extract("style-loader", "css-loader") }, + { test: /\.js(x?)$/, exclude: /node_modules/, loader: "react-hot!babel" } + ] + }, + plugins: [ + new ExtractTextPlugin("style.css", { + allChunks: true + }), + new webpack.optimize.CommonsChunkPlugin( + "vendor", "vendor.bundle.js" + ), + new webpack.HotModuleReplacementPlugin() + ] +}; |