diff --git a/packages/base-components/lib/categories/list/CategoriesList.jsx b/packages/base-components/lib/categories/list/CategoriesList.jsx
index 73c9a10cf..0bbb550d3 100644
--- a/packages/base-components/lib/categories/list/CategoriesList.jsx
+++ b/packages/base-components/lib/categories/list/CategoriesList.jsx
@@ -1,15 +1,23 @@
import Router from "../../router.js"
+import { DropdownButton, MenuItem } from 'react-bootstrap';
-const CategoriesList = (props) => {
+const CategoriesList = ({categories}) => {
return (
-
Categories
-
- {props.results.map(category =>
- - {category.name}
+
+
+ {categories.map((category, index) =>
+
)}
-
+
)
diff --git a/packages/base-components/lib/common/Flash.jsx b/packages/base-components/lib/common/Flash.jsx
index a231ac79f..d30458855 100644
--- a/packages/base-components/lib/common/Flash.jsx
+++ b/packages/base-components/lib/common/Flash.jsx
@@ -1,4 +1,5 @@
import React, { PropTypes, Component } from 'react';
+import { Alert } from 'react-bootstrap';
import Core from "meteor/nova:core";
const Messages = Core.Messages;
@@ -10,10 +11,14 @@ class Flash extends Component{
}
render() {
+
+ let type = this.props.message.type;
+ type = type === "error" ? "danger" : type; // if type is "error", use "danger" instead
+
return (
-
-
{this.props.message.content}
-
+
+ {this.props.message.content}
+
)
}
}
diff --git a/packages/base-components/lib/common/Header.jsx b/packages/base-components/lib/common/Header.jsx
index f485f37b0..6ce9ea038 100644
--- a/packages/base-components/lib/common/Header.jsx
+++ b/packages/base-components/lib/common/Header.jsx
@@ -1,52 +1,33 @@
import NoSSR from 'react-no-ssr';
import Router from '../router.js'
import Core from "meteor/nova:core";
-import { Button } from 'react-bootstrap';
const Messages = Core.Messages;
const Header = ({currentUser}) => {
- ({Logo, ListContainer, CategoriesList, FlashContainer, FlashMessages, ModalTrigger, NewDocContainer, CanCreatePost, CurrentUserContainer, NewsletterForm, SearchForm} = Telescope.components);
+ ({Logo, ListContainer, CategoriesList, NewPostButton} = Telescope.components);
const logoUrl = Telescope.settings.get("logoUrl");
const siteTitle = Telescope.settings.get("title", "Telescope");
const tagline = Telescope.settings.get("tagline");
return (
-
-
-
- {tagline ?
{tagline}
: "" }
-
+
)
}
diff --git a/packages/base-components/lib/common/Layout.jsx b/packages/base-components/lib/common/Layout.jsx
index a93741ce9..ebcadc318 100644
--- a/packages/base-components/lib/common/Layout.jsx
+++ b/packages/base-components/lib/common/Layout.jsx
@@ -1,14 +1,24 @@
const Layout = props => {
- ({Header, Footer} = Telescope.components);
+ ({Header, Footer, FlashContainer, FlashMessages, NewsletterForm} = Telescope.components);
return (
+
+
+
+
+
+
+
{props.children}
+
+
+
)
}
diff --git a/packages/base-components/lib/common/NewPostButton.jsx b/packages/base-components/lib/common/NewPostButton.jsx
new file mode 100644
index 000000000..ec2457f2e
--- /dev/null
+++ b/packages/base-components/lib/common/NewPostButton.jsx
@@ -0,0 +1,30 @@
+import React, { PropTypes, Component } from 'react';
+import { Button } from 'react-bootstrap';
+
+const NewPostButton = (props, context) => {
+
+ ({ModalTrigger, NewDocContainer, CanCreatePost} = Telescope.components);
+
+ return (
+ New Post}>
+
+ {
+ Messages.flash("Post created.", "success");
+ Router.go('posts.single', post);
+ }}
+ />
+
+
+ )
+}
+
+NewPostButton.contextTypes = {
+ currentUser: React.PropTypes.object
+};
+
+module.exports = NewPostButton;
+export default NewPostButton;
\ No newline at end of file
diff --git a/packages/base-components/lib/common/NewsletterForm.jsx b/packages/base-components/lib/common/NewsletterForm.jsx
index b209c93df..cd1f1f88e 100644
--- a/packages/base-components/lib/common/NewsletterForm.jsx
+++ b/packages/base-components/lib/common/NewsletterForm.jsx
@@ -42,12 +42,13 @@ class NewsletterForm extends Component {
renderForm() {
return (
-
+
@@ -56,7 +57,7 @@ class NewsletterForm extends Component {
renderButton() {
return (
-
+
)
}
@@ -64,8 +65,8 @@ class NewsletterForm extends Component {
if (Telescope.settings.get("showBanner", true)) {
return (
-
{this.props.headerText}
- {this.props.currentUser ? this.renderButton() : this.renderForm()}
+ {this.props.headerText}
+ {this.context.currentUser ? this.renderButton() : this.renderForm()}
)
} else {
@@ -75,7 +76,6 @@ class NewsletterForm extends Component {
}
NewsletterForm.propTypes = {
- currentUser: React.PropTypes.object,
headerText: React.PropTypes.string,
labelText: React.PropTypes.string,
buttonText: React.PropTypes.string,
@@ -89,5 +89,9 @@ NewsletterForm.defaultProps = {
successMessage: "Thanks for subscribing!"
};
+NewsletterForm.contextTypes = {
+ currentUser: React.PropTypes.object
+};
+
module.exports = NewsletterForm;
export default NewsletterForm;
\ No newline at end of file
diff --git a/packages/base-components/lib/components.js b/packages/base-components/lib/components.js
index 62e3882e9..0f3801ab1 100644
--- a/packages/base-components/lib/components.js
+++ b/packages/base-components/lib/components.js
@@ -9,6 +9,7 @@ Telescope.registerComponent("FlashMessages", require('./common/FlashMessages.jsx
Telescope.registerComponent("NewsletterForm", require('./common/NewsletterForm.jsx'));
Telescope.registerComponent("Icon", require('./common/Icon.jsx'));
Telescope.registerComponent("SearchForm", require('./common/SearchForm.jsx'));
+Telescope.registerComponent("NewPostButton", require('./common/NewPostButton.jsx'));
// posts
diff --git a/packages/base-components/lib/posts/PostStats.jsx b/packages/base-components/lib/posts/PostStats.jsx
index d5d3a19df..0d6b39e44 100644
--- a/packages/base-components/lib/posts/PostStats.jsx
+++ b/packages/base-components/lib/posts/PostStats.jsx
@@ -4,10 +4,10 @@ const PostStats = ({post}) => {
return (
- {post.score ? {Math.floor(post.score*10000)/10000} Score : ""}
- {post.upvotes} Upvotes
- {post.clickCount} Clicks
- {post.viewCount} Views
+ {post.score ? {Math.floor(post.score*10000)/10000} Score : ""}
+ {post.upvotes} Upvotes
+ {post.clickCount} Clicks
+ {post.viewCount} Views
)
}
diff --git a/packages/base-components/lib/posts/Vote.jsx b/packages/base-components/lib/posts/Vote.jsx
index e168c4f34..eee61846a 100644
--- a/packages/base-components/lib/posts/Vote.jsx
+++ b/packages/base-components/lib/posts/Vote.jsx
@@ -47,7 +47,7 @@ class Vote extends Component {
Upvote
- {post.baseScore}
+ {post.baseScore || 0}
)
diff --git a/packages/base-components/lib/posts/list/PostItem.jsx b/packages/base-components/lib/posts/list/PostItem.jsx
index 1e0cda895..8bfb28bc1 100644
--- a/packages/base-components/lib/posts/list/PostItem.jsx
+++ b/packages/base-components/lib/posts/list/PostItem.jsx
@@ -69,6 +69,7 @@ class PostItem extends Component {
{moment(post.postedAt).fromNow()}
+
{this.renderActions()}
diff --git a/packages/base-components/lib/posts/list/PostListHeader.jsx b/packages/base-components/lib/posts/list/PostListHeader.jsx
index 65bba5968..65016efc0 100644
--- a/packages/base-components/lib/posts/list/PostListHeader.jsx
+++ b/packages/base-components/lib/posts/list/PostListHeader.jsx
@@ -1,8 +1,16 @@
const PostListHeader = () => {
- ({PostViews, SearchForm} = Telescope.components)
+ ({PostViews, SearchForm, ListContainer, CategoriesList} = Telescope.components)
- return
+ return (
+
+ )
}
module.exports = PostListHeader;
diff --git a/packages/base-components/lib/posts/list/PostViews.jsx b/packages/base-components/lib/posts/list/PostViews.jsx
index c010687e9..4ef33a98d 100644
--- a/packages/base-components/lib/posts/list/PostViews.jsx
+++ b/packages/base-components/lib/posts/list/PostViews.jsx
@@ -12,17 +12,26 @@ const PostViews = (props, context) => {
}
const currentRoute = context.currentRoute;
+ const currentView = currentRoute.queryParams.view || props.defaultView;
// console.log(currentRoute);
return (
- {views.map(view => )}
+ {views.map(view => )}
)
}
+PostViews.propTypes = {
+ defaultView: React.PropTypes.string
+}
+
+PostViews.defaultProps = {
+ defaultView: "top"
+}
+
PostViews.contextTypes = {
currentRoute: React.PropTypes.object
};
diff --git a/packages/base-styles/lib/stylesheets/_cheatsheet.scss b/packages/base-styles/lib/stylesheets/_cheatsheet.scss
new file mode 100644
index 000000000..f530a0c69
--- /dev/null
+++ b/packages/base-styles/lib/stylesheets/_cheatsheet.scss
@@ -0,0 +1,35 @@
+
+.cheatsheet h1{
+ margin-bottom: 20px;
+}
+.cheatsheet-wrapper{
+ display: flex;
+}
+.cheatsheet-block{
+ flex: 1;
+ margin-right: 20px;
+}
+.cheatsheet-block:last-of-type{
+ margin-right: 0;
+}
+
+.cheatsheet ul{
+ list-style-type: none;
+ margin-bottom: 20px;
+ padding-left: 0px;
+}
+.cheatsheet ul li{
+ margin-bottom: 10px;
+}
+.cheatsheet h2{
+ margin-bottom: 10px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #ddd;
+}
+.cheatsheet h3{
+ margin-bottom: 10px;
+ font-weight: bold;
+}
+.cheatsheet code{
+ font-size: 13px;
+}
\ No newline at end of file
diff --git a/packages/base-styles/lib/stylesheets/_common.scss b/packages/base-styles/lib/stylesheets/_common.scss
deleted file mode 100644
index ff8fd6b51..000000000
--- a/packages/base-styles/lib/stylesheets/_common.scss
+++ /dev/null
@@ -1,3 +0,0 @@
-.footer{
- text-align: center;
-}
\ No newline at end of file
diff --git a/packages/base-styles/lib/stylesheets/_global.scss b/packages/base-styles/lib/stylesheets/_global.scss
index 99fc3fed9..4fcbf7492 100644
--- a/packages/base-styles/lib/stylesheets/_global.scss
+++ b/packages/base-styles/lib/stylesheets/_global.scss
@@ -1,3 +1,13 @@
body{
font-family: "Source Sans Pro", "Helvetica Neue", "Helvetica", sans-serif;
+}
+
+.main, .footer, .header{
+ margin-left: auto;
+ margin-right: auto;
+ max-width: 1200px;
+}
+
+.main{
+ margin-bottom: $vmargin;
}
\ No newline at end of file
diff --git a/packages/base-styles/lib/stylesheets/_header.scss b/packages/base-styles/lib/stylesheets/_header.scss
new file mode 100644
index 000000000..5b53a9fe4
--- /dev/null
+++ b/packages/base-styles/lib/stylesheets/_header.scss
@@ -0,0 +1,4 @@
+.header-wrapper{
+ background: $light-grey;
+ margin-bottom: $vmargin;
+}
\ No newline at end of file
diff --git a/packages/base-styles/lib/stylesheets/_newsletter.scss b/packages/base-styles/lib/stylesheets/_newsletter.scss
index d3b96d67f..51da88767 100644
--- a/packages/base-styles/lib/stylesheets/_newsletter.scss
+++ b/packages/base-styles/lib/stylesheets/_newsletter.scss
@@ -2,4 +2,21 @@
background: $white;
border: 1px solid $light-border;
border-radius: 3px;
+ @include flex-center;
+ justify-content: center;
+ padding: $vmargin $hmargin;
+ margin-bottom: $vmargin;
+ .newsletter-tagline{
+ margin: 0 $hmargin 0 0;
+ font-size: 1.35rem;
+ }
+ .newsletter-button{
+
+ }
+ .newsletter-form{
+ @include flex-center;
+ .form-control{
+ margin: 0 5px 0 0;
+ }
+ }
}
\ No newline at end of file
diff --git a/packages/base-styles/lib/stylesheets/_other.scss b/packages/base-styles/lib/stylesheets/_other.scss
new file mode 100644
index 000000000..fc8014019
--- /dev/null
+++ b/packages/base-styles/lib/stylesheets/_other.scss
@@ -0,0 +1,10 @@
+.footer{
+ text-align: center;
+ margin-bottom: $vmargin;
+}
+
+.search-form{
+ .form-group{
+ margin-bottom: 0;
+ }
+}
\ No newline at end of file
diff --git a/packages/base-styles/lib/stylesheets/_posts.scss b/packages/base-styles/lib/stylesheets/_posts.scss
index f7b2e18e7..885fa186c 100644
--- a/packages/base-styles/lib/stylesheets/_posts.scss
+++ b/packages/base-styles/lib/stylesheets/_posts.scss
@@ -1,15 +1,15 @@
.post-list-header{
- display: flex;
- align-items: center;
+ @include flex-center;
justify-content: space-between;
+ margin-bottom: $vmargin;
}
.post-views{
a{
- border: 1px solid $light-border;
+ @include border;
@include blueHover;
- // border-radius: 3px;
+ // @include border-radius;
// padding: 3px 5px;
// margin-right: 5px;
&.post-view-active{
@@ -18,16 +18,15 @@
}
}
.post-list-content{
- border-top: 1px solid $light-border;
+ border-top: $border;
// padding-top: 15px;
// margin-top: 15px;
margin-bottom: $vmargin;
}
.post-item{
- display: flex;
- align-items: center;
- border-bottom: 1px solid $light-border;
+ @include flex-center;
+ border-bottom: $border;
padding: $vmargin 5px;
// margin-bottom: 15px;
&.post-sticky{
@@ -41,11 +40,10 @@
}
.upvote-button{
- border: 1px solid $light-border;
- border-radius: 3px;
- display: flex;
+ @include border;
+ @include border-radius;
+ @include flex-center;
flex-direction: column;
- align-items: center;
justify-content: center;
padding: 3px 5px;
.icon{
@@ -72,8 +70,7 @@
.post-title{
font-size: 1.35rem;
margin-bottom: 5px;
- display: flex;
- align-items: center;
+ @include flex-center;
.post-title-link{
color: $black;
&, &:active, &:hover{
@@ -83,14 +80,13 @@
}
.post-categories{
- display: flex;
- align-items: center;
+ @include flex-center;
margin-left: 5px;
a{
display: block;
font-size: 0.8rem;
- border: 1px solid $light-grey;
- border-radius: 3px;
+ @include border;
+ @include border-radius;
margin-right: 5px;
padding: 2px 6px;
@include blueHover;
@@ -99,23 +95,25 @@
.post-meta{
font-size: 0.9rem;
- display: flex;
- align-items: center;
- .user-avatar, .user-name, .post-date, .post-stats, .post-actions{
+ @include flex-center;
+ .user-avatar{
margin-right: 5px;
}
+ .user-name, .post-date, .post-comments, .post-stats, .post-actions{
+ margin-right: $hmargin;
+ }
}
-.post-date{
+.post-date, .post-comments{
color: $medium-text;
}
.post-stats{
- border: 1px solid $light-border;
- border-radius: 3px;
+ @include border;
+ @include border-radius;
font-size: 0.8rem;
- >span{
- border-right: 1px solid $light-border;
+ .post-stat{
+ border-right: $border;
padding: 2px 5px;
display: inline-block;
&:last-child{
@@ -125,13 +123,11 @@
}
.post-actions{
- display: flex;
- align-items: center;
+ @include flex-center;
}
.post-comments{
- display: flex;
- align-items: center;
+ @include flex-center;
}
.post-commenters{
@@ -143,8 +139,8 @@
.post-load-more{
display: block;
text-align: center;
- border: 1px solid $light-border;
- border-radius: 3px;
+ @include border;
+ @include border-radius;
font-size: 1.25rem;
padding: 10px 20px;
@include blueHover;
diff --git a/packages/base-styles/lib/stylesheets/_variables.scss b/packages/base-styles/lib/stylesheets/_variables.scss
index 09fc0de3e..be8f0b1db 100644
--- a/packages/base-styles/lib/stylesheets/_variables.scss
+++ b/packages/base-styles/lib/stylesheets/_variables.scss
@@ -1,6 +1,8 @@
$hmargin: 10px;
$vmargin: 15px;
+$border: 1px solid $light-border;
+
@mixin blueHover{
&:hover{
background: $blue;
@@ -8,4 +10,17 @@ $vmargin: 15px;
border-color: $blue;
text-decoration: none;
}
-}
\ No newline at end of file
+}
+
+@mixin flex-center{
+ display: flex;
+ align-items: center;
+}
+
+@mixin border-radius{
+ border-radius: .25rem;
+}
+@mixin border{
+ border: $border;
+}
+
diff --git a/packages/base-styles/lib/stylesheets/main.scss b/packages/base-styles/lib/stylesheets/main.scss
index e9f7a07cc..5cef931f1 100644
--- a/packages/base-styles/lib/stylesheets/main.scss
+++ b/packages/base-styles/lib/stylesheets/main.scss
@@ -4,45 +4,37 @@
@import "global";
@import "categories";
+@import "cheatsheet";
@import "comments";
-@import "common";
+@import "header";
@import "newsletter";
+@import "other";
@import "posts";
body{
- background: #eee;
color: $black;
}
-.wrapper{
- padding: 15px;
-}
-
-.main{
- background: #fff;
- padding: 15px;
- margin: 10px 0;
- border: 1px #ccc solid;
-}
-.post-views, .logo, .nav, .alt-accounts-log-in-buttons{
- margin-bottom: 15px;
-}
-.post-views ul, .categories ul, .post-categories ul, .post-commenters ul{
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
+// .post-views, .logo, .nav, .alt-accounts-log-in-buttons{
+// margin-bottom: 15px;
+// }
-.post-views li, .categories li, .post-categories li, .post-commenters li{
- display: inline-block;
- margin-right: 5px;
- border: 1px solid #ddd;
- padding: 3px 5px;
- background: #efefef;
-}
+// .post-views ul, .categories ul, .post-categories ul, .post-commenters ul{
+// list-style-type: none;
+// margin: 0;
+// padding: 0;
+// }
+
+// .post-views li, .categories li, .post-categories li, .post-commenters li{
+// display: inline-block;
+// margin-right: 5px;
+// border: 1px solid #ddd;
+// padding: 3px 5px;
+// background: #efefef;
+// }
.comment-node{
border-left: 10px #efefef solid;
@@ -69,40 +61,6 @@ code{
padding: 3px 6px;
}
-.cheatsheet h1{
- margin-bottom: 20px;
-}
-.cheatsheet-wrapper{
- display: flex;
-}
-.cheatsheet-block{
- flex: 1;
- margin-right: 20px;
-}
-.cheatsheet-block:last-of-type{
- margin-right: 0;
-}
-
-.cheatsheet ul{
- list-style-type: none;
- margin-bottom: 20px;
- padding-left: 0px;
-}
-.cheatsheet ul li{
- margin-bottom: 10px;
-}
-.cheatsheet h2{
- margin-bottom: 10px;
- padding-bottom: 10px;
- border-bottom: 1px solid #ddd;
-}
-.cheatsheet h3{
- margin-bottom: 10px;
- font-weight: bold;
-}
-.cheatsheet code{
- font-size: 13px;
-}
.avatar{
height: 24px;
diff --git a/packages/base-styles/package.js b/packages/base-styles/package.js
index 0f0953a44..99a52dbd6 100644
--- a/packages/base-styles/package.js
+++ b/packages/base-styles/package.js
@@ -25,8 +25,10 @@ Package.onUse(function (api) {
'lib/stylesheets/_variables.scss',
'lib/stylesheets/_global.scss',
'lib/stylesheets/_categories.scss',
+ 'lib/stylesheets/_cheatsheet.scss',
'lib/stylesheets/_comments.scss',
- 'lib/stylesheets/_common.scss',
+ 'lib/stylesheets/_header.scss',
+ 'lib/stylesheets/_other.scss',
'lib/stylesheets/_posts.scss',
'lib/stylesheets/_newsletter.scss',
'lib/stylesheets/_users.scss',