From 54d771205c02f59b76a2405a44fe5a9a02206c3b Mon Sep 17 00:00:00 2001 From: Dustin Hoffmann Date: Thu, 25 Jan 2018 14:46:39 +0100 Subject: [PATCH] Restructured project --- .meteor/packages | 9 +- .meteor/versions | 10 +- client/main.css | 126 ------ client/main.html | 2 +- client/main.js | 6 +- client/main.less | 20 + i18n/en.i18n.json | 20 + imports/api/recipients.js | 28 -- imports/api/recipients/methods.js | 44 +++ imports/api/recipients/recipients.js | 68 ++++ imports/api/recipients/server/publications.js | 14 + imports/startup/client/index.js | 1 + imports/startup/client/routes.js | 18 + imports/startup/server/fixtures.js | 13 + imports/startup/server/index.js | 4 + imports/startup/server/register-api.js | 2 + imports/startup/server/security.js | 40 ++ .../useraccounts-configuration.js} | 0 imports/ui/App.js | 43 -- imports/ui/components/BaseComponent.js | 26 ++ .../ui/components/ConnectionNotification.js | 22 ++ .../ui/components/ConnectionNotification.less | 57 +++ imports/ui/components/Loading.js | 17 + imports/ui/components/Loading.less | 8 + imports/ui/components/Message.js | 16 + imports/ui/components/Message.less | 20 + imports/ui/containers/AppContainer.js | 14 + imports/ui/layouts/App.js | 75 ++++ imports/ui/layouts/App.less | 82 ++++ imports/ui/pages/NotFoundPage.js | 21 + imports/ui/pages/NotFoundPage.less | 5 + imports/ui/stylesheets/base.less | 77 ++++ imports/ui/stylesheets/button.less | 55 +++ imports/ui/stylesheets/fade-transition.less | 17 + imports/ui/stylesheets/form.less | 119 ++++++ imports/ui/stylesheets/link.less | 12 + imports/ui/stylesheets/nav.less | 41 ++ imports/ui/stylesheets/reset.less | 135 +++++++ imports/ui/stylesheets/util/fontface.less | 24 ++ imports/ui/stylesheets/util/helpers.less | 9 + imports/ui/stylesheets/util/text.less | 21 + imports/ui/stylesheets/util/typography.less | 63 +++ imports/ui/stylesheets/util/variables.less | 21 + imports/ui/stylesheets/utils.less | 5 + package-lock.json | 366 ++++++++++++++++++ package.json | 7 +- public/font/OpenSans-Light-webfont.eot | Bin 0 -> 29794 bytes public/font/OpenSans-Light-webfont.svg | 252 ++++++++++++ public/font/OpenSans-Light-webfont.ttf | Bin 0 -> 29612 bytes public/font/OpenSans-Light-webfont.woff | Bin 0 -> 19396 bytes public/font/OpenSans-Regular-webfont.eot | Bin 0 -> 29934 bytes public/font/OpenSans-Regular-webfont.svg | 252 ++++++++++++ public/font/OpenSans-Regular-webfont.ttf | Bin 0 -> 29744 bytes public/font/OpenSans-Regular-webfont.woff | Bin 0 -> 19624 bytes public/logo_todos.svg | 51 +++ server/main.js | 17 +- 56 files changed, 2154 insertions(+), 221 deletions(-) delete mode 100644 client/main.css create mode 100644 client/main.less create mode 100644 i18n/en.i18n.json delete mode 100644 imports/api/recipients.js create mode 100644 imports/api/recipients/methods.js create mode 100644 imports/api/recipients/recipients.js create mode 100644 imports/api/recipients/server/publications.js create mode 100644 imports/startup/client/index.js create mode 100644 imports/startup/client/routes.js create mode 100644 imports/startup/server/fixtures.js create mode 100644 imports/startup/server/index.js create mode 100644 imports/startup/server/register-api.js create mode 100644 imports/startup/server/security.js rename imports/startup/{accounts-config.js => server/useraccounts-configuration.js} (100%) delete mode 100644 imports/ui/App.js create mode 100644 imports/ui/components/BaseComponent.js create mode 100644 imports/ui/components/ConnectionNotification.js create mode 100644 imports/ui/components/ConnectionNotification.less create mode 100644 imports/ui/components/Loading.js create mode 100644 imports/ui/components/Loading.less create mode 100644 imports/ui/components/Message.js create mode 100644 imports/ui/components/Message.less create mode 100644 imports/ui/containers/AppContainer.js create mode 100644 imports/ui/layouts/App.js create mode 100644 imports/ui/layouts/App.less create mode 100644 imports/ui/pages/NotFoundPage.js create mode 100644 imports/ui/pages/NotFoundPage.less create mode 100644 imports/ui/stylesheets/base.less create mode 100644 imports/ui/stylesheets/button.less create mode 100644 imports/ui/stylesheets/fade-transition.less create mode 100644 imports/ui/stylesheets/form.less create mode 100644 imports/ui/stylesheets/link.less create mode 100644 imports/ui/stylesheets/nav.less create mode 100644 imports/ui/stylesheets/reset.less create mode 100644 imports/ui/stylesheets/util/fontface.less create mode 100644 imports/ui/stylesheets/util/helpers.less create mode 100644 imports/ui/stylesheets/util/text.less create mode 100644 imports/ui/stylesheets/util/typography.less create mode 100644 imports/ui/stylesheets/util/variables.less create mode 100644 imports/ui/stylesheets/utils.less create mode 100644 public/font/OpenSans-Light-webfont.eot create mode 100644 public/font/OpenSans-Light-webfont.svg create mode 100644 public/font/OpenSans-Light-webfont.ttf create mode 100644 public/font/OpenSans-Light-webfont.woff create mode 100644 public/font/OpenSans-Regular-webfont.eot create mode 100644 public/font/OpenSans-Regular-webfont.svg create mode 100644 public/font/OpenSans-Regular-webfont.ttf create mode 100644 public/font/OpenSans-Regular-webfont.woff create mode 100644 public/logo_todos.svg diff --git a/.meteor/packages b/.meteor/packages index 9df95a1d..3772ec12 100644 --- a/.meteor/packages +++ b/.meteor/packages @@ -18,7 +18,14 @@ ecmascript@0.9.0 # Enable ECMAScript2015+ syntax in app code shell-server@0.3.0 # Server-side component of the `meteor shell` command planettraining:material-design-icons-font -react-meteor-data nimble:restivus accounts-password alanning:roles +mdg:validated-method +ddp-rate-limiter +universe:i18n +react-meteor-data +aldeed:collection2-core +aldeed:schema-deny +session +less diff --git a/.meteor/versions b/.meteor/versions index fc70b5ee..16e79991 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -1,6 +1,8 @@ accounts-base@1.4.2 accounts-password@1.5.0 alanning:roles@1.2.16 +aldeed:collection2-core@2.1.2 +aldeed:schema-deny@2.0.1 allow-deny@1.1.0 autoupdate@1.3.12 babel-compiler@6.24.7 @@ -39,9 +41,11 @@ http@1.3.0 id-map@1.0.9 jquery@1.11.10 launch-screen@1.1.1 +less@2.7.11 livedata@1.0.18 localstorage@1.2.0 logging@1.1.19 +mdg:validated-method@1.1.0 meteor@1.8.2 meteor-base@1.2.0 minifier-css@1.2.16 @@ -61,14 +65,17 @@ observe-sequence@1.0.16 ordered-dict@1.0.9 planettraining:material-design-icons-font@2.2.3 promise@0.10.0 +raix:eventemitter@0.1.3 random@1.0.10 rate-limit@1.0.8 react-meteor-data@0.2.15 +reactive-dict@1.2.0 reactive-var@1.0.11 reload@1.1.11 retry@1.0.9 routepolicy@1.0.12 service-configuration@1.0.11 +session@1.1.7 sha@1.0.9 shell-server@0.3.1 simple:json-routes@2.1.0 @@ -81,10 +88,11 @@ templating@1.3.2 templating-compiler@1.3.3 templating-runtime@1.3.2 templating-tools@1.1.2 -tmeasday:check-npm-versions@0.2.0 +tmeasday:check-npm-versions@0.3.1 tracker@1.1.3 ui@1.0.13 underscore@1.0.10 +universe:i18n@1.16.0 url@1.1.0 webapp@1.4.0 webapp-hashing@1.0.9 diff --git a/client/main.css b/client/main.css deleted file mode 100644 index ed5e77ec..00000000 --- a/client/main.css +++ /dev/null @@ -1,126 +0,0 @@ -/* CSS declarations go here */ -body { - font-family: sans-serif; - background-color: #315481; - background-image: linear-gradient(to bottom, #315481, #918e82 100%); - background-attachment: fixed; - - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - - padding: 0; - margin: 0; - - font-size: 14px; -} - -.container { - max-width: 600px; - margin: 0 auto; - min-height: 100%; - background: white; -} - -header { - background: #d2edf4; - background-image: linear-gradient(to bottom, #d0edf5, #e1e5f0 100%); - padding: 20px 15px 15px 15px; - position: relative; -} - -#login-buttons { - display: block; -} - -h1 { - font-size: 1.5em; - margin: 0; - margin-bottom: 10px; - display: inline-block; - margin-right: 1em; -} - -form { - margin-top: 10px; - margin-bottom: -10px; - position: relative; -} - -.new-task input { - box-sizing: border-box; - padding: 10px 0; - background: transparent; - border: none; - width: 100%; - padding-right: 80px; - font-size: 1em; -} - -.new-task input:focus{ - outline: 0; -} - -ul { - margin: 0; - padding: 0; - background: white; -} - -.delete { - float: right; - font-weight: bold; - background: none; - font-size: 1em; - border: none; - position: relative; -} - -li { - position: relative; - list-style: none; - padding: 15px; - border-bottom: #eee solid 1px; -} - -li .text { - margin-left: 10px; -} - -li.checked { - color: #888; -} - -li.checked .text { - text-decoration: line-through; -} - -li.private { - background: #eee; - border-color: #ddd; -} - -header .hide-completed { - float: right; -} - -.toggle-private { - margin-left: 5px; -} - -@media (max-width: 600px) { - li { - padding: 12px 15px; - } - - .search { - width: 150px; - clear: both; - } - - .new-task input { - padding-bottom: 5px; - } -} diff --git a/client/main.html b/client/main.html index f628b58a..432182eb 100644 --- a/client/main.html +++ b/client/main.html @@ -3,5 +3,5 @@ -
+
diff --git a/client/main.js b/client/main.js index 00f2bbf1..35d10dfb 100644 --- a/client/main.js +++ b/client/main.js @@ -1,9 +1,7 @@ -import React from 'react'; import { Meteor } from 'meteor/meteor'; import { render } from 'react-dom'; - -import App from '../imports/ui/App.js'; +import { renderRoutes } from '../imports/startup/client/routes.js'; Meteor.startup(() => { - render(, document.getElementById('render-target')); + render(renderRoutes(), document.getElementById('app')); }); diff --git a/client/main.less b/client/main.less new file mode 100644 index 00000000..c1ad01bb --- /dev/null +++ b/client/main.less @@ -0,0 +1,20 @@ +@import "{}/imports/ui/stylesheets/reset.less"; + +// Global namespace +@import "{}/imports/ui/stylesheets/base.less"; +@import '{}/imports/ui/stylesheets/button.less'; +@import '{}/imports/ui/stylesheets/form.less'; +@import '{}/imports/ui/stylesheets/link.less'; +@import '{}/imports/ui/stylesheets/nav.less'; +@import '{}/imports/ui/stylesheets/fade-transition.less'; + +// App layout +@import "{}/imports/ui/layouts/App.less"; + +// Pages +@import "{}/imports/ui/pages/NotFoundPage.less"; + +// Components +@import "{}/imports/ui/components/ConnectionNotification.less"; +@import "{}/imports/ui/components/Loading.less"; +@import "{}/imports/ui/components/Message.less"; diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json new file mode 100644 index 00000000..2ca160a6 --- /dev/null +++ b/i18n/en.i18n.json @@ -0,0 +1,20 @@ +{ + "components": { + "connectionNotification": { + "tryingToConnect": "Trying to connect", + "connectionIssue": "There seems to be a connection issue" + } + }, + "pages": { + "notFoundPage": { + "pageNotFound": "Page not found" + } + }, + "api": { + "recipients": { + "insert": { + "accessDenied": "Cannot add recipients without permissions" + } + } + } +} diff --git a/imports/api/recipients.js b/imports/api/recipients.js deleted file mode 100644 index 20d3a48a..00000000 --- a/imports/api/recipients.js +++ /dev/null @@ -1,28 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { Accounts } from "meteor/accounts-base" -import { Mongo } from 'meteor/mongo'; -import { check } from 'meteor/check'; - -export const Recipients = new Mongo.Collection('recipients'); - -Recipients.deny({ - insert() { return true; }, - update() { return true; }, - remove() { return true; }, -}); - -Meteor.methods({ - 'recipients.insert'(email) { - check(email, String); - - if(!this.userId) { - throw new Meteor.Error('not-authorized'); - } - - - /*Recipients.insert({ - email, - createdAt: new Date(), - });*/ - } -}); diff --git a/imports/api/recipients/methods.js b/imports/api/recipients/methods.js new file mode 100644 index 00000000..738c1bf2 --- /dev/null +++ b/imports/api/recipients/methods.js @@ -0,0 +1,44 @@ +import { Meteor } from 'meteor/meteor'; +import { _ } from 'meteor/underscore'; +import { ValidatedMethod } from 'meteor/mdg:validated-method'; +import SimpleSchema from 'simpl-schema'; +import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; +import { Roles } from 'meteor/alanning:roles'; + +import { Recipients } from './recipients.js'; + +export const insert = new ValidatedMethod({ + name: 'recipients.insert', + validate: Recipients.simpleSchema().pick(['email', 'customerId']).validator({ clean: true, filter: false }), + run({ email, customerId }) { + if(!this.userId || !Roles.userIsInRole(this.userId, ['admin'])) { + throw new Meteor.Error('recipients.insert.accessDenied', + 'Cannot add recipients without permissions'); + } + // TODO: Private+PublicKey + const recipient = { + email, + customerId, + createdAt: new Date(), + }; + + Recipients.insert(todo); + }, +}); + +// Get list of all method names on Recipients +const RECIPIENTS_METHODS = _.pluck([ + insert +], 'name'); + +if (Meteor.isServer) { + // Only allow 5 recipient operations per connection per second + DDPRateLimiter.addRule({ + name(name) { + return _.contains(RECIPIENTS_METHODS, name); + }, + + // Rate limit per connection ID + connectionId() { return true; }, + }, 5, 1000); +} diff --git a/imports/api/recipients/recipients.js b/imports/api/recipients/recipients.js new file mode 100644 index 00000000..d7854f57 --- /dev/null +++ b/imports/api/recipients/recipients.js @@ -0,0 +1,68 @@ +import { Mongo } from 'meteor/mongo'; +import SimpleSchema from 'simpl-schema'; + +class RecipientsCollection extends Mongo.Collection { + insert(recipient, callback) { + const ourRecipient = recipient; + ourRecipient.createdAt = ourRecipient.createdAt || new Date(); + const result = super.insert(ourRecipient, callback); + return result; + } + update(selector, modifier) { + const result = super.update(selector, modifier); + return result; + } + remove(selector) { + const result = super.remove(selector); + return result; + } +} + +export const Recipients = new RecipientsCollection('recipients'); + +// Deny all client-side updates since we will be using methods to manage this collection +Recipients.deny({ + insert() { return true; }, + update() { return true; }, + remove() { return true; }, +}); + +Recipients.schema = new SimpleSchema({ + _id: { + type: String, + regEx: SimpleSchema.RegEx.Id, + }, + email: { + type: String, + denyUpdate: true, + }, + customerId: { + type: String, + denyUpdate: false, + }, + privateKey: { + type: String, + max: 100, + denyUpdate: true, + }, + publicKey: { + type: String, + max: 100, + denyUpdate: true, + }, + createdAt: { + type: Date, + denyUpdate: true, + } +}); + +Recipients.attachSchema(Recipients.schema); + +// This represents the keys from Recipient objects that should be published +// to the client. If we add secret properties to Recipient objects, don't list +// them here to keep them private to the server. +Recipients.publicFields = { + customerId: 1, + publicKey: 1, + createdAt: 1 +}; diff --git a/imports/api/recipients/server/publications.js b/imports/api/recipients/server/publications.js new file mode 100644 index 00000000..8957daf6 --- /dev/null +++ b/imports/api/recipients/server/publications.js @@ -0,0 +1,14 @@ +import { Meteor } from 'meteor/meteor'; +import { Roles } from 'meteor/alanning:roles'; + +import { Recipients } from '../recipients.js'; + +Meteor.publish('recipients.all', function recipientsAll() { + if(!this.userId || !Roles.userIsInRole(this.userId, ['admin'])) { + return this.ready(); + } + + return Recipients.find({}, { + fields: Recipients.publicFields, + }); +}); diff --git a/imports/startup/client/index.js b/imports/startup/client/index.js new file mode 100644 index 00000000..b0b0f479 --- /dev/null +++ b/imports/startup/client/index.js @@ -0,0 +1 @@ +import './routes.js'; diff --git a/imports/startup/client/routes.js b/imports/startup/client/routes.js new file mode 100644 index 00000000..88e4f0e0 --- /dev/null +++ b/imports/startup/client/routes.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { BrowserRouter, Route, Switch } from 'react-router-dom' +import i18n from 'meteor/universe:i18n'; + +// route components +import AppContainer from '../../ui/containers/AppContainer.js'; +import NotFoundPage from '../../ui/pages/NotFoundPage.js'; + +i18n.setLocale('en'); + +export const renderRoutes = () => ( + + + + + + +); diff --git a/imports/startup/server/fixtures.js b/imports/startup/server/fixtures.js new file mode 100644 index 00000000..9b66e3f3 --- /dev/null +++ b/imports/startup/server/fixtures.js @@ -0,0 +1,13 @@ +import { Meteor } from 'meteor/meteor'; +import { Roles } from 'meteor/alanning:roles'; + +Meteor.startup(() => { + if(Meteor.users.find().count() === 0) { + id = Accounts.createUser({ + username: 'admin', + email: 'admin@sendeffect.de', + password: 'password' + }); + Roles.addUsersToRoles(id, 'admin'); + } +}); diff --git a/imports/startup/server/index.js b/imports/startup/server/index.js new file mode 100644 index 00000000..4ace9ded --- /dev/null +++ b/imports/startup/server/index.js @@ -0,0 +1,4 @@ +import './fixtures.js'; +import './register-api.js'; +import './useraccounts-configuration.js'; +import './security.js'; diff --git a/imports/startup/server/register-api.js b/imports/startup/server/register-api.js new file mode 100644 index 00000000..a1348105 --- /dev/null +++ b/imports/startup/server/register-api.js @@ -0,0 +1,2 @@ +import '../../api/recipients/methods.js'; +import '../../api/recipients/server/publications.js'; diff --git a/imports/startup/server/security.js b/imports/startup/server/security.js new file mode 100644 index 00000000..bcf52c51 --- /dev/null +++ b/imports/startup/server/security.js @@ -0,0 +1,40 @@ +import { Meteor } from 'meteor/meteor'; +import { DDPRateLimiter } from 'meteor/ddp-rate-limiter'; +import { _ } from 'meteor/underscore'; + +// Don't let people write arbitrary data to their 'profile' field from the client +Meteor.users.deny({ + update() { + return true; + }, +}); + +// Get a list of all accounts methods by running `Meteor.server.method_handlers` in meteor shell +const AUTH_METHODS = [ + 'login', + 'logout', + 'logoutOtherClients', + 'getNewToken', + 'removeOtherTokens', + 'configureLoginService', + 'changePassword', + 'forgotPassword', + 'resetPassword', + 'verifyEmail', + 'createUser', + 'ATRemoveService', + 'ATCreateUserServer', + 'ATResendVerificationEmail', +]; + +if (Meteor.isServer) { + // Only allow 2 login attempts per connection per 5 seconds + DDPRateLimiter.addRule({ + name(name) { + return _.contains(AUTH_METHODS, name); + }, + + // Rate limit per connection ID + connectionId() { return true; }, + }, 2, 5000); +} diff --git a/imports/startup/accounts-config.js b/imports/startup/server/useraccounts-configuration.js similarity index 100% rename from imports/startup/accounts-config.js rename to imports/startup/server/useraccounts-configuration.js diff --git a/imports/ui/App.js b/imports/ui/App.js deleted file mode 100644 index ed1351e4..00000000 --- a/imports/ui/App.js +++ /dev/null @@ -1,43 +0,0 @@ -import React, { Component } from 'react'; -import { withTracker } from 'meteor/react-meteor-data'; -import { Sois } from '../api/sois.js' -import Login from './Login.js'; -import Soi from './Soi.js'; - -class App extends Component { - renderSois() { - return ( - - ); - } - - componentDidMount() { - Meteor.call('recipients.insert', 'email'); - } - - render() { - return ( -
-
-

MailId

-
- - {this.props.currentUser?this.renderSois():} -
- ); - } -} - -export default withTracker(() => { - Meteor.subscribe('sois'); - console.log(Meteor.users); - return { - users: Meteor.users, - sois: Sois.find({}).fetch(), - currentUser: Meteor.user(), - }; -})(App); diff --git a/imports/ui/components/BaseComponent.js b/imports/ui/components/BaseComponent.js new file mode 100644 index 00000000..0b199aa2 --- /dev/null +++ b/imports/ui/components/BaseComponent.js @@ -0,0 +1,26 @@ +import { Component } from 'react'; +import i18n from 'meteor/universe:i18n'; + +class BaseComponent extends Component { + constructor(props) { + super(props); + this.state = { + locale: i18n.getLocale(), + }; + this.handleLocaleChange = this.handleLocaleChange.bind(this); + } + + componentWillMount() { + i18n.onChangeLocale(this.handleLocaleChange); + } + + componentWillUnmount() { + i18n.offChangeLocale(this.handleLocaleChange); + } + + handleLocaleChange(locale) { + this.setState({ locale }); + } +} + +export default BaseComponent; diff --git a/imports/ui/components/ConnectionNotification.js b/imports/ui/components/ConnectionNotification.js new file mode 100644 index 00000000..f26c6769 --- /dev/null +++ b/imports/ui/components/ConnectionNotification.js @@ -0,0 +1,22 @@ +import React from 'react'; +import i18n from 'meteor/universe:i18n'; + +const T = i18n.createComponent(); + +const ConnectionNotification = () => ( +
+
+ +
+
+ components.connectionNotification.tryingToConnect +
+
+ components.connectionNotification.connectionIssue +
+
+
+
+); + +export default ConnectionNotification; diff --git a/imports/ui/components/ConnectionNotification.less b/imports/ui/components/ConnectionNotification.less new file mode 100644 index 00000000..3a3b05ec --- /dev/null +++ b/imports/ui/components/ConnectionNotification.less @@ -0,0 +1,57 @@ +@import '{}/imports/ui/stylesheets/utils.less'; + +@-webkit-keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(359deg); } +} + + +// Notification message (e.g., when unable to connect) +.notifications { + .position(absolute, auto, auto, 10px, 50%, 280px); + transform: translate3d(-50%, 0, 0); + z-index: 1; + + @media screen and (min-width: 40em) { + transform: translate3d(0, 0, 0); + bottom: auto; + right: 1rem; + top: 1rem; + left: auto; + } + + .notification { + .font-s1; + background: rgba(51,51,51, .85); + color: @color-empty; + margin-bottom: .25rem; + padding: .5rem .75rem; + position: relative; + width: 100%; + + .icon-sync { + .position(absolute, 30%, auto, auto, 1rem); + animation: spin 2s infinite linear; + color: @color-empty; + font-size: 1.5em; + } + + .meta { + overflow: hidden; + padding-left: 3em; + + .title-notification { + .title-caps; + display: block; + } + + .description { + display: block; + } + } + } +} diff --git a/imports/ui/components/Loading.js b/imports/ui/components/Loading.js new file mode 100644 index 00000000..4fbb52de --- /dev/null +++ b/imports/ui/components/Loading.js @@ -0,0 +1,17 @@ +import React from 'react'; +import i18n from 'meteor/universe:i18n'; +import BaseComponent from './BaseComponent.js'; + +class Loading extends BaseComponent { + render() { + return ( + {i18n.__('components.loading.loading')} + ); + } +} + +export default Loading; diff --git a/imports/ui/components/Loading.less b/imports/ui/components/Loading.less new file mode 100644 index 00000000..dedaca93 --- /dev/null +++ b/imports/ui/components/Loading.less @@ -0,0 +1,8 @@ +@import '{}/imports/ui/stylesheets/utils.less'; + +.loading-app { + .position(absolute, 50%, 50%, auto, auto, 50%); + transform: translate3d(50%, -50%, 0); + min-width: 160px; + max-width: 320px; +} diff --git a/imports/ui/components/Message.js b/imports/ui/components/Message.js new file mode 100644 index 00000000..6e544489 --- /dev/null +++ b/imports/ui/components/Message.js @@ -0,0 +1,16 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const Message = ({ title, subtitle }) => ( +
+ {title ?
{title}
: null} + {subtitle ?
{subtitle}
: null} +
+); + +Message.propTypes = { + title: PropTypes.string, + subtitle: PropTypes.string, +}; + +export default Message; diff --git a/imports/ui/components/Message.less b/imports/ui/components/Message.less new file mode 100644 index 00000000..04aedaa7 --- /dev/null +++ b/imports/ui/components/Message.less @@ -0,0 +1,20 @@ +@import '{}/imports/ui/stylesheets/utils.less'; + +// Empty states and 404 messages +.wrapper-message { + .position(absolute, 45%, 0, auto, 0); + transform: translate3d(0, -50%, 0); + text-align: center; + + .title-message { + .font-m2; + .type-light; + color: @color-ancillary; + margin-bottom: .5em; + } + + .subtitle-message { + .font-s2; + color: @color-medium; + } +} diff --git a/imports/ui/containers/AppContainer.js b/imports/ui/containers/AppContainer.js new file mode 100644 index 00000000..dc52a3d2 --- /dev/null +++ b/imports/ui/containers/AppContainer.js @@ -0,0 +1,14 @@ +import { Meteor } from 'meteor/meteor'; +import { Session } from 'meteor/session'; +import { withTracker } from 'meteor/react-meteor-data'; + +import App from '../layouts/App.js'; + +export default withTracker(() => { + return { + user: Meteor.user(), + loading: false, + connected: Meteor.status().connected, + menuOpen: Session.get('menuOpen') + }; +})(App); diff --git a/imports/ui/layouts/App.js b/imports/ui/layouts/App.js new file mode 100644 index 00000000..52ff5266 --- /dev/null +++ b/imports/ui/layouts/App.js @@ -0,0 +1,75 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import ReactCSSTransitionGroup from 'react-addons-css-transition-group'; +import { Meteor } from 'meteor/meteor'; +import ConnectionNotification from '../components/ConnectionNotification.js'; +import Loading from '../components/Loading.js'; + +const CONNECTION_ISSUE_TIMEOUT = 5000; + +export default class App extends React.Component { + constructor(props) { + super(props); + this.state = { + menuOpen: false, + showConnectionIssue: false, + }; + } + + componentDidMount() { + setTimeout(() => { + this.setState({ showConnectionIssue: true }); + }, CONNECTION_ISSUE_TIMEOUT); + } + + render() { + const { showConnectionIssue } = this.state; + const { + user, + connected, + loading, + menuOpen, + children, + location, + } = this.props; + + // clone route components with keys so that they can + // have transitions + const clonedChildren = children && React.cloneElement(children, { + key: location.pathname, + }); + + return ( +
+ {showConnectionIssue && !connected + ? + : null} +
+ + {loading + ? + : clonedChildren} + +
+
+ ); + } +} + +App.propTypes = { + user: PropTypes.object, // current meteor user + connected: PropTypes.bool, // server connection status + loading: PropTypes.bool, // subscription status + menuOpen: PropTypes.bool, // is side menu open? + children: PropTypes.element, // matched child route component + location: PropTypes.object, // current router location + params: PropTypes.object, // parameters of the current route +}; + +App.contextTypes = { + router: PropTypes.object, +}; diff --git a/imports/ui/layouts/App.less b/imports/ui/layouts/App.less new file mode 100644 index 00000000..17c1b97f --- /dev/null +++ b/imports/ui/layouts/App.less @@ -0,0 +1,82 @@ +@import '{}/imports/ui/stylesheets/utils.less'; + +@menu-width: 270px; +@column: 5.55555%; + +body { + .position(absolute, 0, 0, 0, 0); + background-color: #315481; + background-image: linear-gradient(to bottom, #315481, #918e82 100%); + background-repeat: no-repeat; + background-attachment: fixed; +} + +#container { + .position(absolute, 0, 0, 0, 0); + + @media screen and (min-width: 60em) { + left: @column; + right: @column; + } + + @media screen and (min-width: 80em) { + left: 2*@column; + right: 2*@column; + } + + // Hide anything offscreen + overflow: hidden; +} + +#menu { + .position(absolute, 0, 0, 0, 0, @menu-width); + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +#content-container { + .position(absolute, 0, 0, 0, 0); + transition: all 200ms ease-out; + transform: translate3d(0, 0, 0); + background: @color-tertiary; + opacity: 1; + + @media screen and (min-width: 40em) { + left: @menu-width; + } + + .content-scrollable { + .position(absolute, 0, 0, 0, 0); + transform: translate3d(0, 0, 0); + overflow-y: auto; + -webkit-overflow-scrolling: touch; + } + + // Toggle menu on mobile + .menu-open & { + transform: translate3d(@menu-width, 0, 0); + opacity: .85; + left: 0; + + @media screen and (min-width: 40em) { + // Show menu on desktop, negate .menu-open + transform: translate3d(0, 0, 0); //reset transform and use position properties instead + opacity: 1; + left: @menu-width; + } + } +} + +// Transparent screen to prevent interactions on content when menu is open +.content-overlay { + .position(absolute, 0, 0, 0, 0); + cursor: pointer; + + .menu-open & { + transform: translate3d(@menu-width, 0, 0); + z-index: 1; + } + + // Hide overlay on desktop + @media screen and (min-width: 40em) { display: none; } +} diff --git a/imports/ui/pages/NotFoundPage.js b/imports/ui/pages/NotFoundPage.js new file mode 100644 index 00000000..e5659e95 --- /dev/null +++ b/imports/ui/pages/NotFoundPage.js @@ -0,0 +1,21 @@ +import React from 'react'; +import i18n from 'meteor/universe:i18n'; +import BaseComponent from '../components/BaseComponent.js'; +import Message from '../components/Message.js'; + +class NotFoundPage extends BaseComponent { + render() { + return ( +
+ +
+ +
+
+ ); + } +} + +export default NotFoundPage; diff --git a/imports/ui/pages/NotFoundPage.less b/imports/ui/pages/NotFoundPage.less new file mode 100644 index 00000000..63446ddd --- /dev/null +++ b/imports/ui/pages/NotFoundPage.less @@ -0,0 +1,5 @@ +@import '{}/imports/ui/stylesheets/utils.less'; + +.page.not-found { + .content-scrollable { background: @color-tertiary; } +} diff --git a/imports/ui/stylesheets/base.less b/imports/ui/stylesheets/base.less new file mode 100644 index 00000000..5ed4eaca --- /dev/null +++ b/imports/ui/stylesheets/base.less @@ -0,0 +1,77 @@ +@import './utils.less'; + +* { + box-sizing: border-box; + -webkit-tap-highlight-color:rgba(0,0,0,0); + -webkit-tap-highlight-color: transparent; // for some Androids +} + +html, button, input, textarea, select { + outline: none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body { + .type-regular; + color: @color-full; + font-size: 16px; //this sets the baseline so we can use multiples of 4 & (r)ems +} + +// Default type layout +h1, h2, h3, h4, h5, h6 { + .type-regular; + margin: 0; + padding: 0; +} + +h1 { + .font-l1; +} + +h2 { + .font-m3; +} + +h3 { + .font-m2; +} + +h4 { + .font-m1; +} + +h5 { + .font-s2; + color: @color-medium-rare; + text-transform: uppercase; +} + +h6 { + color: @color-medium; +} + +p { + .font-s3; +} + +sub, +sup { + font-size: .8em; +} + +sub { + bottom: -.2em; +} + +sup { + top: -.2em; +} + +b { + font-weight: bold; +} + +em { + font-style: italic; +} diff --git a/imports/ui/stylesheets/button.less b/imports/ui/stylesheets/button.less new file mode 100644 index 00000000..9449a5b6 --- /dev/null +++ b/imports/ui/stylesheets/button.less @@ -0,0 +1,55 @@ +@import './utils.less'; + +[class^="btn-"], +[class*=" btn-"] { + // Sizing + .font-s2; + line-height: 20px !important; //override line-height always so we can use em's to size + padding: 1em 1.25em; // 48px tall + + // Style + .title-caps; + transition: all 200ms ease-in; + color: @color-empty; + display: inline-block; + position: relative; + text-align: center; + text-decoration: none !important; //prevents global styles from applying + vertical-align: middle; + white-space: nowrap; + + &[class*="primary"] { + background-color: @color-primary; + color: @color-empty; + + &:hover { background-color: darken(@color-primary, 5%); } + &:active { box-shadow: rgba(0,0,0,.3) 0 1px 3px 0 inset; } + } + + &[class*="secondary"] { + transition: all 300ms ease-in; + box-shadow: lighten(#517096, 5%) 0 0 0 1px inset; + color: @color-empty; + + &:hover{ color: @color-rare; } + &:active, + &.active { + box-shadow: lighten(#517096, 25%) 0 0 0 1px inset; + } + } + + &[disabled] { opacity: .5; } +} + +.btns-group { + display: flex; + flex-wrap: wrap; + width: 100%; + + [class*="btn-"] { + .ellipsized; + flex: 1; + + & + [class*="btn-"] { margin-left: -1px; } + } +} diff --git a/imports/ui/stylesheets/fade-transition.less b/imports/ui/stylesheets/fade-transition.less new file mode 100644 index 00000000..d0352431 --- /dev/null +++ b/imports/ui/stylesheets/fade-transition.less @@ -0,0 +1,17 @@ +.fade-enter { + opacity: 0.01; +} + +.fade-enter.fade-enter-active { + opacity: 1; + transition: opacity 200ms ease-in; +} + +.fade-leave { + opacity: 1; +} + +.fade-leave.fade-leave-active { + opacity: 0.01; + transition: opacity 200ms ease-in; +} diff --git a/imports/ui/stylesheets/form.less b/imports/ui/stylesheets/form.less new file mode 100644 index 00000000..8a76781f --- /dev/null +++ b/imports/ui/stylesheets/form.less @@ -0,0 +1,119 @@ +@import './utils.less'; + +// Standard text input +input[type="text"], +input[type="email"], +input[type="password"], +textarea { + // Sizing + .font-s2; + .type-regular; + padding: .75rem 0; //total height ~48 + line-height: 1.5rem !important; + + // Style + ::placeholder { + color: @color-complementary; + } + + border: none; + border-radius: 0; + box-sizing: border-box; + color: @color-full; + outline: none; + + &[disabled] { opacity: .5; } +} + +// Remove chrome/saf autofill yellow background +input:-webkit-autofill { + -webkit-box-shadow: 0 0 0 1000px @color-empty inset; +} + +// Custom checkbox +.checkbox { + display: inline-block; + height: 3rem; + position: relative; + vertical-align: middle; + width: 44px; + + input[type="checkbox"] { + font-size: 1em; + visibility: hidden; + + & + span:before { + .position(absolute, 50%, auto, auto, 50%, .85em, .85em); + transform: translate3d(-50%, -50%, 0); + background: transparent; + box-shadow: #abdfe3 0 0 0 1px inset; + content: ''; + display: block; + } + + &:checked + span:before { + box-shadow: none; + color: @color-medium-rare; + + // Icon family from icon.lessimport + font-family: 'todos'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + // Better Font Rendering + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + // Checkmark icon + content: "\e612"; + } + } +} + +// Input with an icon +.input-symbol { + display: inline-block; + position: relative; + + &.error [class^="icon-"], + &.error [class*=" icon-"] { + color: @color-negative; + } + + // Position & padding + [class^="icon-"], + [class*=" icon-"] { + left: 1em; + } + + input { padding-left: 3em; } + + // Styling + input { + width: 100%; + + &:focus { + & + [class^="icon-"], + & + [class*=" icon-"] { + color: @color-primary; + } + } + } + + [class^="icon-"], + [class*=" icon-"] { + transition: all 300ms ease-in; + transform: translate3d(0,-50%,0); + background: transparent; + color: @color-medium; + font-size: 1em; + height: 1em; + position: absolute; + top: 50%; + width: 1em; + } +} diff --git a/imports/ui/stylesheets/link.less b/imports/ui/stylesheets/link.less new file mode 100644 index 00000000..c626beb4 --- /dev/null +++ b/imports/ui/stylesheets/link.less @@ -0,0 +1,12 @@ +@import './utils.less'; + +a { + transition: all 200ms ease-in; + color: @color-secondary; + cursor: pointer; + text-decoration: none; + + &:hover { color: darken(@color-primary, 10%); } + &:active { color: @color-well; } + &:focus { outline:none; } //removes FF dotted outline +} diff --git a/imports/ui/stylesheets/nav.less b/imports/ui/stylesheets/nav.less new file mode 100644 index 00000000..d56864b7 --- /dev/null +++ b/imports/ui/stylesheets/nav.less @@ -0,0 +1,41 @@ +@import './utils.less'; + +// Generic nav positioning and styles +nav { + .position(absolute, 0, 0, auto, 0); + transform: translate3d(0,0,0); + transition: all 200ms ease-out; + z-index: 10; + + .nav-item { + .font-m1; + color: @color-ancillary; + display: inline-block; + height: 3rem; + text-align: center; + width: 3rem; + + &:active { opacity: .5; } + + [class^="icon-"], + [class*=" icon-"] { + line-height: 3rem; + vertical-align: middle; + } + } + .nav-group { + .position(absolute, 0, auto, auto, 0); + z-index: 1; + + &.right { + left: auto; + right: 0; + } + } +} + +// Custom nav for auth +@media screen and (min-width: 40em) { + .page.auth .nav-group { display: none; } + .page.not-found .nav-group { display: none; } +} diff --git a/imports/ui/stylesheets/reset.less b/imports/ui/stylesheets/reset.less new file mode 100644 index 00000000..eb127f19 --- /dev/null +++ b/imports/ui/stylesheets/reset.less @@ -0,0 +1,135 @@ +// ERIC MEYER RESET +// -------------------------------------------------- + +html, body { margin: 0; padding: 0; } +h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, cite, code, del, dfn, em, img, q, s, samp, small, strike, strong, sub, sup, tt, var, dd, dl, dt, li, ol, ul, fieldset, form, label, legend, button, table, caption, tbody, tfoot, thead, tr, th, td { margin: 0; padding: 0; border: 0; font-weight: normal; font-style: normal; font-size: 100%; line-height: 1; font-family: inherit; } +table { border-collapse: collapse; border-spacing: 0; } +ol, ul { list-style: none; } +q:before, q:after, blockquote:before, blockquote:after { content: ""; } + + +// Normalize.css +// Pulling in select resets form the normalize.css project +// -------------------------------------------------- + +// Display in IE6-9 and FF3 +// ------------------------- +// Source: http://github.com/necolas/normalize.css +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +// Focus states +a:focus { + outline: thin dotted; +} +// Hover & Active +a:hover, +a:active { + outline: 0; +} + +// Display in IE6-9 and FF3 +// ------------------------- +// Source: http://github.com/necolas/normalize.css +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +// Display block in IE6-9 and FF3 +// ------------------------- +// Source: http://github.com/necolas/normalize.css +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +// Prevents modern browsers from displaying 'audio' without controls +// ------------------------- +// Source: http://github.com/necolas/normalize.css +audio:not([controls]) { + display: none; +} + +// Prevents sub and sup affecting line-height in all browsers +// ------------------------- +// Source: http://github.com/necolas/normalize.css +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} + +// Img border in a's and image quality +// ------------------------- +// Source: http://github.com/necolas/normalize.css +img { + border: 0; + -ms-interpolation-mode: bicubic; +} + +// Forms +// ------------------------- +// Source: http://github.com/necolas/normalize.css + +// Font size in all browsers, margin changes, misc consistency +button, +input, +select, +textarea { + font-size: 100%; + margin: 0; + vertical-align: baseline; + *vertical-align: middle; +} +button, +input { + line-height: normal; // FF3/4 have !important on line-height in UA stylesheet + *overflow: visible; // Inner spacing ie IE6/7 +} +button::-moz-focus-inner, +input::-moz-focus-inner { // Inner padding and border oddities in FF3/4 + border: 0; + padding: 0; +} +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; // Cursors on all buttons applied consistently + -webkit-appearance: button; // Style clicable inputs in iOS +} +input[type="search"] { // Appearance in Safari/Chrome + -webkit-appearance: textfield; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; // Inner-padding issues in Chrome OSX, Safari 5 +} +textarea { + overflow: auto; // Remove vertical scrollbar in IE6-9 + vertical-align: top; // Readability and alignment cross-browser +} diff --git a/imports/ui/stylesheets/util/fontface.less b/imports/ui/stylesheets/util/fontface.less new file mode 100644 index 00000000..3829cef3 --- /dev/null +++ b/imports/ui/stylesheets/util/fontface.less @@ -0,0 +1,24 @@ +// Light +@font-face { + font-family: 'Open Sans'; + src: url('/font/OpenSans-Light-webfont.eot'); + src: url('/font/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'), + url('/font/OpenSans-Light-webfont.woff') format('woff'), + url('/font/OpenSans-Light-webfont.ttf') format('truetype'), + url('/font/OpenSans-Light-webfont.svg#OpenSansLight') format('svg'); + font-weight: 200; + font-style: normal; +} + +// Regular +@font-face { + font-family: 'Open Sans'; + src: url('/font/OpenSans-Regular-webfont.eot'); + src: url('/font/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'), + url('/font/OpenSans-Regular-webfont.woff') format('woff'), + url('/font/OpenSans-Regular-webfont.ttf') format('truetype'), + url('/font/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg'); + font-weight: normal; + font-weight: 400; + font-style: normal; +} diff --git a/imports/ui/stylesheets/util/helpers.less b/imports/ui/stylesheets/util/helpers.less new file mode 100644 index 00000000..29c5217c --- /dev/null +++ b/imports/ui/stylesheets/util/helpers.less @@ -0,0 +1,9 @@ +.position(@type; @top: auto; @right: auto; @bottom: auto; @left: auto; @width: auto; @height: auto) { + position: @type; + top: @top; + right: @right; + bottom: @bottom; + left: @left; + width: @width; + height: @height; +} diff --git a/imports/ui/stylesheets/util/text.less b/imports/ui/stylesheets/util/text.less new file mode 100644 index 00000000..4e96b070 --- /dev/null +++ b/imports/ui/stylesheets/util/text.less @@ -0,0 +1,21 @@ +// Caps styling used in headers +.title-caps() { + letter-spacing: .3em; + text-indent: .3em; + text-transform: uppercase; +} + +// Adds an ellipses at the end of overflowing strings +.ellipsized() { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.force-wrap { + word-wrap: break-word; + word-break: break-all; + -ms-word-break: break-all; + word-break: break-word; // Non-standard for webkit + hyphens: auto; +} diff --git a/imports/ui/stylesheets/util/typography.less b/imports/ui/stylesheets/util/typography.less new file mode 100644 index 00000000..a9164f06 --- /dev/null +++ b/imports/ui/stylesheets/util/typography.less @@ -0,0 +1,63 @@ +.type-regular() { + font-family: 'Open Sans', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-style: 400; +} + +.type-light { + font-family: 'Open Sans', "Helvetica Neue", Helvetica, Arial, sans-serif; + font-weight: 300; +} + + +// Large fonts +.font-l3() { + font-size: 56px; + line-height: 64px; +} + +.font-l2() { + font-size: 48px; + line-height: 56px; +} + +.font-l1() { + font-size: 40px; + line-height: 48px; +} + +// Medium fonts +.font-m3() { + font-size: 28px; + line-height: 32px; +} + +.font-m2() { + font-size: 24px; + line-height: 28px; +} + +.font-m1() { + font-size: 20px; + line-height: 24px; +} + +// Small fonts +.font-s3() { + font-size: 16px; + line-height: 24px; +} + +.font-s2() { + font-size: 14px; + line-height: 20px; +} + +.font-s1() { + font-size: 12px; + line-height: 16px; +} + +.font-s0() { + font-size: 10px; + line-height: 14px; +} diff --git a/imports/ui/stylesheets/util/variables.less b/imports/ui/stylesheets/util/variables.less new file mode 100644 index 00000000..365e9393 --- /dev/null +++ b/imports/ui/stylesheets/util/variables.less @@ -0,0 +1,21 @@ +// Core +@color-primary: #2cc5d2; //caribbean teal (buttons) +@color-secondary: #5db9ff; //cerulean blue (menu new list) +@color-tertiary: #d2edf4; //muted teal (join/signin bg) +@color-ancillary: #1c3f53; //deep navy (nav heading, menu icon) +@color-complementary: #778b91; //muted navy (add item placeholder) + +// Alert +@color-negative: #ff4400; //error, alert +@color-note: #f6fccf; + +// Greyscale +@color-empty: white; +@color-raw: #f8f8f8; +@color-raw: #f2f2f2; +@color-rare: #eee; +@color-medium-rare: #ccc; +@color-medium: #aaa; +@color-medium-well: #666; +@color-well: #555; +@color-full: #333; diff --git a/imports/ui/stylesheets/utils.less b/imports/ui/stylesheets/utils.less new file mode 100644 index 00000000..e29b9a97 --- /dev/null +++ b/imports/ui/stylesheets/utils.less @@ -0,0 +1,5 @@ +@import 'util/helpers.less'; +@import 'util/fontface.less'; +@import 'util/text.less'; +@import 'util/typography.less'; +@import 'util/variables.less'; diff --git a/package-lock.json b/package-lock.json index d6802835..45899000 100644 --- a/package-lock.json +++ b/package-lock.json @@ -288,6 +288,11 @@ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "chain-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/chain-function/-/chain-function-1.0.0.tgz", + "integrity": "sha1-DUqzfn4Y6tC9xHuSB2QRjOWHM9w=" + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -302,6 +307,11 @@ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.5.tgz", "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0=" }, + "clone": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -428,6 +438,11 @@ "resolved": "https://registry.npmjs.org/deprecate/-/deprecate-0.1.0.tgz", "integrity": "sha1-xJBYYS3GyOUUXq/kg5uMLH0EHBQ=" }, + "dom-helpers": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.3.1.tgz", + "integrity": "sha512-2Sm+JaYn74OiTM2wHvxJOo3roiq/h25Yi69Fqk269cNUwIXsCvATB6CRSFC9Am/20G2b28hGv/+7NiWydIrPvg==" + }, "drbg.js": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", @@ -648,6 +663,18 @@ "sntp": "2.1.0" } }, + "history": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz", + "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==", + "requires": { + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "resolve-pathname": "2.2.0", + "value-equal": "0.4.0", + "warning": "3.0.0" + } + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -663,6 +690,11 @@ "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.0.tgz", "integrity": "sha512-v0XCLxICi9nPfYrS9RL8HbYnXi9obYAeLbSP00BmnZwCK9+Ih9WOjoZ8YoHCoav2csqn4FOz4Orldsy2dmDwmQ==" }, + "hoist-non-react-statics": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.3.1.tgz", + "integrity": "sha1-ND24TGAYxlB3iJgkATWhQg7iLOA=" + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -697,6 +729,14 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, + "invariant": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "requires": { + "loose-envify": "1.3.1" + } + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -776,6 +816,211 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" }, + "lodash._basecallback": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz", + "integrity": "sha1-t7K7Q9whYEJKIczybFfkQ3cqjic=", + "requires": { + "lodash._baseisequal": "3.0.7", + "lodash._bindcallback": "3.0.1", + "lodash.isarray": "3.0.4", + "lodash.pairs": "3.0.1" + } + }, + "lodash._baseeach": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz", + "integrity": "sha1-z4cGVyyhROjZ11InyZDamC+TKvM=", + "requires": { + "lodash.keys": "3.1.2" + } + }, + "lodash._basefind": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basefind/-/lodash._basefind-3.0.0.tgz", + "integrity": "sha1-srugXMZF+XLeLPkl+iv2Og9gyK4=" + }, + "lodash._basefindindex": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/lodash._basefindindex/-/lodash._basefindindex-3.6.0.tgz", + "integrity": "sha1-8IM2ChsCJBjtgbyJm+sxLiHnSk8=" + }, + "lodash._baseisequal": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz", + "integrity": "sha1-2AJfdjOdKTQnZ9zIh85cuVpbUfE=", + "requires": { + "lodash.isarray": "3.0.4", + "lodash.istypedarray": "3.0.6", + "lodash.keys": "3.1.2" + } + }, + "lodash._baseismatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lodash._baseismatch/-/lodash._baseismatch-3.1.3.tgz", + "integrity": "sha1-Byj8SO+hFpnT1fLXMEnyqxPED9U=", + "requires": { + "lodash._baseisequal": "3.0.7" + } + }, + "lodash._basematches": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lodash._basematches/-/lodash._basematches-3.2.0.tgz", + "integrity": "sha1-9H4D8H7CB4SrCWjQy2y1l+IQEVg=", + "requires": { + "lodash._baseismatch": "3.1.3", + "lodash.pairs": "3.0.1" + } + }, + "lodash._bindcallback": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz", + "integrity": "sha1-5THCdkTPi1epnhftlbNcdIeJOS4=" + }, + "lodash._getnative": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", + "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=" + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=" + }, + "lodash.every": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.every/-/lodash.every-4.6.0.tgz", + "integrity": "sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=" + }, + "lodash.find": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-4.6.0.tgz", + "integrity": "sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E=" + }, + "lodash.findwhere": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.findwhere/-/lodash.findwhere-3.1.0.tgz", + "integrity": "sha1-eTfTTz6sgY3sf6lOjKXib9uhz8E=", + "requires": { + "lodash._basematches": "3.2.0", + "lodash.find": "3.2.1" + }, + "dependencies": { + "lodash.find": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/lodash.find/-/lodash.find-3.2.1.tgz", + "integrity": "sha1-BG4xnzrOkSrGySRsf2g8XsB7Nq0=", + "requires": { + "lodash._basecallback": "3.3.1", + "lodash._baseeach": "3.0.4", + "lodash._basefind": "3.0.0", + "lodash._basefindindex": "3.6.0", + "lodash.isarray": "3.0.4", + "lodash.keys": "3.1.2" + } + } + } + }, + "lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=" + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isarguments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", + "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=" + }, + "lodash.isarray": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=" + }, + "lodash.isempty": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", + "integrity": "sha1-b4bL7di+TsmHvpqvM8loTbGzHn4=" + }, + "lodash.isobject": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz", + "integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0=" + }, + "lodash.istypedarray": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz", + "integrity": "sha1-yaR3SYYHUB2OhJTSg7h8OSgc72I=" + }, + "lodash.keys": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", + "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", + "requires": { + "lodash._getnative": "3.9.1", + "lodash.isarguments": "3.1.0", + "lodash.isarray": "3.0.4" + } + }, + "lodash.merge": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.0.tgz", + "integrity": "sha1-aYhLoUSsM/5plzemCG3v+t0PicU=" + }, + "lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=" + }, + "lodash.pairs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash.pairs/-/lodash.pairs-3.0.1.tgz", + "integrity": "sha1-u+CNV4bu6qCaFckevw3LfSvjJqk=", + "requires": { + "lodash.keys": "3.1.2" + } + }, + "lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=" + }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "requires": { + "lodash._reinterpolate": "3.0.0", + "lodash.templatesettings": "4.1.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "requires": { + "lodash._reinterpolate": "3.0.0" + } + }, + "lodash.union": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" + }, + "lodash.without": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", + "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=" + }, "loose-envify": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", @@ -804,6 +1049,15 @@ } } }, + "message-box": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/message-box/-/message-box-0.2.0.tgz", + "integrity": "sha512-SPLfVDEM2YcAgV2IB0B5vOGjvqXSSw7ZibEeXcff8HYpxyG1Uj+XjgnGUGyR1C0EQCvPI3MBx3p7opt2CIQ2hw==", + "requires": { + "lodash.merge": "4.6.0", + "lodash.template": "4.4.0" + } + }, "meteor-node-stubs": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/meteor-node-stubs/-/meteor-node-stubs-0.3.2.tgz", @@ -1505,6 +1759,17 @@ "minimist": "0.0.8" } }, + "mongo-object": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mongo-object/-/mongo-object-0.1.2.tgz", + "integrity": "sha512-xRrnal5HuCz3we8Bzk17iYfgCMfaaSU+cq0OkQ/PP+CYhhFmw4Joqmcc0R9XUAgxbFAybg7uzxbNGUw13kEUxQ==", + "requires": { + "lodash.foreach": "4.5.0", + "lodash.isempty": "4.4.0", + "lodash.isobject": "3.0.2", + "lodash.without": "4.4.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1615,6 +1880,21 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, + "path-to-regexp": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz", + "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=", + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + } + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -1682,6 +1962,14 @@ "prop-types": "15.6.0" } }, + "react-addons-css-transition-group": { + "version": "15.6.2", + "resolved": "https://registry.npmjs.org/react-addons-css-transition-group/-/react-addons-css-transition-group-15.6.2.tgz", + "integrity": "sha1-nkN2vPQLUhfRTsaFUwgc7ksIptY=", + "requires": { + "react-transition-group": "1.2.1" + } + }, "react-dom": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz", @@ -1693,6 +1981,45 @@ "prop-types": "15.6.0" } }, + "react-router": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.2.0.tgz", + "integrity": "sha512-DY6pjwRhdARE4TDw7XjxjZsbx9lKmIcyZoZ+SDO7SBJ1KUeWNxT22Kara2AC7u6/c2SYEHlEDLnzBCcNhLE8Vg==", + "requires": { + "history": "4.7.2", + "hoist-non-react-statics": "2.3.1", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "path-to-regexp": "1.7.0", + "prop-types": "15.6.0", + "warning": "3.0.0" + } + }, + "react-router-dom": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.2.2.tgz", + "integrity": "sha512-cHMFC1ZoLDfEaMFoKTjN7fry/oczMgRt5BKfMAkTu5zEuJvUiPp1J8d0eXSVTnBh6pxlbdqDhozunOOLtmKfPA==", + "requires": { + "history": "4.7.2", + "invariant": "2.2.2", + "loose-envify": "1.3.1", + "prop-types": "15.6.0", + "react-router": "4.2.0", + "warning": "3.0.0" + } + }, + "react-transition-group": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-1.2.1.tgz", + "integrity": "sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==", + "requires": { + "chain-function": "1.0.0", + "dom-helpers": "3.3.1", + "loose-envify": "1.3.1", + "prop-types": "15.6.0", + "warning": "3.0.0" + } + }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", @@ -1741,6 +2068,11 @@ "uuid": "3.2.1" } }, + "resolve-pathname": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz", + "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg==" + }, "rimraf": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", @@ -1807,6 +2139,27 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, + "simpl-schema": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/simpl-schema/-/simpl-schema-1.4.1.tgz", + "integrity": "sha512-M/xRl7DtLQt6Z+8EffHlIg8vkfZxUJROqxgxW64GtF4eNcQYlYDfhlufRI1jo/SRjE3MwqijSLX/D21D/EvoaQ==", + "requires": { + "clone": "2.1.1", + "extend": "3.0.1", + "lodash.every": "4.6.0", + "lodash.find": "4.6.0", + "lodash.findwhere": "3.1.0", + "lodash.includes": "4.3.0", + "lodash.isempty": "4.4.0", + "lodash.isobject": "3.0.2", + "lodash.omit": "4.5.0", + "lodash.pick": "4.4.0", + "lodash.union": "4.6.0", + "lodash.uniq": "4.5.0", + "message-box": "0.2.0", + "mongo-object": "0.1.2" + } + }, "sntp": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", @@ -1933,6 +2286,11 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" }, + "value-equal": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz", + "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw==" + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -1943,6 +2301,14 @@ "extsprintf": "1.3.0" } }, + "warning": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz", + "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=", + "requires": { + "loose-envify": "1.3.1" + } + }, "whatwg-fetch": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.3.tgz", diff --git a/package.json b/package.json index 16e42795..767b5eaf 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,13 @@ "crypto-js": "^3.1.9-1", "meteor-node-stubs": "^0.3.2", "namecoin": "^0.1.4", + "prop-types": "^15.6.0", "react": "^16.2.0", + "react-addons-css-transition-group": "^15.6.2", "react-dom": "^16.2.0", - "secp256k1": "^3.4.0" + "react-router": "^4.2.0", + "react-router-dom": "^4.2.2", + "secp256k1": "^3.4.0", + "simpl-schema": "^1.4.1" } } diff --git a/public/font/OpenSans-Light-webfont.eot b/public/font/OpenSans-Light-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..f17617e0396d6395a3fd3db07604c1754d2e7b1b GIT binary patch literal 29794 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 literal 0 HcmV?d00001 diff --git a/public/font/OpenSans-Light-webfont.svg b/public/font/OpenSans-Light-webfont.svg new file mode 100644 index 00000000..c7ae13a2 --- /dev/null +++ b/public/font/OpenSans-Light-webfont.svg @@ -0,0 +1,252 @@ + + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/font/OpenSans-Light-webfont.ttf b/public/font/OpenSans-Light-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b83078a6075d5d7800466c2981158fc721fd9419 GIT binary patch literal 29612 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

5FqS%E< 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 E2guaj@Bjb+ literal 0 HcmV?d00001 diff --git a/public/font/OpenSans-Light-webfont.woff b/public/font/OpenSans-Light-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..ff882b6acaa0fb595bb7658ec36d663394de3fba GIT binary patch literal 19396 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 literal 0 HcmV?d00001 diff --git a/public/font/OpenSans-Regular-webfont.eot b/public/font/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..545b7c15e54a1399b315ebc761936289283eeb90 GIT binary patch literal 29934 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 + + + +This is a custom SVG webfont generated by Font Squirrel. +Copyright : Digitized data copyright 20102011 Google Corporation +Foundry : Ascender Corporation +Foundry URL : httpwwwascendercorpcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/font/OpenSans-Regular-webfont.ttf b/public/font/OpenSans-Regular-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..a5b2378e5c2f3c0614d06c1d6696e8c6e31c84d3 GIT binary patch literal 29744 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 E8i2eEj{pDw literal 0 HcmV?d00001 diff --git a/public/logo_todos.svg b/public/logo_todos.svg new file mode 100644 index 00000000..e2eee46c --- /dev/null +++ b/public/logo_todos.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/server/main.js b/server/main.js index 622423ae..282492e6 100644 --- a/server/main.js +++ b/server/main.js @@ -1,16 +1 @@ -import { Meteor } from 'meteor/meteor'; -import { Roles } from 'meteor/alanning:roles'; -import '../imports/startup/accounts-config.js'; -import '../imports/api/sois.js'; -import '../imports/api/rest.js'; - -Meteor.startup(() => { - if(Meteor.users.find().count() === 0) { - id = Accounts.createUser({ - username: 'admin', - email: 'admin@sendeffect.de', - password: 'password' - }); - Roles.addUsersToRoles(id, 'admin'); - } -}); +import '/imports/startup/server';