├── .babelrc ├── .codeclimate.yml ├── .dockerignore ├── .editorconfig ├── .eslintrc ├── .gitignore ├── .gitmodules ├── .jsbeautifyrc ├── .meteor ├── .finished-upgraders ├── .gitignore ├── .id ├── cordova-plugins ├── dev_bundle ├── packages ├── platforms ├── release └── versions ├── .pullapprove.yml ├── Dockerfile ├── Dockerfile_DEV ├── Dockerfile_PROD ├── Dockerfile_with_MONGO ├── LICENSE.md ├── README.md ├── TESTPLAN.md ├── bin ├── check-settings ├── clone-packages.sh ├── collection-dump ├── deploy ├── docker │ ├── .gitignore │ ├── build-bundle.sh │ ├── build-meteor.sh │ ├── build-packages.sh │ ├── entrypoint-PROD-build-with-src.sh │ ├── entrypoint.sh │ ├── install-graphicsmagick.sh │ └── install-mongodb.sh ├── dump ├── env.sh ├── install ├── load-dump ├── reload ├── reset └── run ├── circle.yml ├── client ├── analytics │ └── custom.analytics.json ├── templates │ ├── index.html │ ├── layout.html │ └── layout.js └── themes │ └── .gitignore ├── common ├── config.js └── router.js ├── docker ├── docker-compose.test.yml ├── packages.example ├── reaction.dev.src.docker ├── reaction.minimal.docker ├── reaction.mongo.docker ├── reaction.prod.docker ├── reaction.prod.docker~reactioncommerce_development └── scripts │ ├── build-meteor.sh │ ├── build-packages.sh │ ├── entrypoint.sh │ ├── install-deps.sh │ ├── install-meteor.sh │ ├── install-mongodb.sh │ ├── install-node.sh │ ├── install-phantom.sh │ ├── post-build-cleanup.sh │ └── post-install-cleanup.sh ├── mobile-config.js ├── package.json ├── packages ├── .gitignore ├── my-custom-theme-template │ ├── README.md │ ├── main.less │ ├── package.js │ └── styles │ │ ├── base.less │ │ └── variables.less ├── reaction-accounts │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ ├── helpers.js │ │ │ ├── subscriptions.js │ │ │ ├── util.js │ │ │ └── validation.js │ │ └── templates │ │ │ ├── accounts.html │ │ │ ├── addressBook │ │ │ ├── add │ │ │ │ ├── add.html │ │ │ │ └── add.js │ │ │ ├── addressBook.html │ │ │ ├── addressBook.js │ │ │ ├── edit │ │ │ │ ├── edit.html │ │ │ │ └── edit.js │ │ │ ├── form │ │ │ │ ├── form.html │ │ │ │ └── form.js │ │ │ └── grid │ │ │ │ ├── grid.html │ │ │ │ └── grid.js │ │ │ ├── dashboard │ │ │ ├── dashboard.html │ │ │ └── dashboard.js │ │ │ ├── dropdown │ │ │ ├── dropdown.html │ │ │ └── dropdown.js │ │ │ ├── forgot │ │ │ ├── forgot.html │ │ │ └── forgot.js │ │ │ ├── guestSignUp │ │ │ ├── guestSignUp.html │ │ │ └── guestSignUp.js │ │ │ ├── inline │ │ │ ├── inline.html │ │ │ └── inline.js │ │ │ ├── login │ │ │ ├── loginButtons.html │ │ │ ├── loginForm.html │ │ │ ├── loginForm.js │ │ │ └── loginForm.less │ │ │ ├── members │ │ │ ├── member.html │ │ │ ├── member.js │ │ │ ├── memberForm.html │ │ │ └── memberForm.js │ │ │ ├── profile │ │ │ ├── profile.html │ │ │ └── profile.js │ │ │ ├── signIn │ │ │ ├── signIn.html │ │ │ └── signIn.js │ │ │ ├── signUp │ │ │ ├── signUp.html │ │ │ └── signUp.js │ │ │ └── updatePassword │ │ │ ├── updatePassword.html │ │ │ └── updatePassword.js │ ├── package.js │ ├── server │ │ ├── accounts.js │ │ ├── methods │ │ │ ├── accounts.js │ │ │ └── serviceConfiguration.js │ │ ├── policy.js │ │ ├── publications │ │ │ └── serviceConfiguration.js │ │ └── register.js │ └── tests │ │ └── jasmine │ │ ├── client │ │ └── integration │ │ │ └── login.js │ │ └── server │ │ └── integration │ │ ├── accounts.js │ │ └── publications.js ├── reaction-analytics-libs │ ├── .gitignore │ ├── .versions │ ├── README.md │ ├── analytics-lib.js │ ├── analytics │ │ ├── googleAnalytics.js │ │ ├── mixpanel.js │ │ └── segmentio.js │ └── package.js ├── reaction-analytics │ ├── .gitignore │ ├── .npm │ │ └── plugin │ │ │ └── analytics-configurator │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ └── npm-shrinkwrap.json │ ├── README.md │ ├── client │ │ ├── startup.js │ │ └── templates │ │ │ └── reactionAnalytics │ │ │ ├── reactionAnalytics.html │ │ │ └── reactionAnalytics.js │ ├── common │ │ ├── collections.js │ │ └── hooks.js │ ├── package.js │ └── server │ │ ├── buildtools │ │ ├── analyticsConfigurator.js │ │ ├── analyticsSources.js │ │ └── defaultConfiguration.js │ │ ├── publications.js │ │ ├── register.js │ │ └── security │ │ ├── AnalyticsEvents.js │ │ └── browserPolicy.js ├── reaction-catalog │ ├── README.md │ ├── common │ │ └── helpers.js │ ├── package.js │ ├── server │ │ ├── methods.js │ │ └── register.js │ └── tests │ │ └── jasmine │ │ └── server │ │ └── integration │ │ └── products.js ├── reaction-checkout │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ └── cart.js │ │ └── templates │ │ │ └── cart │ │ │ ├── cartDrawer │ │ │ ├── cartDrawer.html │ │ │ ├── cartDrawer.js │ │ │ ├── cartItems │ │ │ │ ├── cartItems.html │ │ │ │ └── cartItems.js │ │ │ └── cartSubTotals │ │ │ │ ├── cartSubTotals.html │ │ │ │ └── cartSubTotals.js │ │ │ ├── cartIcon │ │ │ ├── cartIcon.html │ │ │ └── cartIcon.js │ │ │ ├── cartPanel │ │ │ ├── cartPanel.html │ │ │ └── cartPanel.js │ │ │ └── checkout │ │ │ ├── addressBook │ │ │ ├── addressBook.html │ │ │ └── addressBook.js │ │ │ ├── checkout.html │ │ │ ├── checkout.js │ │ │ ├── completed │ │ │ ├── completed.html │ │ │ └── completed.js │ │ │ ├── header │ │ │ └── header.html │ │ │ ├── login │ │ │ ├── login.html │ │ │ └── login.js │ │ │ ├── payment │ │ │ ├── methods │ │ │ │ ├── cards.html │ │ │ │ └── cards.js │ │ │ └── payment.html │ │ │ ├── progressBar │ │ │ ├── progressBar.html │ │ │ └── progressBar.js │ │ │ ├── review │ │ │ ├── review.html │ │ │ └── review.js │ │ │ └── shipping │ │ │ ├── shipping.html │ │ │ └── shipping.js │ ├── common │ │ └── methods │ │ │ ├── cart.js │ │ │ └── workflow.js │ ├── package.js │ └── server │ │ ├── logger.js │ │ └── register.js ├── reaction-collections │ ├── README.md │ ├── client │ │ └── subscriptions.js │ ├── common │ │ ├── collections │ │ │ ├── collectionFS.js │ │ │ ├── collections.js │ │ │ └── hooks │ │ │ │ └── hooks.js │ │ └── globals.js │ ├── package.js │ ├── server │ │ ├── buildSelectors.js │ │ ├── logger.js │ │ ├── main.js │ │ ├── publications │ │ │ ├── accounts.js │ │ │ ├── cart.js │ │ │ ├── discounts.js │ │ │ ├── media.js │ │ │ ├── members.js │ │ │ ├── orders.js │ │ │ ├── packages.js │ │ │ ├── product.js │ │ │ ├── products.js │ │ │ ├── sessions.js │ │ │ ├── shipping.js │ │ │ ├── shops.js │ │ │ ├── tags.js │ │ │ ├── taxes.js │ │ │ ├── themes.js │ │ │ └── translations.js │ │ └── security.js │ └── tests │ │ └── jasmine │ │ └── server │ │ └── integration │ │ └── publications.js ├── reaction-core-theme │ ├── .editorconfig │ ├── .gitignore │ ├── .versions │ ├── README.md │ ├── build-package.sh │ ├── default │ │ ├── alerts.less │ │ ├── base.less │ │ ├── bootstrap.rtl.less │ │ ├── dropdowns.less │ │ ├── forms.less │ │ ├── grid.less │ │ ├── mixins.less │ │ ├── mixins │ │ │ ├── flexbox.less │ │ │ ├── lesshat.less │ │ │ ├── ribbon.less │ │ │ └── rtl.less │ │ ├── navs.less │ │ ├── panels.less │ │ ├── popovers.less │ │ └── variables.less │ ├── fonts │ │ ├── fontello.eot │ │ ├── fontello.svg │ │ ├── fontello.ttf │ │ ├── fontello.woff │ │ └── fontello.woff2 │ ├── lib │ │ └── bootstrap │ │ │ ├── .editorconfig │ │ │ ├── .gitattributes │ │ │ ├── .gitignore │ │ │ ├── .hound.yml │ │ │ ├── .travis.yml │ │ │ ├── CHANGELOG.md │ │ │ ├── CNAME │ │ │ ├── CONTRIBUTING.md │ │ │ ├── Gruntfile.js │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── _config.yml │ │ │ ├── bower.json │ │ │ ├── composer.json │ │ │ ├── dist │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap-theme.min.css.map │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ ├── bootstrap.min.css │ │ │ │ └── bootstrap.min.css.map │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ ├── bootstrap.min.js │ │ │ │ └── npm.js │ │ │ ├── docs │ │ │ ├── LICENSE │ │ │ ├── _data │ │ │ │ ├── browser-bugs.yml │ │ │ │ ├── core-team.yml │ │ │ │ ├── glyphicons.yml │ │ │ │ ├── sass-team.yml │ │ │ │ ├── showcase.yml │ │ │ │ └── translations.yml │ │ │ ├── _includes │ │ │ │ ├── ads.html │ │ │ │ ├── components │ │ │ │ │ ├── alerts.html │ │ │ │ │ ├── badges.html │ │ │ │ │ ├── breadcrumbs.html │ │ │ │ │ ├── button-dropdowns.html │ │ │ │ │ ├── button-groups.html │ │ │ │ │ ├── dropdowns.html │ │ │ │ │ ├── glyphicons.html │ │ │ │ │ ├── input-groups.html │ │ │ │ │ ├── jumbotron.html │ │ │ │ │ ├── labels.html │ │ │ │ │ ├── list-group.html │ │ │ │ │ ├── media.html │ │ │ │ │ ├── navbar.html │ │ │ │ │ ├── navs.html │ │ │ │ │ ├── page-header.html │ │ │ │ │ ├── pagination.html │ │ │ │ │ ├── panels.html │ │ │ │ │ ├── progress-bars.html │ │ │ │ │ ├── responsive-embed.html │ │ │ │ │ ├── thumbnails.html │ │ │ │ │ └── wells.html │ │ │ │ ├── css │ │ │ │ │ ├── buttons.html │ │ │ │ │ ├── code.html │ │ │ │ │ ├── forms.html │ │ │ │ │ ├── grid.html │ │ │ │ │ ├── helpers.html │ │ │ │ │ ├── images.html │ │ │ │ │ ├── less.html │ │ │ │ │ ├── overview.html │ │ │ │ │ ├── responsive-utilities.html │ │ │ │ │ ├── sass.html │ │ │ │ │ ├── tables.html │ │ │ │ │ └── type.html │ │ │ │ ├── customizer-variables.html │ │ │ │ ├── footer.html │ │ │ │ ├── getting-started │ │ │ │ │ ├── accessibility.html │ │ │ │ │ ├── browser-device-support.html │ │ │ │ │ ├── community.html │ │ │ │ │ ├── disabling-responsiveness.html │ │ │ │ │ ├── download.html │ │ │ │ │ ├── examples.html │ │ │ │ │ ├── grunt.html │ │ │ │ │ ├── license.html │ │ │ │ │ ├── template.html │ │ │ │ │ ├── third-party-support.html │ │ │ │ │ ├── tools.html │ │ │ │ │ ├── translations.html │ │ │ │ │ └── whats-included.html │ │ │ │ ├── header.html │ │ │ │ ├── js │ │ │ │ │ ├── affix.html │ │ │ │ │ ├── alerts.html │ │ │ │ │ ├── buttons.html │ │ │ │ │ ├── carousel.html │ │ │ │ │ ├── collapse.html │ │ │ │ │ ├── dropdowns.html │ │ │ │ │ ├── modal.html │ │ │ │ │ ├── overview.html │ │ │ │ │ ├── popovers.html │ │ │ │ │ ├── scrollspy.html │ │ │ │ │ ├── tabs.html │ │ │ │ │ ├── tooltips.html │ │ │ │ │ └── transitions.html │ │ │ │ └── nav │ │ │ │ │ ├── about.html │ │ │ │ │ ├── components.html │ │ │ │ │ ├── css.html │ │ │ │ │ ├── customize.html │ │ │ │ │ ├── getting-started.html │ │ │ │ │ ├── javascript.html │ │ │ │ │ ├── main.html │ │ │ │ │ └── migration.html │ │ │ ├── _jade │ │ │ │ ├── customizer-nav.jade │ │ │ │ └── customizer-variables.jade │ │ │ ├── _layouts │ │ │ │ ├── default.html │ │ │ │ └── home.html │ │ │ ├── _plugins │ │ │ │ ├── bridge.rb │ │ │ │ └── bugify.rb │ │ │ ├── about.html │ │ │ ├── apple-touch-icon.png │ │ │ ├── assets │ │ │ │ ├── brand │ │ │ │ │ ├── bootstrap-outline.svg │ │ │ │ │ ├── bootstrap-punchout.svg │ │ │ │ │ └── bootstrap-solid.svg │ │ │ │ ├── css │ │ │ │ │ ├── docs.min.css │ │ │ │ │ ├── docs.min.css.map │ │ │ │ │ ├── ie10-viewport-bug-workaround.css │ │ │ │ │ └── src │ │ │ │ │ │ ├── docs.css │ │ │ │ │ │ └── pygments-manni.css │ │ │ │ ├── flash │ │ │ │ │ └── ZeroClipboard.swf │ │ │ │ ├── img │ │ │ │ │ ├── components.png │ │ │ │ │ ├── devices.png │ │ │ │ │ ├── expo-lyft.jpg │ │ │ │ │ ├── expo-newsweek.jpg │ │ │ │ │ ├── expo-riot.jpg │ │ │ │ │ ├── expo-vogue.jpg │ │ │ │ │ └── sass-less.png │ │ │ │ └── js │ │ │ │ │ ├── customize.min.js │ │ │ │ │ ├── docs.min.js │ │ │ │ │ ├── ie-emulation-modes-warning.js │ │ │ │ │ ├── ie10-viewport-bug-workaround.js │ │ │ │ │ ├── ie8-responsive-file-warning.js │ │ │ │ │ ├── raw-files.min.js │ │ │ │ │ ├── src │ │ │ │ │ ├── application.js │ │ │ │ │ └── customizer.js │ │ │ │ │ └── vendor │ │ │ │ │ ├── Blob.js │ │ │ │ │ ├── FileSaver.js │ │ │ │ │ ├── ZeroClipboard.min.js │ │ │ │ │ ├── anchor.js │ │ │ │ │ ├── autoprefixer.js │ │ │ │ │ ├── holder.min.js │ │ │ │ │ ├── jquery.min.js │ │ │ │ │ ├── jszip.min.js │ │ │ │ │ ├── less.min.js │ │ │ │ │ └── uglify.min.js │ │ │ ├── browser-bugs.html │ │ │ ├── components.html │ │ │ ├── css.html │ │ │ ├── customize.html │ │ │ ├── dist │ │ │ │ ├── css │ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ │ ├── bootstrap-theme.min.css.map │ │ │ │ │ ├── bootstrap.css │ │ │ │ │ ├── bootstrap.css.map │ │ │ │ │ ├── bootstrap.min.css │ │ │ │ │ └── bootstrap.min.css.map │ │ │ │ ├── fonts │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ │ └── js │ │ │ │ │ ├── bootstrap.js │ │ │ │ │ ├── bootstrap.min.js │ │ │ │ │ └── npm.js │ │ │ ├── examples │ │ │ │ ├── blog │ │ │ │ │ ├── blog.css │ │ │ │ │ └── index.html │ │ │ │ ├── carousel │ │ │ │ │ ├── carousel.css │ │ │ │ │ └── index.html │ │ │ │ ├── cover │ │ │ │ │ ├── cover.css │ │ │ │ │ └── index.html │ │ │ │ ├── dashboard │ │ │ │ │ ├── dashboard.css │ │ │ │ │ └── index.html │ │ │ │ ├── grid │ │ │ │ │ ├── grid.css │ │ │ │ │ └── index.html │ │ │ │ ├── jumbotron-narrow │ │ │ │ │ ├── index.html │ │ │ │ │ └── jumbotron-narrow.css │ │ │ │ ├── jumbotron │ │ │ │ │ ├── index.html │ │ │ │ │ └── jumbotron.css │ │ │ │ ├── justified-nav │ │ │ │ │ ├── index.html │ │ │ │ │ └── justified-nav.css │ │ │ │ ├── navbar-fixed-top │ │ │ │ │ ├── index.html │ │ │ │ │ └── navbar-fixed-top.css │ │ │ │ ├── navbar-static-top │ │ │ │ │ ├── index.html │ │ │ │ │ └── navbar-static-top.css │ │ │ │ ├── navbar │ │ │ │ │ ├── index.html │ │ │ │ │ └── navbar.css │ │ │ │ ├── non-responsive │ │ │ │ │ ├── index.html │ │ │ │ │ └── non-responsive.css │ │ │ │ ├── offcanvas │ │ │ │ │ ├── index.html │ │ │ │ │ ├── offcanvas.css │ │ │ │ │ └── offcanvas.js │ │ │ │ ├── screenshots │ │ │ │ │ ├── blog.jpg │ │ │ │ │ ├── carousel.jpg │ │ │ │ │ ├── cover.jpg │ │ │ │ │ ├── dashboard.jpg │ │ │ │ │ ├── equal-height-columns.jpg │ │ │ │ │ ├── grid.jpg │ │ │ │ │ ├── jumbotron-narrow.jpg │ │ │ │ │ ├── jumbotron.jpg │ │ │ │ │ ├── justified-nav.jpg │ │ │ │ │ ├── navbar-fixed.jpg │ │ │ │ │ ├── navbar-static.jpg │ │ │ │ │ ├── navbar.jpg │ │ │ │ │ ├── non-responsive.jpg │ │ │ │ │ ├── offcanvas.jpg │ │ │ │ │ ├── sign-in.jpg │ │ │ │ │ ├── starter-template.jpg │ │ │ │ │ ├── sticky-footer-navbar.jpg │ │ │ │ │ ├── sticky-footer.jpg │ │ │ │ │ └── theme.jpg │ │ │ │ ├── signin │ │ │ │ │ ├── index.html │ │ │ │ │ └── signin.css │ │ │ │ ├── starter-template │ │ │ │ │ ├── index.html │ │ │ │ │ └── starter-template.css │ │ │ │ ├── sticky-footer-navbar │ │ │ │ │ ├── index.html │ │ │ │ │ └── sticky-footer-navbar.css │ │ │ │ ├── sticky-footer │ │ │ │ │ ├── index.html │ │ │ │ │ └── sticky-footer.css │ │ │ │ ├── theme │ │ │ │ │ ├── index.html │ │ │ │ │ └── theme.css │ │ │ │ └── tooltip-viewport │ │ │ │ │ ├── index.html │ │ │ │ │ ├── tooltip-viewport.css │ │ │ │ │ └── tooltip-viewport.js │ │ │ ├── favicon.ico │ │ │ ├── getting-started.html │ │ │ ├── index.html │ │ │ ├── javascript.html │ │ │ ├── migration.html │ │ │ ├── robots.txt │ │ │ └── sitemap.xml │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── grunt │ │ │ ├── .jshintrc │ │ │ ├── bs-commonjs-generator.js │ │ │ ├── bs-glyphicons-data-generator.js │ │ │ ├── bs-lessdoc-parser.js │ │ │ ├── bs-raw-files-generator.js │ │ │ ├── configBridge.json │ │ │ └── sauce_browsers.yml │ │ │ ├── js │ │ │ ├── .jscsrc │ │ │ ├── .jshintrc │ │ │ ├── affix.js │ │ │ ├── alert.js │ │ │ ├── button.js │ │ │ ├── carousel.js │ │ │ ├── collapse.js │ │ │ ├── dropdown.js │ │ │ ├── modal.js │ │ │ ├── popover.js │ │ │ ├── scrollspy.js │ │ │ ├── tab.js │ │ │ ├── tests │ │ │ │ ├── README.md │ │ │ │ ├── index.html │ │ │ │ ├── unit │ │ │ │ │ ├── .jshintrc │ │ │ │ │ ├── affix.js │ │ │ │ │ ├── alert.js │ │ │ │ │ ├── button.js │ │ │ │ │ ├── carousel.js │ │ │ │ │ ├── collapse.js │ │ │ │ │ ├── dropdown.js │ │ │ │ │ ├── modal.js │ │ │ │ │ ├── phantom.js │ │ │ │ │ ├── popover.js │ │ │ │ │ ├── scrollspy.js │ │ │ │ │ ├── tab.js │ │ │ │ │ └── tooltip.js │ │ │ │ ├── vendor │ │ │ │ │ ├── jquery.min.js │ │ │ │ │ ├── qunit.css │ │ │ │ │ └── qunit.js │ │ │ │ └── visual │ │ │ │ │ ├── affix-with-sticky-footer.html │ │ │ │ │ ├── affix.html │ │ │ │ │ ├── alert.html │ │ │ │ │ ├── button.html │ │ │ │ │ ├── carousel.html │ │ │ │ │ ├── collapse.html │ │ │ │ │ ├── dropdown.html │ │ │ │ │ ├── modal.html │ │ │ │ │ ├── popover.html │ │ │ │ │ ├── scrollspy.html │ │ │ │ │ ├── tab.html │ │ │ │ │ └── tooltip.html │ │ │ ├── tooltip.js │ │ │ └── transition.js │ │ │ ├── less │ │ │ ├── .csscomb.json │ │ │ ├── .csslintrc │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins.less │ │ │ ├── mixins │ │ │ │ ├── alerts.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── buttons.less │ │ │ │ ├── center-block.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── forms.less │ │ │ │ ├── gradients.less │ │ │ │ ├── grid-framework.less │ │ │ │ ├── grid.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── image.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── opacity.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── reset-text.less │ │ │ │ ├── resize.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── size.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── table-row.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ └── vendor-prefixes.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ │ ├── nuget │ │ │ ├── MyGet.ps1 │ │ │ ├── bootstrap.less.nuspec │ │ │ └── bootstrap.nuspec │ │ │ ├── package.js │ │ │ ├── package.json │ │ │ └── test-infra │ │ │ ├── README.md │ │ │ ├── S3Cachefile.json │ │ │ ├── npm-shrinkwrap.json │ │ │ ├── requirements.txt │ │ │ ├── s3_cache.py │ │ │ └── uncached-npm-install.sh │ ├── package.js │ ├── theme-data.js │ └── theme │ │ ├── accounts │ │ ├── accounts.less │ │ └── inline │ │ │ └── inline.less │ │ ├── cart │ │ ├── cartDrawer │ │ │ ├── cartDrawer.less │ │ │ ├── cartItems │ │ │ │ └── cartItems.less │ │ │ └── cartSubTotals │ │ │ │ └── cartSubTotals.less │ │ ├── cartIcon │ │ │ └── cartIcon.less │ │ └── checkout │ │ │ ├── addressBook │ │ │ └── addressBook.less │ │ │ ├── checkout.less │ │ │ └── progressBar │ │ │ └── progressBar.less │ │ ├── dashboard │ │ ├── console │ │ │ └── console.less │ │ ├── dashboard.less │ │ ├── icon.css │ │ ├── orders │ │ │ └── orders.less │ │ ├── packages │ │ │ └── grid │ │ │ │ └── package │ │ │ │ └── package.less │ │ ├── shop │ │ │ ├── accounts.less │ │ │ └── settings.less │ │ └── widget │ │ │ └── widget.less │ │ ├── layout │ │ ├── footer │ │ │ └── footer.less │ │ ├── header │ │ │ ├── header.less │ │ │ └── tags │ │ │ │ └── tags.less │ │ └── layout.less │ │ └── products │ │ ├── productDetail │ │ ├── attributes │ │ │ └── attributes.less │ │ ├── images │ │ │ └── productImageGallery.less │ │ ├── productDetail.less │ │ ├── tags │ │ │ └── tags.less │ │ └── variants │ │ │ ├── variant.less │ │ │ ├── variantForm │ │ │ ├── childVariant │ │ │ │ └── childVariant.less │ │ │ └── variantForm.less │ │ │ └── variantList │ │ │ └── variantList.less │ │ ├── productGrid │ │ └── productGrid.less │ │ ├── productList │ │ └── productList.less │ │ └── products.less ├── reaction-core │ ├── .gitignore │ ├── .npm │ │ └── package │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ └── npm-shrinkwrap.json │ ├── LICENSE.md │ ├── README.md │ ├── client │ │ ├── components │ │ │ └── numericInput │ │ │ │ ├── numericInput.html │ │ │ │ └── numericInput.js │ │ ├── helpers │ │ │ ├── apps.js │ │ │ ├── globals.js │ │ │ ├── layout.js │ │ │ ├── permissions.js │ │ │ ├── products.js │ │ │ └── utilities.js │ │ └── main.js │ ├── common │ │ ├── common.js │ │ ├── global.js │ │ └── hooks │ │ │ └── orders.js │ ├── lib │ │ ├── .bowerrc │ │ ├── .gitignore │ │ ├── bower.json │ │ ├── css │ │ │ └── jquery-ui.css │ │ └── geocoder.js │ ├── package.js │ ├── server │ │ ├── browserPolicy.js │ │ ├── hooks.js │ │ ├── import.js │ │ ├── init.js │ │ ├── jobs.js │ │ ├── logger.js │ │ ├── main.js │ │ ├── methods │ │ │ ├── .gitignore │ │ │ ├── cart.js │ │ │ ├── hooks │ │ │ │ ├── cart.js │ │ │ │ └── hooks.js │ │ │ ├── orders.js │ │ │ ├── payments.js │ │ │ ├── shipping.js │ │ │ ├── shop.js │ │ │ └── workflows │ │ │ │ └── orders.js │ │ ├── register.js │ │ └── registry │ │ │ ├── assignRoles.js │ │ │ ├── defaultAdmin.js │ │ │ ├── loadPackages.js │ │ │ ├── loadSettings.js │ │ │ ├── registry.js │ │ │ ├── setDomain.js │ │ │ └── shopName.js │ └── tests │ │ └── jasmine │ │ └── server │ │ └── integration │ │ ├── cart.js │ │ ├── methods.js │ │ └── shops.js ├── reaction-dashboard │ ├── README.md │ ├── client │ │ └── templates │ │ │ └── dashboard │ │ │ ├── dashboard.html │ │ │ ├── dashboard.js │ │ │ ├── import │ │ │ ├── import.html │ │ │ └── import.js │ │ │ ├── packages │ │ │ ├── README.md │ │ │ ├── grid │ │ │ │ ├── grid.html │ │ │ │ ├── grid.js │ │ │ │ └── package │ │ │ │ │ ├── package.html │ │ │ │ │ └── package.js │ │ │ └── packages.html │ │ │ ├── settings │ │ │ ├── settings.html │ │ │ └── settings.js │ │ │ └── shop │ │ │ └── settings │ │ │ ├── settings.html │ │ │ └── settings.js │ ├── package.js │ └── server │ │ └── register.js ├── reaction-default-theme │ ├── README.md │ ├── img │ │ └── .gitignore │ ├── main.less │ └── package.js ├── reaction-email-templates │ ├── README.md │ ├── package.js │ ├── server │ │ └── register.js │ ├── templates.js │ └── templates │ │ ├── accounts │ │ ├── inviteShopMember.html │ │ └── sendWelcomeEmail.html │ │ ├── checkout │ │ └── checkoutLogin.html │ │ ├── coreDefault.html │ │ └── orders │ │ ├── coreOrderCompleted.html │ │ ├── coreOrderCreated.html │ │ ├── coreOrderShippingInvoice.html │ │ ├── coreOrderShippingSummary.html │ │ ├── coreOrderShippingTracking.html │ │ └── new.html ├── reaction-i18n │ ├── .npm │ │ └── package │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ └── npm-shrinkwrap.json │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ ├── helpers.js │ │ │ └── i18n.js │ │ ├── i18next.browserify.js │ │ └── templates │ │ │ ├── header │ │ │ ├── i18n.html │ │ │ └── i18n.js │ │ │ ├── i18nSettings.html │ │ │ └── i18nSettings.js │ ├── package.js │ ├── private │ │ ├── data │ │ │ └── i18n │ │ │ │ ├── _README.md │ │ │ │ ├── ar.json │ │ │ │ ├── bg.json │ │ │ │ ├── cn.json │ │ │ │ ├── cs.json │ │ │ │ ├── de.json │ │ │ │ ├── el.json │ │ │ │ ├── en.json │ │ │ │ ├── es.json │ │ │ │ ├── fr.json │ │ │ │ ├── he.json │ │ │ │ ├── hr.json │ │ │ │ ├── hu.json │ │ │ │ ├── it.json │ │ │ │ ├── my.json │ │ │ │ ├── nb.json │ │ │ │ ├── nl.json │ │ │ │ ├── pl.json │ │ │ │ ├── pt.json │ │ │ │ ├── ru.json │ │ │ │ ├── sl.json │ │ │ │ ├── sv.json │ │ │ │ ├── tr.json │ │ │ │ └── vi.json │ │ └── readme.md │ ├── server │ │ ├── i18next.js │ │ ├── import.js │ │ ├── methods.js │ │ └── register.js │ └── tests │ │ └── jasmine │ │ └── server │ │ └── integration │ │ └── methods.js ├── reaction-inventory │ ├── README.md │ ├── client │ │ └── templates │ │ │ ├── dashboard │ │ │ ├── inventory.html │ │ │ └── inventory.js │ │ │ └── settings │ │ │ ├── settings.html │ │ │ └── settings.js │ ├── common │ │ ├── collections.js │ │ ├── globals.js │ │ ├── hooks.js │ │ ├── methods.js │ │ └── schema.js │ ├── package.js │ ├── server │ │ ├── logger.js │ │ ├── methods.js │ │ ├── publications.js │ │ └── register.js │ └── tests │ │ └── jasmine │ │ └── server │ │ └── integration │ │ └── inventorySpecs.js ├── reaction-layout │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ └── metadata.js │ │ └── templates │ │ │ ├── layout │ │ │ ├── admin │ │ │ │ ├── admin.html │ │ │ │ └── admin.js │ │ │ ├── alerts │ │ │ │ ├── alerts.html │ │ │ │ ├── alerts.js │ │ │ │ ├── inlineAlerts.js │ │ │ │ └── reactionAlerts.js │ │ │ ├── createContentMenu │ │ │ │ ├── createContentMenu.html │ │ │ │ └── createContentMenu.js │ │ │ ├── footer │ │ │ │ └── footer.html │ │ │ ├── header │ │ │ │ ├── brand │ │ │ │ │ └── brand.html │ │ │ │ ├── header.html │ │ │ │ ├── header.js │ │ │ │ ├── menu │ │ │ │ │ └── button.html │ │ │ │ └── tags │ │ │ │ │ └── tags.html │ │ │ ├── layout.html │ │ │ ├── layout.js │ │ │ ├── loading │ │ │ │ └── loading.html │ │ │ ├── notFound │ │ │ │ ├── notFound.html │ │ │ │ └── notFound.js │ │ │ └── notice │ │ │ │ └── unauthorized.html │ │ │ └── theme │ │ │ ├── theme.html │ │ │ └── theme.js │ ├── package.js │ ├── private │ │ └── themes │ │ │ └── notFound.css │ └── server │ │ └── register.js ├── reaction-logging │ ├── .npm │ │ └── package │ │ │ ├── .gitignore │ │ │ ├── README │ │ │ └── npm-shrinkwrap.json │ ├── README.md │ ├── client │ │ └── bunyan.browserify.js │ ├── package.js │ ├── server │ │ └── main.js │ └── tests │ │ └── bunyan-test.js ├── reaction-orders │ ├── README.md │ ├── client │ │ └── templates │ │ │ └── dashboard │ │ │ └── orders │ │ │ ├── details │ │ │ ├── detail.html │ │ │ └── detail.js │ │ │ ├── list │ │ │ ├── items │ │ │ │ ├── items.html │ │ │ │ └── items.js │ │ │ ├── ordersList.html │ │ │ ├── ordersList.js │ │ │ ├── pdf │ │ │ │ ├── pdf.html │ │ │ │ └── pdf.js │ │ │ └── summary │ │ │ │ ├── summary.html │ │ │ │ └── summary.js │ │ │ ├── orderPage │ │ │ ├── details │ │ │ │ ├── details.html │ │ │ │ └── details.js │ │ │ ├── orderPage.html │ │ │ └── orderPage.js │ │ │ ├── orders.html │ │ │ ├── orders.js │ │ │ ├── social │ │ │ └── orderSocial.html │ │ │ └── workflow │ │ │ ├── orderCompleted │ │ │ └── orderCompleted.html │ │ │ ├── orderSummary │ │ │ └── orderSummary.html │ │ │ ├── shippingInvoice │ │ │ ├── shippingInvoice.html │ │ │ └── shippingInvoice.js │ │ │ ├── shippingSummary │ │ │ ├── shippingSummary.html │ │ │ └── shippingSummary.js │ │ │ ├── shippingTracking │ │ │ ├── shippingTracking.html │ │ │ └── shippingTracking.js │ │ │ ├── workflow.html │ │ │ └── workflow.js │ ├── package.js │ └── server │ │ └── register.js ├── reaction-p2p-marketplace-buyer │ ├── README.md │ ├── package.js │ ├── reaction-p2p-marketplace-buyer-tests.js │ └── reaction-p2p-marketplace-buyer.js ├── reaction-p2p-marketplace-locations │ ├── README.md │ ├── client │ │ └── templates │ │ │ ├── dashboard │ │ │ ├── locations.html │ │ │ └── locations.js │ │ │ └── products │ │ │ ├── locationField │ │ │ ├── locationField.html │ │ │ └── locationField.js │ │ │ ├── locationFieldDisplay │ │ │ ├── locationFieldDisplay.html │ │ │ └── locationFieldDisplay.js │ │ │ ├── productDetail │ │ │ └── productDetail.js │ │ │ ├── productMap │ │ │ ├── productMap.html │ │ │ ├── productMap.js │ │ │ ├── productMap.less │ │ │ ├── productMapSingle.html │ │ │ └── productMapSingle.js │ │ │ ├── productMapDetails │ │ │ ├── productMapDetails.html │ │ │ ├── productMapDetails.js │ │ │ └── productMapDetails.less │ │ │ └── products.js │ ├── common │ │ ├── collections │ │ │ └── collections.js │ │ └── schemas │ │ │ ├── mapmarkers.js │ │ │ └── schemas.js │ ├── package.js │ ├── public │ │ └── images │ │ │ └── icon.png │ ├── reaction-p2p-marketplace-locations-tests.js │ ├── reaction-p2p-marketplace-locations.js │ └── server │ │ ├── methods │ │ └── accounts.js │ │ ├── register.js │ │ └── security │ │ ├── browserPolicy.js │ │ └── security.js ├── reaction-p2p-marketplace-profile │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ └── validation.js │ │ └── templates │ │ │ ├── accountProfile │ │ │ ├── images │ │ │ │ ├── profileImageGallery.html │ │ │ │ └── profileImageGallery.js │ │ │ ├── marketplaceAccountProfile.html │ │ │ ├── marketplaceAccountProfile.js │ │ │ └── marketplaceAccountProfile.less │ │ │ └── publicProfile │ │ │ ├── marketplaceProfile.html │ │ │ ├── marketplaceProfile.js │ │ │ ├── marketplaceProfileWidget.html │ │ │ ├── marketplaceProfileWidget.js │ │ │ └── marketplaceProfileWidget.less │ ├── package.js │ ├── reaction-p2p-marketplace-profile-tests.js │ ├── reaction-p2p-marketplace-profile.js │ └── server │ │ ├── methods │ │ └── accounts.js │ │ ├── publications │ │ └── account.js │ │ └── register.js ├── reaction-p2p-marketplace-ratings │ ├── README.md │ ├── client │ │ └── templates │ │ │ └── products │ │ │ └── productDetail │ │ │ ├── productDetailMarketplaceRating.html │ │ │ └── productDetailMarketplaceRating.js │ ├── common │ │ ├── collections │ │ │ └── collections.js │ │ └── schemas │ │ │ └── ratings.js │ ├── package.js │ ├── reaction-p2p-marketplace-ratings-tests.js │ ├── reaction-p2p-marketplace-ratings.js │ └── server │ │ ├── publications │ │ └── ratings.js │ │ └── security │ │ └── ratings.js ├── reaction-p2p-marketplace-sell-date │ ├── README.md │ ├── client │ │ └── templates │ │ │ └── products │ │ │ ├── dateField │ │ │ ├── dateField.html │ │ │ ├── dateField.js │ │ │ └── dateField.less │ │ │ └── productDetail │ │ │ └── productDetailWithDate.js │ ├── common │ │ ├── collections │ │ │ └── collections.js │ │ └── schemas │ │ │ └── products.js │ ├── package.js │ ├── reaction-p2p-marketplace-sell-date-tests.js │ └── reaction-p2p-marketplace-sell-date.js ├── reaction-p2p-marketplace-seller │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ ├── globals.js │ │ │ └── validation.js │ │ └── templates │ │ │ ├── addressBook │ │ │ ├── addressBook.html │ │ │ └── addressBook.js │ │ │ ├── dashboard │ │ │ ├── orders │ │ │ │ ├── details │ │ │ │ │ ├── detail.html │ │ │ │ │ └── detail.js │ │ │ │ ├── sellerOrders.html │ │ │ │ ├── sellerOrders.js │ │ │ │ └── sellerOrders.less │ │ │ └── products │ │ │ │ └── list │ │ │ │ ├── productsList.html │ │ │ │ ├── productsList.js │ │ │ │ └── productsList.less │ │ │ ├── products │ │ │ └── productDetail │ │ │ │ ├── productDetail.html │ │ │ │ ├── productDetail.js │ │ │ │ ├── productDetail.less │ │ │ │ └── variants │ │ │ │ └── variantForm │ │ │ │ ├── variantForm.html │ │ │ │ └── variantForm.js │ │ │ ├── signIn │ │ │ ├── signIn.html │ │ │ └── signIn.js │ │ │ ├── signUp │ │ │ ├── sellerFlag.html │ │ │ ├── signUp.html │ │ │ └── signUp.js │ │ │ └── userDecision │ │ │ ├── userDecision.html │ │ │ ├── userDecision.js │ │ │ └── userDecision.less │ ├── common │ │ ├── collections │ │ │ └── collections.js │ │ ├── common.js │ │ └── schemas │ │ │ ├── accounts.js │ │ │ ├── cart.js │ │ │ ├── i18n │ │ │ └── de.i18n.json │ │ │ ├── orders.js │ │ │ └── products.js │ ├── package.js │ ├── public │ │ └── images │ │ │ └── decision_deco.jpg │ ├── reaction-p2p-marketplace-seller-tests.js │ ├── reaction-p2p-marketplace-seller.js │ └── server │ │ ├── methods │ │ ├── accounts.js │ │ ├── cart.js │ │ └── products.js │ │ ├── publications │ │ ├── orders.js │ │ ├── product.js │ │ └── productsForOrdersHistory.js │ │ └── register.js ├── reaction-p2p-marketplace-simplified-products │ ├── README.md │ ├── client │ │ └── templates │ │ │ ├── cart │ │ │ ├── cartDrawer │ │ │ │ ├── cartDrawer.html │ │ │ │ ├── cartDrawer.js │ │ │ │ ├── cartDrawer.less │ │ │ │ ├── cartItems │ │ │ │ │ ├── cartItems.html │ │ │ │ │ └── cartItems.js │ │ │ │ └── cartSubTotals │ │ │ │ │ ├── cartSubTotals.html │ │ │ │ │ └── cartSubTotals.js │ │ │ └── checkout │ │ │ │ └── checkout.less │ │ │ └── products │ │ │ └── productDetail │ │ │ ├── productDetailHideVariants.js │ │ │ ├── simplifiedProduct.html │ │ │ ├── simplifiedProduct.js │ │ │ ├── simplifiedProductBuyer.css │ │ │ ├── simplifiedProductSeller.css │ │ │ └── tags │ │ │ ├── tags.html │ │ │ ├── tags.js │ │ │ └── tags.less │ ├── package.js │ ├── reaction-p2p-marketplace-simplified-products-tests.js │ ├── reaction-p2p-marketplace-simplified-products.js │ └── server │ │ └── methods │ │ └── products.js ├── reaction-p2p-marketplace │ ├── README.md │ ├── client │ │ └── templates │ │ │ ├── cart │ │ │ └── checkout │ │ │ │ ├── checkout.html │ │ │ │ ├── checkout.js │ │ │ │ ├── completed │ │ │ │ ├── completed.html │ │ │ │ └── completed.js │ │ │ │ └── header │ │ │ │ ├── header.html │ │ │ │ └── header.js │ │ │ ├── dashboard │ │ │ └── orders │ │ │ │ └── list │ │ │ │ ├── itemSeller │ │ │ │ ├── itemSeller.html │ │ │ │ └── itemSeller.js │ │ │ │ ├── items │ │ │ │ ├── items.html │ │ │ │ └── items.js │ │ │ │ ├── ordersList.html │ │ │ │ └── ordersList.js │ │ │ ├── dropdown │ │ │ ├── dropdown.html │ │ │ ├── dropdown.js │ │ │ └── dropdown.less │ │ │ ├── products │ │ │ ├── productList │ │ │ │ └── productList.less │ │ │ ├── products.less │ │ │ ├── productsMarketplace.html │ │ │ ├── productsMarketplace.js │ │ │ └── productsViewSwitcher.html │ │ │ └── style.less │ ├── package.js │ ├── reaction-p2p-marketplace-tests.js │ ├── reaction-p2p-marketplace.js │ └── server │ │ └── methods │ │ ├── accounts.js │ │ ├── cart.js │ │ └── checkout.js ├── reaction-product-variant │ ├── README.md │ ├── client │ │ ├── helpers │ │ │ ├── global.js │ │ │ └── products.js │ │ └── templates │ │ │ └── products │ │ │ ├── productDetail │ │ │ ├── attributes │ │ │ │ ├── attributes.html │ │ │ │ └── attributes.js │ │ │ ├── edit │ │ │ │ ├── edit.html │ │ │ │ └── edit.js │ │ │ ├── images │ │ │ │ ├── productImageGallery.html │ │ │ │ └── productImageGallery.js │ │ │ ├── productDetail.html │ │ │ ├── productDetail.js │ │ │ ├── social │ │ │ │ ├── social.html │ │ │ │ └── social.js │ │ │ ├── tags │ │ │ │ ├── tags.html │ │ │ │ └── tags.js │ │ │ └── variants │ │ │ │ ├── variant.html │ │ │ │ ├── variant.js │ │ │ │ ├── variantForm │ │ │ │ ├── childVariant │ │ │ │ │ ├── childVariant.html │ │ │ │ │ └── childVariant.js │ │ │ │ ├── variantForm.html │ │ │ │ └── variantForm.js │ │ │ │ └── variantList │ │ │ │ ├── variantList.html │ │ │ │ └── variantList.js │ │ │ ├── productGrid │ │ │ ├── content │ │ │ │ ├── content.html │ │ │ │ └── content.js │ │ │ ├── controls │ │ │ │ ├── controls.html │ │ │ │ └── controls.js │ │ │ ├── item │ │ │ │ ├── item.html │ │ │ │ └── item.js │ │ │ ├── notice │ │ │ │ ├── notice.html │ │ │ │ └── notice.js │ │ │ ├── productGrid.html │ │ │ └── productGrid.js │ │ │ ├── productList │ │ │ ├── productList.html │ │ │ └── productList.js │ │ │ ├── productSettings │ │ │ ├── productSettings.html │ │ │ └── productSettings.js │ │ │ ├── products.html │ │ │ └── products.js │ ├── package.js │ └── server │ │ └── register.js ├── reaction-router │ ├── README.md │ ├── client │ │ └── helpers.js │ ├── common │ │ ├── init.js │ │ └── layout.js │ ├── package.js │ └── server │ │ └── register.js ├── reaction-sample-data-custom │ ├── README.md │ ├── package.js │ ├── private │ │ └── data │ │ │ ├── Products.json │ │ │ ├── Shops.json │ │ │ └── Tags.json │ └── server │ │ └── load.js ├── reaction-sample-data │ ├── README.md │ ├── package.js │ ├── private │ │ └── data │ │ │ ├── Products.json │ │ │ ├── Shops.json │ │ │ └── Tags.json │ └── server │ │ └── load.js ├── reaction-schemas │ ├── README.md │ ├── common │ │ ├── common.js │ │ ├── propTypes │ │ │ └── tags.js │ │ └── schemas │ │ │ ├── accounts.js │ │ │ ├── address.js │ │ │ ├── cart.js │ │ │ ├── discounts.js │ │ │ ├── layouts.js │ │ │ ├── orders.js │ │ │ ├── payments.js │ │ │ ├── products.js │ │ │ ├── registry.js │ │ │ ├── shipping.js │ │ │ ├── shops.js │ │ │ ├── tags.js │ │ │ ├── taxes.js │ │ │ ├── templates.js │ │ │ ├── themes.js │ │ │ ├── translations.js │ │ │ └── workflow.js │ └── package.js ├── reaction-shipping │ ├── .gitignore │ ├── README.md │ ├── client │ │ └── templates │ │ │ ├── cart │ │ │ └── checkout │ │ │ │ └── shipping │ │ │ │ ├── shipping.html │ │ │ │ └── shipping.js │ │ │ ├── shipping.html │ │ │ ├── shipping.js │ │ │ └── shipping.less │ ├── common │ │ └── collections.js │ ├── package.js │ ├── private │ │ └── data │ │ │ └── Shipping.json │ └── server │ │ ├── fixtures.js │ │ ├── methods.js │ │ └── register.js ├── reaction-social │ ├── .gitignore │ ├── LICENSE │ ├── LICENSE.md │ ├── README.md │ ├── client │ │ └── templates │ │ │ ├── apps │ │ │ ├── facebook.html │ │ │ ├── facebook.js │ │ │ ├── googleplus.html │ │ │ ├── googleplus.js │ │ │ ├── pinterest.html │ │ │ ├── pinterest.js │ │ │ ├── twitter.html │ │ │ └── twitter.js │ │ │ ├── dashboard │ │ │ ├── social.html │ │ │ └── social.js │ │ │ ├── social.html │ │ │ └── social.js │ ├── common │ │ └── schemas.js │ ├── package.js │ └── server │ │ ├── policy.js │ │ └── register.js ├── reaction-ui-navbar │ ├── README.md │ ├── client │ │ └── components │ │ │ ├── brand │ │ │ ├── brand.html │ │ │ ├── brand.js │ │ │ └── brand.less │ │ │ ├── i18n │ │ │ ├── i18n.html │ │ │ └── i18n.js │ │ │ └── navbar │ │ │ ├── navbar.html │ │ │ ├── navbar.js │ │ │ └── navbar.less │ ├── package.js │ ├── private │ │ └── themes │ │ │ └── navbar.css │ └── server │ │ └── register.js ├── reaction-ui-tagnav │ ├── README.md │ ├── client │ │ ├── components │ │ │ ├── components.js │ │ │ ├── tagGroup │ │ │ │ ├── tagGroup.html │ │ │ │ ├── tagGroup.js │ │ │ │ └── tagGroup.less │ │ │ ├── tagNav │ │ │ │ ├── tagNav.html │ │ │ │ ├── tagNav.js │ │ │ │ └── tagNav.less │ │ │ └── tagTree │ │ │ │ ├── tagTree.html │ │ │ │ ├── tagTree.js │ │ │ │ └── tagTree.less │ │ ├── helpers │ │ │ ├── helpers.js │ │ │ └── tags.js │ │ └── styles │ │ │ └── base.less │ └── package.js └── reaction-ui │ ├── .gitignore │ ├── .npm │ └── package │ │ ├── .gitignore │ │ ├── README │ │ └── npm-shrinkwrap.json │ ├── LICENSE │ ├── README.md │ ├── client │ ├── components │ │ ├── button │ │ │ ├── button.html │ │ │ ├── button.js │ │ │ ├── button.jsx │ │ │ └── button.less │ │ ├── buttonGroup │ │ │ ├── buttonGroup.jsx │ │ │ └── buttonGroup.less │ │ ├── cards │ │ │ ├── cardGroup.html │ │ │ ├── cardGroup.less │ │ │ ├── cards.html │ │ │ ├── cards.js │ │ │ └── cards.less │ │ ├── components.jsx │ │ ├── gallery │ │ │ └── gallery.jsx │ │ ├── icon │ │ │ └── icon.jsx │ │ ├── items │ │ │ └── items.less │ │ ├── media │ │ │ ├── media.jsx │ │ │ └── media.less │ │ ├── metadata │ │ │ ├── metadata.jsx │ │ │ └── metadata.less │ │ ├── numericInput │ │ │ ├── numericInput.html │ │ │ └── numericInput.js │ │ ├── popover │ │ │ └── popover.less │ │ ├── select │ │ │ ├── select.html │ │ │ ├── select.js │ │ │ └── select.less │ │ ├── separator │ │ │ ├── separator.jsx │ │ │ └── separator.less │ │ ├── socialShare │ │ │ └── socialShare.jsx │ │ ├── sortable │ │ │ └── sortable.jsx │ │ ├── tags │ │ │ ├── tag.jsx │ │ │ ├── tagItem.html │ │ │ ├── tagItem.js │ │ │ ├── tagList.html │ │ │ ├── tagList.js │ │ │ ├── tags.jsx │ │ │ └── tags.less │ │ ├── textfield │ │ │ ├── textfield.html │ │ │ ├── textfield.jsx │ │ │ └── textfield.less │ │ ├── tooltip │ │ │ └── tooltip.less │ │ └── upload │ │ │ ├── upload.html │ │ │ └── upload.js │ ├── helpers │ │ └── helpers.js │ ├── styles │ │ ├── mixins.less │ │ └── variables.less │ └── templates │ │ ├── dashboard │ │ ├── dashboard.html │ │ └── dashboard.js │ │ ├── themeDetails │ │ ├── themeDetails.html │ │ └── themeDetails.js │ │ └── themeEditor │ │ ├── themeEditor.html │ │ ├── themeEditor.js │ │ └── themeEditor.less │ ├── common │ ├── cssProperties.js │ └── global.js │ ├── lib │ └── client.browserify.js │ ├── package.js │ ├── private │ └── themes │ │ ├── button.css │ │ └── theme.css │ └── server │ ├── processTheme.js │ └── register.js ├── private ├── db-updates │ └── 151 User wird unentschieden.js └── settings │ ├── .gitignore │ └── reaction.json.example ├── public ├── about.html ├── agbB.html ├── agbS.html ├── assets │ ├── bootstrap │ │ ├── css │ │ │ └── bootstrap.min.css │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ └── bootstrap.min.js │ ├── formoid │ │ └── formoid.min.js │ ├── images │ │ ├── Berechnungsbeispiel.png │ │ ├── bekanntheit-kreide.png │ │ ├── bestellung-kreide.png │ │ ├── bezahlung-kreide.png │ │ ├── food-kreide.png │ │ ├── holz.jpg │ │ ├── kochen-kreide.png │ │ ├── profil-kreide.png │ │ ├── snaxter_hintergrund.png │ │ ├── snaxter_icon.jpg │ │ ├── socialmedia.jpg │ │ ├── tom_josh.jpg │ │ ├── wandtafel.jpg │ │ └── zuckerrohr.png │ ├── jarallax │ │ └── jarallax.js │ ├── jquery-placeholder │ │ └── jquery.placeholder.min.js │ ├── mobirise │ │ ├── css │ │ │ ├── mbr-additional.css │ │ │ └── style.css │ │ └── js │ │ │ └── script.js │ ├── scydev │ │ └── js │ │ │ └── search-form.js │ ├── smooth-scroll │ │ └── SmoothScroll.js │ ├── socicon │ │ ├── css │ │ │ └── socicon.min.css │ │ └── fonts │ │ │ ├── socicon.eot │ │ │ ├── socicon.svg │ │ │ ├── socicon.ttf │ │ │ └── socicon.woff │ └── web │ │ └── assets │ │ └── jquery │ │ └── jquery.min.js ├── faq.html ├── favicon.ico ├── howto.html ├── hungrypeople.snaxter.ch.html ├── hygiene.html ├── loaderio-7a47b8ab93fa78cda1de3d2a17ce4019.txt ├── resources │ ├── avatar.gif │ ├── placeholder.gif │ ├── reaction-logo-inverse.svg │ └── reaction-logo.svg └── tarife.html ├── reaction ├── server ├── fixtures.js └── policy.js ├── settings ├── .gitignore └── dev.settings.json └── tests ├── .gitignore └── jasmine └── client └── integration ├── cartSpecs.js ├── checkoutSpecs.js ├── lib └── helpers.js ├── loginSpecs.js ├── packageSpecs.js ├── productGridSpecs.js ├── productSpecs.js ├── routerSpecs.js ├── shopSpecs.js ├── subscriptions.js └── tagSpecs.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "whitelist": [ 3 | "es7.decorators", 4 | "es7.classProperties", 5 | "es7.exportExtensions", 6 | "es7.comprehensions" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.codeclimate.yml: -------------------------------------------------------------------------------- 1 | exclude_paths: 2 | - ".meteor/*" 3 | - "packages/reaction-core-theme/lib/*" 4 | - "packages/reaction-core/lib/*" 5 | - "packages/reaction-ui/private/*" 6 | - "packages/reaction-ui-navbar/private/*" 7 | engines: 8 | duplication: 9 | enabled: true 10 | config: 11 | languages: 12 | javascript: 13 | mass_threshold: 150 14 | 15 | eslint: 16 | enabled: true 17 | csslint: 18 | enabled: false 19 | fixme: 20 | enabled: true 21 | config: 22 | strings: 23 | - FIXME 24 | - BUG 25 | ratings: 26 | paths: 27 | - "**.js" 28 | - "**.jsx" 29 | - "**.css" 30 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | .meteor/local 2 | .build 3 | .build.* 4 | .npm 5 | .git 6 | .build.log 7 | Dockerfile 8 | docker/reaction.* 9 | docs 10 | packages/*/.npm 11 | packages/*/lib/bower 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.js] 15 | max_line_length = 160 16 | indent_brace_style = 1TBS 17 | spaces_around_operators = true 18 | quote_type = double 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | lib-cov 3 | *.seed 4 | *.log 5 | *.csv 6 | *.dat 7 | *.out 8 | *.pid 9 | *.gz 10 | *.sublime-project 11 | *.sublime-workspace 12 | .idea 13 | .c9 14 | .DS_Store 15 | 16 | pids 17 | logs 18 | results 19 | npm-debug.log 20 | .fileStorage/ 21 | packages/reaction-core/lib/bower 22 | 23 | jsdoc.json 24 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "packages/meteor-collection2"] 2 | path = packages/meteor-collection2 3 | url = https://github.com/ScyDev/meteor-collection2 4 | [submodule "packages/meteor-collection2-core"] 5 | path = packages/meteor-collection2-core 6 | url = https://github.com/ScyDev/meteor-collection2-core 7 | [submodule "packages/reaction-braintree"] 8 | path = packages/reaction-braintree 9 | url = https://github.com/ScyDev/reaction-braintree 10 | [submodule "packages/reaction-search"] 11 | path = packages/reaction-search 12 | url = https://github.com/ScyDev/reaction-search 13 | [submodule "packages/meteor-bootstrap3-datetimepicker"] 14 | path = packages/meteor-bootstrap3-datetimepicker 15 | url = https://github.com/ScyDev/meteor-bootstrap3-datetimepicker 16 | -------------------------------------------------------------------------------- /.jsbeautifyrc: -------------------------------------------------------------------------------- 1 | { 2 | "break_chained_methods": false, 3 | "e4x": false, 4 | "eval_code": false, 5 | "indent_char": " ", 6 | "indent_level": 0, 7 | "indent_size": 2, 8 | "indent_with_tabs": false, 9 | "jslint_happy": true, 10 | "keep_array_indentation": false, 11 | "keep_function_indentation": false, 12 | "max_preserve_newlines": 2, 13 | "preserve_newlines": true, 14 | "space_before_conditional": true, 15 | "space_in_paren": false, 16 | "unescape_strings": false, 17 | "wrap_line_length": 120, 18 | "space_after_anon_function": true, 19 | "end_with_newline": true 20 | } 21 | -------------------------------------------------------------------------------- /.meteor/.finished-upgraders: -------------------------------------------------------------------------------- 1 | # This file contains information which helps Meteor properly upgrade your 2 | # app when you run 'meteor update'. You should check it into version control 3 | # with your project. 4 | 5 | notices-for-0.9.0 6 | notices-for-0.9.1 7 | 0.9.4-platform-file 8 | notices-for-facebook-graph-api-2 9 | 1.2.0-standard-minifiers-package 10 | 1.2.0-meteor-platform-split 11 | 1.2.0-cordova-changes 12 | 1.2.0-breaking-changes 13 | -------------------------------------------------------------------------------- /.meteor/.gitignore: -------------------------------------------------------------------------------- 1 | local 2 | -------------------------------------------------------------------------------- /.meteor/.id: -------------------------------------------------------------------------------- 1 | # This file contains a token that is unique to your project. 2 | # Check it into your repository along with the rest of this directory. 3 | # It can be used for purposes such as: 4 | # - ensuring you don't accidentally deploy one app on top of another 5 | # - providing package authors with aggregated statistics 6 | 7 | 16fc7k11cajtkx5sgjml 8 | -------------------------------------------------------------------------------- /.meteor/cordova-plugins: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/.meteor/cordova-plugins -------------------------------------------------------------------------------- /.meteor/dev_bundle: -------------------------------------------------------------------------------- 1 | /root/.meteor/packages/meteor-tool/.1.3.4_4.xwd1ml++os.linux.x86_64+web.browser+web.cordova/mt-os.linux.x86_64/dev_bundle -------------------------------------------------------------------------------- /.meteor/platforms: -------------------------------------------------------------------------------- 1 | server 2 | browser 3 | -------------------------------------------------------------------------------- /.meteor/release: -------------------------------------------------------------------------------- 1 | METEOR@1.2.1 2 | -------------------------------------------------------------------------------- /.pullapprove.yml: -------------------------------------------------------------------------------- 1 | approve_by_comment: true 2 | approve_regex: '^(Approved|:\+1:)' # this only matches at the start of a line, just my suggestion -- read the docs for why 3 | reject_regex: '^(Rejected|:-1:)' 4 | reset_on_push: false 5 | reviewers: 6 | required: 2 7 | members: 8 | - aaronjudd 9 | - jshimko 10 | - mikemurray 11 | - zenweasel 12 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | docker/reaction.prod.docker -------------------------------------------------------------------------------- /Dockerfile_DEV: -------------------------------------------------------------------------------- 1 | docker/reaction.dev.src.docker -------------------------------------------------------------------------------- /Dockerfile_PROD: -------------------------------------------------------------------------------- 1 | docker/reaction.prod.docker -------------------------------------------------------------------------------- /Dockerfile_with_MONGO: -------------------------------------------------------------------------------- 1 | docker/reaction.mongo.docker -------------------------------------------------------------------------------- /bin/check-settings: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | CONFIG=$1 4 | if [ ! -f $CONFIG ]; then 5 | SAMPLE_CONFIG=${CONFIG/.json/.sample.json} 6 | echo "Error: config file \"$CONFIG\" not found. You have two options:" 7 | echo "- cp $SAMPLE_CONFIG $CONFIG # don't forget to edit!" 8 | echo "- request the file from developers" 9 | exit 1 10 | fi 11 | -------------------------------------------------------------------------------- /bin/collection-dump: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | OIFS=$IFS; 3 | IFS=","; 4 | 5 | # meteor local mongo (must be running) 6 | dbname='meteor' 7 | host='127.0.0.1:3002' 8 | 9 | # first get all collections in the database 10 | collections=`mongo "$host/$dbname" --eval "rs.slaveOk();db.getCollectionNames();"`; 11 | collectionArray=($collections); 12 | 13 | # for each collection 14 | for ((i=0; i<${#collectionArray[@]}; ++i)); 15 | do 16 | echo 'exporting collection' ${collectionArray[$i]} 17 | mongoexport --host $host --db $dbname -c ${collectionArray[$i]} --jsonArray --out private/data/${collectionArray[$i]}.json; 18 | sleep 1 19 | done 20 | 21 | IFS=$OIFS; -------------------------------------------------------------------------------- /bin/deploy: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | usage() { echo "Usage: $0 [hostname] [settings.json] [-P]" 1>&2; exit 1; } 4 | DIRNAME=$(cd `dirname $0` && pwd) 5 | 6 | CONFIG=$DIRNAME/../settings/$2 7 | . $DIRNAME/check-settings $CONFIG 8 | sed s/__VERSION__/$(git rev-parse HEAD)/ $CONFIG > /tmp/$2 9 | 10 | meteor deploy $3 --settings /tmp/$2 $1 -------------------------------------------------------------------------------- /bin/docker/.gitignore: -------------------------------------------------------------------------------- 1 | .build.log 2 | packages 3 | -------------------------------------------------------------------------------- /bin/docker/build-meteor.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # builds a production meteor bundle directory 5 | # 6 | set -e 7 | 8 | # Customize packages 9 | /bin/bash bin/docker/build-packages.sh 10 | 11 | # 12 | # build the source 13 | # 14 | meteor build --directory /var/www 15 | cd /var/www/bundle/programs/server/ && npm install 16 | -------------------------------------------------------------------------------- /bin/docker/build-packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # add bin/docker/packages to use custom build packages 5 | # 6 | 7 | if [ -f bin/docker/packages ]; then 8 | echo "info: using custom build package file." 9 | cp bin/docker/packages .meteor/packages 10 | exit 0 11 | fi 12 | -------------------------------------------------------------------------------- /bin/docker/install-graphicsmagick.sh: -------------------------------------------------------------------------------- 1 | 2 | #/bin/bash 3 | 4 | touch /var/timestamp 5 | 6 | # install graphicsmagick 7 | apt-get update 8 | apt-get -qq -y install --no-install-recommends graphicsmagick 9 | 10 | # remove anything isntalled by apt in /usr/share/doc after starting this script 11 | find /usr/share/doc \( -type f -o -empty \) -cnewer "/var/timestamp" -delete 12 | 13 | # remove unnecessary apt files 14 | apt-get clean 15 | rm -rf /var/lib/apt/lists/* 16 | -------------------------------------------------------------------------------- /bin/docker/install-mongodb.sh: -------------------------------------------------------------------------------- 1 | 2 | #/bin/bash 3 | 4 | # add the mongodb repo to get the latest release 5 | apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 6 | echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | tee /etc/apt/sources.list.d/mongodb-org-3.0.list 7 | 8 | # install the mongodb server binaries 9 | apt-get update 10 | apt-get -qq -y install --no-install-recommends adduser mongodb-org-server 11 | 12 | # remove unnecessary apt files 13 | apt-get clean 14 | rm -rf /var/lib/apt/lists/* 15 | -------------------------------------------------------------------------------- /bin/env.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Set environment variables if needed 4 | # MONGO_URL=mongodb://localhost:27017/myapp 5 | # PORT=3000 6 | 7 | if [ -n "$1" ]; then 8 | METEOR_SETTINGS="$(cat $1)" 9 | fi 10 | 11 | -------------------------------------------------------------------------------- /bin/load-dump: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIRNAME=$(cd `dirname $0` && pwd) 4 | 5 | MONGO_OUT_DIR="/tmp/dump" 6 | 7 | $DIRNAME/dump 8 | if [[ $? == 0 ]] ; then 9 | rm $MONGO_OUT_DIR/reaction_meteor_com/meteor_accounts_loginServiceConfiguration* 10 | mongorestore --drop -h 127.0.0.1:3002 --db meteor $MONGO_OUT_DIR/reaction_meteor_com 11 | fi 12 | -------------------------------------------------------------------------------- /bin/reload: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIRNAME=$(cd `dirname $0` && pwd) 4 | 5 | if [ -z "$1" ]; then 6 | COMMAND="db.getCollectionNames().forEach(function(collectionName) {if (collectionName != 'system.indexes') {db[collectionName].remove()}})"; 7 | else 8 | COMMAND="db.$1.remove()"; 9 | fi 10 | echo "Executing:" $COMMAND 11 | echo $COMMAND | meteor mongo 12 | -------------------------------------------------------------------------------- /bin/reset: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DIRNAME=$(cd `dirname $0` && pwd) 4 | 5 | read -r -p "Resetting Database: also delete build files? [y/N]" response 6 | if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]] 7 | then 8 | meteor reset "$@" 9 | rm .meteor/versions 2> /dev/null 10 | rm -r client/themes/custom*.less 2> /dev/null 11 | rm -r client/themes/bootstrap/custom*.less 2> /dev/null 12 | rm -rf $PACKAGE_DIRS/core/lib/bower 2> /dev/null 13 | else 14 | meteor reset "$@" 15 | fi 16 | -------------------------------------------------------------------------------- /bin/run: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -u 4 | set -e 5 | 6 | 7 | if [[ "$@" == *"debug"* ]]; then 8 | CMD=debug 9 | else 10 | CMD=run 11 | fi 12 | 13 | # remove debug arg if it exists 14 | ARGS="${@//debug}" 15 | 16 | CONFIG=$(pwd)/settings/settings.json 17 | DEVCONFIG=$(pwd)/settings/dev.settings.json 18 | 19 | if [ -f $CONFIG ]; then 20 | echo "Starting Reaction using '$CONFIG'." 21 | meteor $CMD --raw-logs --settings $CONFIG $ARGS 22 | else 23 | if [ -f $DEVCONFIG ]; then 24 | echo "Starting Reaction using '$DEVCONFIG'." 25 | meteor $CMD --raw-logs --settings $DEVCONFIG $ARGS 26 | else 27 | echo "Starting Reaction." 28 | meteor $CMD --raw-logs $ARGS 29 | fi 30 | fi 31 | -------------------------------------------------------------------------------- /client/analytics/custom.analytics.json: -------------------------------------------------------------------------------- 1 | { 2 | "libs": { 3 | "segmentio": false, 4 | "googleAnalytics": true, 5 | "mixpanel": true 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /client/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /client/templates/layout.html: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /client/templates/layout.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This is an example of a customized template. 3 | * This layout replaces the "coreLayout" template defined in the reactioncommerce:core package. 4 | * https://github.com/reactioncommerce/reaction-core/blob/master/client/templates/layout/layout.html 5 | * To use custom template in layout.html uncomment 6 | * 7 | * Template.layout.replaces "coreLayout" 8 | */ 9 | 10 | 11 | // Template.layout.replaces("coreLayout"); 12 | -------------------------------------------------------------------------------- /client/themes/.gitignore: -------------------------------------------------------------------------------- 1 | *less 2 | *import.less 3 | foundation 4 | material 5 | 6 | !core 7 | -------------------------------------------------------------------------------- /common/config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Misc. App. Configuration 3 | * 4 | * A place to put misc. package configurations 5 | */ 6 | // client configuration 7 | if (Meteor.isClient) { 8 | ITEMS_INCREMENT = 24; 9 | // sets default number of product displayed on a grid 10 | Session.setDefault("productScrollLimit", ITEMS_INCREMENT); 11 | } 12 | -------------------------------------------------------------------------------- /common/router.js: -------------------------------------------------------------------------------- 1 | Meteor.startup(function () { 2 | if (Meteor.isClient) { 3 | Tracker.autorun(function () { 4 | // initialize client routing 5 | if (ReactionCore.Subscriptions.Packages.ready() && ReactionCore.Subscriptions.Shops.ready()) { 6 | ReactionRouter.initPackageRoutes(Meteor.userId()); 7 | } 8 | }); // end tracker 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /docker/docker-compose.test.yml: -------------------------------------------------------------------------------- 1 | # used for CircleCI curl tests 2 | 3 | reaction: 4 | image: reactioncommerce/prequel 5 | links: 6 | - mongo 7 | ports: 8 | - "80:80" 9 | environment: 10 | ROOT_URL: "http://localhost" 11 | MONGO_URL: "mongodb://mongo:27017/reaction" 12 | 13 | mongo: 14 | image: mongo:2.6.11 15 | command: mongod --smallfiles 16 | -------------------------------------------------------------------------------- /docker/reaction.minimal.docker: -------------------------------------------------------------------------------- 1 | FROM debian:wheezy 2 | MAINTAINER Tom De Caluwé 3 | 4 | COPY bin/docker /usr/bin 5 | RUN chmod +x \ 6 | /usr/bin/install-graphicsmagick.sh \ 7 | /usr/bin/install-mongodb.sh \ 8 | /usr/bin/build-meteor.sh \ 9 | /usr/bin/build-bundle.sh \ 10 | /usr/bin/entrypoint.sh 11 | 12 | RUN /usr/bin/install-graphicsmagick.sh 13 | 14 | ENV PORT 80 15 | ENV ROOT_URL http://localhost 16 | ENV MONGO_URL mongodb://127.0.0.1:27017/meteor 17 | ENV NODE forever 18 | 19 | RUN mkdir -p "/var/src" "/var/www" 20 | WORKDIR /var/www/bundle 21 | 22 | COPY . /var/src/ 23 | 24 | EXPOSE 80 25 | 26 | RUN /usr/bin/build-bundle.sh 27 | 28 | ENTRYPOINT ["/usr/bin/entrypoint.sh"] 29 | CMD [] 30 | -------------------------------------------------------------------------------- /docker/scripts/build-packages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # add bin/docker/packages to use custom build packages 5 | # 6 | 7 | if [ -f bin/docker/packages ]; then 8 | echo "[-] Using custom Meteor packages file..." 9 | cp docker/packages .meteor/packages 10 | exit 0 11 | fi 12 | -------------------------------------------------------------------------------- /docker/scripts/install-deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | 6 | printf "\n[-] Installing base OS dependencies...\n\n" 7 | 8 | apt-get update -qq -y 9 | 10 | apt-get install -qq -y --no-install-recommends curl ca-certificates bzip2 git build-essential python graphicsmagick 11 | -------------------------------------------------------------------------------- /docker/scripts/install-node.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | : ${NODE_VERSION:=0.10.41} 6 | : ${NODE_ARCH:=x64} 7 | 8 | printf "\n[-] Installing Node ${NODE_VERSION}...\n\n" 9 | 10 | NODE_DIST=node-v${NODE_VERSION}-linux-${NODE_ARCH} 11 | 12 | cd /tmp 13 | curl -O -L http://nodejs.org/dist/v${NODE_VERSION}/${NODE_DIST}.tar.gz 14 | tar xvzf ${NODE_DIST}.tar.gz 15 | rm ${NODE_DIST}.tar.gz 16 | rm -rf /opt/nodejs 17 | mv ${NODE_DIST} /opt/nodejs 18 | 19 | ln -sf /opt/nodejs/bin/node /usr/bin/node 20 | ln -sf /opt/nodejs/bin/npm /usr/bin/npm 21 | -------------------------------------------------------------------------------- /docker/scripts/install-phantom.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | if [ "${INSTALL_PHANTOMJS}" = "true" ]; then 6 | 7 | : ${PHANTOMJS_VERSION:=2.1.1} 8 | 9 | printf "\n[-] Installing Phantom.js $PHANTOMJS_VERSION...\n\n" 10 | 11 | npm install --silent -g phantomjs-prebuilt@$PHANTOMJS_VERSION 12 | 13 | npm cache clear 14 | 15 | fi 16 | -------------------------------------------------------------------------------- /docker/scripts/post-install-cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | printf "\n[-] Performing post install cleanup...\n\n" 5 | 6 | # Clean out docs 7 | rm -rf /usr/share/doc /usr/share/doc-base /usr/share/man /usr/share/locale /usr/share/zoneinfo 8 | 9 | # Clean out package management dirs 10 | rm -rf /var/lib/cache /var/lib/log 11 | 12 | # clean additional files created outside the source tree 13 | rm -rf /root/.cache /root/.config /root/.local 14 | rm -rf /tmp/* 15 | 16 | # remove os dependencies 17 | apt-get -qq -y purge ca-certificates curl bzip2 18 | apt-get -qq -y autoremove 19 | rm -rf /var/lib/apt/lists/* 20 | -------------------------------------------------------------------------------- /packages/my-custom-theme-template/README.md: -------------------------------------------------------------------------------- 1 | # My Custom Theme Template 2 | 3 | An example of a basic theme package for Reaction Commerce 4 | -------------------------------------------------------------------------------- /packages/my-custom-theme-template/styles/base.less: -------------------------------------------------------------------------------- 1 | /* 2 | Example style with usage of mixins. 3 | 4 | If you change the language to a RTL language, 5 | you'll get a marign of 50px on the right, instead of the left. 6 | And a magic pink background. 7 | */ 8 | 9 | body { 10 | .margin-left(50px); 11 | background-color: #ff00ff; 12 | } 13 | -------------------------------------------------------------------------------- /packages/my-custom-theme-template/styles/variables.less: -------------------------------------------------------------------------------- 1 | /** 2 | * Add your variable overrides here 3 | */ 4 | 5 | // Example: Override less variable override 6 | @navbar-default-bg: #61462F; 7 | -------------------------------------------------------------------------------- /packages/reaction-accounts/.gitignore: -------------------------------------------------------------------------------- 1 | .build* 2 | .DS_Store 3 | *.log 4 | versions.json 5 | .versions 6 | -------------------------------------------------------------------------------- /packages/reaction-accounts/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Accounts 2 | This is a core package of Reaction Commerce and provides 3 | - dropdown accounts ui 4 | - inline accounts ui 5 | - user profile 6 | - user management 7 | - address book CRUD 8 | 9 | ## Usage 10 | 11 | ```bash 12 | meteor add reactioncommerce:reaction-accounts 13 | ``` 14 | 15 | ## Testing 16 | 17 | ```bash 18 | VELOCITY_TEST_PACKAGES=1 meteor test-packages --port 3006 reactioncommerce:reaction-accounts 19 | ``` 20 | -------------------------------------------------------------------------------- /packages/reaction-accounts/client/helpers/subscriptions.js: -------------------------------------------------------------------------------- 1 | ReactionCore.Subscriptions.Account = ReactionSubscriptions.subscribe("Accounts", Meteor.userId()); 2 | -------------------------------------------------------------------------------- /packages/reaction-accounts/client/templates/accounts.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/reaction-accounts/client/templates/addressBook/addressBook.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 16 | -------------------------------------------------------------------------------- /packages/reaction-accounts/client/templates/guestSignUp/guestSignUp.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-accounts/client/templates/guestSignUp/guestSignUp.js -------------------------------------------------------------------------------- /packages/reaction-accounts/client/templates/inline/inline.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Inline login form for instance where guest login is needed. 3 | */ 4 | Template.loginInline.events({ 5 | 6 | /** 7 | * Continue as guest. 8 | * @param {Event} event - jQuery Event 9 | * @return {void} 10 | */ 11 | "click .continue-guest": (event) => { 12 | event.preventDefault(); 13 | Meteor.call("workflow/pushCartWorkflow", "coreCartWorkflow", "checkoutLogin"); 14 | } 15 | }); 16 | -------------------------------------------------------------------------------- /packages/reaction-accounts/client/templates/login/loginButtons.html: -------------------------------------------------------------------------------- 1 | 2 | 21 | -------------------------------------------------------------------------------- /packages/reaction-accounts/server/methods/serviceConfiguration.js: -------------------------------------------------------------------------------- 1 | Meteor.methods({ 2 | "accounts/updateServiceConfiguration": function (service, fields) { 3 | check(service, String); 4 | check(fields, Array); 5 | const dataToSave = {}; 6 | 7 | _.each(fields, function (field) { 8 | dataToSave[field.property] = field.value; 9 | }); 10 | 11 | if (ReactionCore.hasPermission(["dashboard/accounts"])) { 12 | return ServiceConfiguration.configurations.upsert({ 13 | service: service 14 | }, { 15 | $set: dataToSave 16 | }); 17 | } 18 | return false; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /packages/reaction-accounts/server/policy.js: -------------------------------------------------------------------------------- 1 | /* 2 | * set browser policies 3 | */ 4 | BrowserPolicy.content.allowOriginForAll("*.facebook.com"); 5 | BrowserPolicy.content.allowOriginForAll("*.fbcdn.net"); 6 | BrowserPolicy.content.allowOriginForAll("connect.facebook.net"); 7 | 8 | BrowserPolicy.content.allowOriginForAll("*.googleusercontent.com"); 9 | -------------------------------------------------------------------------------- /packages/reaction-analytics-libs/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-analytics-libs/.gitignore -------------------------------------------------------------------------------- /packages/reaction-analytics-libs/.versions: -------------------------------------------------------------------------------- 1 | meteor@1.1.6 2 | reactioncommerce:reaction-analytics-libs@1.0.1 3 | underscore@1.0.3 4 | -------------------------------------------------------------------------------- /packages/reaction-analytics-libs/README.md: -------------------------------------------------------------------------------- 1 | ## reaction-analytics-libs 2 | This package does nothing more than providing server side access to analytics libraries. 3 | Technique for getting around meteor build plugin static asset limitation borrowed from [Nemo64/meteor-bootstrap-data](https://github.com/Nemo64/meteor-bootstrap-data) 4 | 5 | This package is a dependency for reaction-analytics. 6 | 7 | The reason this package exists is to provide a workaround for the limitation, that meteor does not allow static assets to be accessed in a build plugin. It is however allowed to 'use' other packages in a plugin and this other package can than provide static assets (which is what this package does). 8 | -------------------------------------------------------------------------------- /packages/reaction-analytics-libs/analytics-lib.js: -------------------------------------------------------------------------------- 1 | GetAnalyticsLib = function (file) { 2 | return Assets.getText(file); 3 | } 4 | -------------------------------------------------------------------------------- /packages/reaction-analytics-libs/analytics/googleAnalytics.js: -------------------------------------------------------------------------------- 1 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ 2 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), 3 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) 4 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); 5 | -------------------------------------------------------------------------------- /packages/reaction-analytics-libs/package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | summary: "Reaction Commerce - Analytics Libraries", 3 | name: "reactioncommerce:reaction-analytics-libs", 4 | version: "1.1.0", 5 | documentation: "README.md" 6 | }); 7 | 8 | Package.onUse(function (api) { 9 | api.versionsFrom("METEOR@1.2"); 10 | 11 | api.addFiles("analytics-lib.js", "server"); 12 | api.export(["GetAnalyticsLib"]); 13 | api.addAssets([ 14 | "analytics/googleAnalytics.js", 15 | "analytics/mixpanel.js", 16 | "analytics/segmentio.js" 17 | ], "server"); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/reaction-analytics/.gitignore: -------------------------------------------------------------------------------- 1 | .versions 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /packages/reaction-analytics/.npm/plugin/analytics-configurator/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/reaction-analytics/.npm/plugin/analytics-configurator/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/reaction-analytics/.npm/plugin/analytics-configurator/npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "path": { 4 | "version": "0.11.14" 5 | }, 6 | "underscore": { 7 | "version": "1.8.3" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/reaction-analytics/common/hooks.js: -------------------------------------------------------------------------------- 1 | ReactionCore.Collections.Orders.before.insert((userId, order) => { 2 | let analyticsEvent = { 3 | eventType: 'buy', 4 | value: order._id, 5 | label: 'bought products' 6 | } 7 | ReactionCore.Collections.AnalyticsEvents.insert(analyticsEvent) 8 | }) 9 | -------------------------------------------------------------------------------- /packages/reaction-analytics/server/buildtools/analyticsSources.js: -------------------------------------------------------------------------------- 1 | analyticsSources = { 2 | "googleAnalytics": "analytics/googleAnalytics.js", 3 | "mixpanel": "analytics/mixpanel.js", 4 | "segmentio": "analytics/segmentio.js" 5 | }; 6 | -------------------------------------------------------------------------------- /packages/reaction-analytics/server/buildtools/defaultConfiguration.js: -------------------------------------------------------------------------------- 1 | defaultConfiguration = [ 2 | '{"libs": {', 3 | ' "segmentio": true,', 4 | ' "googleAnalytics": false,', 5 | ' "mixpanel": false,', 6 | '}}' 7 | ].join('\n'); 8 | -------------------------------------------------------------------------------- /packages/reaction-analytics/server/publications.js: -------------------------------------------------------------------------------- 1 | Meteor.publish("AnalyticsEvents", function () { 2 | const shopId = ReactionCore.getShopId(); 3 | if (!shopId) { 4 | return this.ready(); 5 | } 6 | return ReactionCore.Collections.AnalyticsEvents.find({ 7 | shopId: shopId 8 | }); 9 | }); 10 | -------------------------------------------------------------------------------- /packages/reaction-analytics/server/security/AnalyticsEvents.js: -------------------------------------------------------------------------------- 1 | ReactionCore.Collections.AnalyticsEvents.allow({ 2 | insert: function(userId, analyticsEvent) { 3 | if (Match.test(analyticsEvent, ReactionCore.Schemas.AnalyticsEvents)) { 4 | return true 5 | } 6 | return false 7 | }, 8 | update: function(userId, analyticsEvent, fields, modifier) { 9 | if (modifier.$set && modifier.$set.shopId) { 10 | return false; 11 | } 12 | return true; 13 | }, 14 | remove: function(userId, analyticsEvent) { 15 | if (analyticsEvent.shopId !== ReactionCore.getShopId()) { 16 | return false; 17 | } 18 | return true; 19 | } 20 | }); 21 | -------------------------------------------------------------------------------- /packages/reaction-analytics/server/security/browserPolicy.js: -------------------------------------------------------------------------------- 1 | Meteor.startup(function() { 2 | BrowserPolicy.content.allowOriginForAll("www.google-analytics.com"); 3 | BrowserPolicy.content.allowOriginForAll("*.doubleclick.net"); 4 | BrowserPolicy.content.allowOriginForAll("cdn.mxpnl.com"); 5 | BrowserPolicy.content.allowOriginForAll("cdn.segment.com"); 6 | BrowserPolicy.content.allowOriginForAll("*.facebook.com"); 7 | BrowserPolicy.content.allowOriginForAll("connect.facebook.net"); 8 | BrowserPolicy.content.allowOriginForAll("fonts.googleapis.com"); 9 | BrowserPolicy.content.allowOriginForAll("fonts.gstatic.com"); 10 | return BrowserPolicy.content.allowOriginForAll("www.paypal.com"); 11 | }); 12 | -------------------------------------------------------------------------------- /packages/reaction-catalog/README.md: -------------------------------------------------------------------------------- 1 | # reaction-catalog 2 | This package contains server side and common products methods and helpers. 3 | WIP - reaction product, content catalog 4 | -------------------------------------------------------------------------------- /packages/reaction-catalog/server/register.js: -------------------------------------------------------------------------------- 1 | ReactionCore.registerPackage({ 2 | label: "Catalog", 3 | name: "reaction-catalog", 4 | icon: "fa fa-archive", 5 | autoEnable: true, 6 | settings: { 7 | name: "Catalog" 8 | }, 9 | registry: [ 10 | { 11 | provides: "dashboard", 12 | label: "Catalog", 13 | description: "Product catalog", 14 | icon: "fa fa-archive", 15 | priority: 2, 16 | container: "core" 17 | }/* , 18 | { 19 | label: "Catalog Settings", 20 | // route: "dashboard/catalog", 21 | provides: "settings" 22 | // group: "reaction-catalog", 23 | // template: "catalogSettings" 24 | } */ 25 | ] 26 | }); 27 | -------------------------------------------------------------------------------- /packages/reaction-checkout/README.md: -------------------------------------------------------------------------------- 1 | # reaction-cart 2 | Reaction Commerce Cart and Checkout 3 | 4 | `meteor add reactioncommerce:reaction-cart` 5 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/cartDrawer/cartSubTotals/cartSubTotals.js: -------------------------------------------------------------------------------- 1 | /** 2 | * cartSubTotals helpers 3 | * 4 | * @returns cart 5 | */ 6 | Template.cartSubTotals.helpers({ 7 | cart: function() { 8 | return ReactionCore.Collections.Cart.findOne(); 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/cartIcon/cartIcon.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/cartIcon/cartIcon.js: -------------------------------------------------------------------------------- 1 | /** 2 | * cartIcon helpers 3 | * 4 | */ 5 | Template.cartIcon.helpers({ 6 | cart: function () { 7 | return ReactionCore.Collections.Cart.findOne(); 8 | } 9 | }); 10 | 11 | Template.cartIcon.events({ 12 | "click .cart-icon": function () { 13 | return $("#cart-drawer-container").fadeOut(300, function () { 14 | return toggleSession("displayCart"); 15 | }); 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/cartPanel/cartPanel.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/cartPanel/cartPanel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * cartPanel events 3 | * 4 | * goes to checkout on btn-checkout click 5 | * 6 | */ 7 | Template.cartPanel.events({ 8 | "click #btn-checkout": function () { 9 | // allow only logged in users to do that 10 | if (!Blaze._globalHelpers.isLoggedIn(true)) { 11 | return; 12 | } 13 | 14 | $("#cart-drawer-container").fadeOut(); 15 | Session.set("displayCart", false); 16 | return ReactionRouter.go("cart/checkout"); 17 | } 18 | }); 19 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/addressBook/addressBook.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/addressBook/addressBook.js: -------------------------------------------------------------------------------- 1 | /*Template.checkoutAddressBook.onRendered(function () { 2 | Meteor.call("workflow/pushCartWorkflow", "coreCartWorkflow", "checkoutAddressBook"); 3 | });*/ 4 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/header/header.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/payment/payment.html: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/progressBar/progressBar.html: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/progressBar/progressBar.js: -------------------------------------------------------------------------------- 1 | /** 2 | * checkoutProgressBar helpers 3 | * progressbar status: "visited first","previous visited","active","next" 4 | */ 5 | 6 | Template.checkoutProgressBar.helpers({ 7 | progressbarStatusClass: function () { 8 | const cartWorkflow = ReactionCore.Collections.Cart.findOne().workflow; 9 | const thisStep = cartWorkflow.status === this.template; // active 10 | const previouslyVisited = _.contains(cartWorkflow.workflow, this.template); 11 | 12 | if (previouslyVisited === true && thisStep === false) { 13 | return "visited"; 14 | } else if (thisStep === true) { 15 | return "visited active"; 16 | } 17 | return ""; 18 | } 19 | }); 20 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/review/review.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/reaction-checkout/client/templates/cart/checkout/review/review.js: -------------------------------------------------------------------------------- 1 | /** 2 | * review status 3 | * trigger checkoutPayment step on template checkoutReview render 4 | */ 5 | 6 | Template.checkoutReview.onRendered(function () { 7 | Meteor.call("workflow/pushCartWorkflow", "coreCartWorkflow", "checkoutReview"); 8 | }); 9 | -------------------------------------------------------------------------------- /packages/reaction-checkout/server/logger.js: -------------------------------------------------------------------------------- 1 | ReactionCart = {}; 2 | // set logging level 3 | // ReactionCart.Log = logger.bunyan.createLogger({name: "cart", stream: formatOut}); 4 | ReactionCart.Log = Logger; 5 | -------------------------------------------------------------------------------- /packages/reaction-collections/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Collections 2 | This is a core package of Reaction Commerce that creates collections and attaches schemas. 3 | 4 | This package makes [aldeed:collections2](https://github.com/aldeed/meteor-collection2) available to Reaction. 5 | 6 | `reactioncommerce:core` is dependent on, and includes this package. 7 | 8 | ## Installation 9 | 10 | ```bash 11 | meteor add reactioncommerce:reaction-collections 12 | ``` 13 | -------------------------------------------------------------------------------- /packages/reaction-collections/common/globals.js: -------------------------------------------------------------------------------- 1 | if (!ReactionCore.Schemas) ReactionCore.Schemas = {}; 2 | if (!ReactionCore.Collections) ReactionCore.Collections = {}; 3 | if (!ReactionCore.Helpers) ReactionCore.Helpers = {}; 4 | if (!ReactionCore.MetaData) ReactionCore.MetaData = {}; 5 | if (!ReactionCore.Locale) ReactionCore.Locale = {}; 6 | if (!ReactionCore.Log) ReactionCore.Log = {}; // Move logger create here 7 | 8 | 9 | // 10 | // Subscription Manager 11 | // See: https://github.com/kadirahq/subs-manager 12 | // 13 | // ReactionCore.Subscriptions = new SubsManager(); 14 | ReactionSubscriptions = new SubsManager(); 15 | 16 | if (Meteor.isClient) { 17 | if (!ReactionCore.Subscriptions) ReactionCore.Subscriptions = {}; 18 | } 19 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/logger.js: -------------------------------------------------------------------------------- 1 | ReactionSubscriptions = {}; 2 | // set logging level 3 | // ReactionSubscriptions.Log = logger.bunyan.createLogger({name: "collections", stream: formatOut}); 4 | ReactionSubscriptions.Log = Logger; 5 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/publications/discounts.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * discounts 4 | */ 5 | 6 | Meteor.publish("Discounts", function () { 7 | const shopId = ReactionCore.getShopId(); 8 | if (!shopId) { 9 | return this.ready(); 10 | } 11 | return ReactionCore.Collections.Discounts.find({ 12 | shopId: shopId 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/publications/shipping.js: -------------------------------------------------------------------------------- 1 | /** 2 | * shipping 3 | */ 4 | 5 | Meteor.publish("Shipping", function () { 6 | const shopId = ReactionCore.getShopId(); 7 | if (!shopId) { 8 | return this.ready(); 9 | } 10 | return ReactionCore.Collections.Shipping.find({ 11 | shopId: shopId 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/publications/shops.js: -------------------------------------------------------------------------------- 1 | /** 2 | * shops 3 | * @returns {Object} shop - current shop cursor 4 | */ 5 | 6 | Meteor.publish("Shops", function () { 7 | return ReactionCore.getCurrentShopCursor(); 8 | }); 9 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/publications/tags.js: -------------------------------------------------------------------------------- 1 | /** 2 | * tags 3 | */ 4 | Meteor.publish("Tags", function () { 5 | const shopId = ReactionCore.getShopId(); 6 | if (!shopId) { 7 | return this.ready(); 8 | } 9 | return ReactionCore.Collections.Tags.find({ 10 | shopId: shopId 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/publications/taxes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * taxes 3 | */ 4 | 5 | Meteor.publish("Taxes", function () { 6 | const shopId = ReactionCore.getShopId(); 7 | if (!shopId) { 8 | return this.ready(); 9 | } 10 | return ReactionCore.Collections.Taxes.find({ 11 | shopId: shopId 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /packages/reaction-collections/server/publications/themes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Themes 3 | * @returns {Object} thtmes - themes cursor 4 | */ 5 | 6 | Meteor.publish("Themes", function () { 7 | return ReactionCore.Collections.Themes.find({}); 8 | }); 9 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | indent_size = 2 6 | end_of_line = lf 7 | charset = utf-8 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.js] 15 | max_line_length = 160 16 | indent_brace_style = 1TBS 17 | spaces_around_operators = true 18 | quote_type = double 19 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/.gitignore: -------------------------------------------------------------------------------- 1 | .build* 2 | versions.json 3 | .versions 4 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/.versions: -------------------------------------------------------------------------------- 1 | meteor@1.1.9 2 | reactioncommerce:core-theme@1.8.0 3 | underscore@1.0.4 4 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/build-package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | PACKAGE_JS="package.js" 4 | 5 | LESS_FILES=`find . -name "*.less" | sed "s|^\./||"` 6 | 7 | # remove everything after the token 8 | sed -i '' '/AUTOGENERATED/,$d' $PACKAGE_JS 9 | echo " // AUTOGENERATED" >> $PACKAGE_JS 10 | 11 | # add all js and less files 12 | echo " api.addFiles([" >> $PACKAGE_JS 13 | for FILE in $LESS_FILES 14 | do 15 | echo " \"$FILE\"," >> $PACKAGE_JS 16 | done 17 | echo " ], \"client\", {isImport: true});" >> $PACKAGE_JS 18 | 19 | # end the use statement 20 | echo "});" >> $PACKAGE_JS 21 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/default/alerts.less: -------------------------------------------------------------------------------- 1 | 2 | .layout-alerts-global { 3 | position: absolute; 4 | top: 0; 5 | left: 0; 6 | z-index: 9001; 7 | } 8 | 9 | 10 | .empty-view-message { 11 | display: flex; 12 | flex-direction: column; 13 | justify-content: center; 14 | align-items: center; 15 | height: 400px; 16 | font-size: 3rem; 17 | color: #ABABAB; 18 | 19 | i { 20 | font-size: 6rem; 21 | margin-bottom: 2rem; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/default/dropdowns.less: -------------------------------------------------------------------------------- 1 | .navbar-shop { 2 | .dropdown { 3 | height: 100%; 4 | } 5 | 6 | .dropdown-toggle { 7 | .display(flex); 8 | .align-items(center); 9 | height: 100%; 10 | padding: 0 @navbar-padding-horizontal * 2; 11 | } 12 | 13 | .dropdown-menu { 14 | margin-top: 0; 15 | } 16 | } 17 | 18 | .dropdown-menu { 19 | border-radius: 0; 20 | border: 1px solid @black10; 21 | box-shadow: none; 22 | min-width: 200px; 23 | } 24 | 25 | .dropdown-menu > a { 26 | display: block; 27 | padding: 3px 20px; 28 | } 29 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/default/mixins.less: -------------------------------------------------------------------------------- 1 | // All mixins 2 | @import "{reactioncommerce:core-theme}/default/mixins/lesshat.less"; 3 | @import "{reactioncommerce:core-theme}/default/mixins/rtl.less"; 4 | @import "{reactioncommerce:core-theme}/default/mixins/flexbox.less"; 5 | @import "{reactioncommerce:core-theme}/default/mixins/ribbon.less"; 6 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/default/navs.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .nav-default { 4 | > li > a { 5 | // padding: 0 3rem; 6 | color: @text-color; 7 | // font-size: 1.6rem; 8 | border-left: 3px solid transparent; 9 | border-radius: 0; 10 | } 11 | 12 | 13 | > li > a:hover, 14 | > li > a:focus { 15 | background-color: transparent; 16 | border-left: 3px solid @brand-vivid-color; 17 | } 18 | 19 | > li.active > a, 20 | > li.active > a:hover, 21 | > li.active > a:focus { 22 | background-color: transparent; 23 | border-left: 3px solid @brand-vivid-color; 24 | border-radius: 0; 25 | color: @text-color; 26 | } 27 | } 28 | 29 | .list-group-item.active { 30 | color: contrast(@brand-primary, @text-color, @white); 31 | } 32 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/default/popovers.less: -------------------------------------------------------------------------------- 1 | // -------------------------------------------------- 2 | // 3 | // Popovers 4 | 5 | 6 | .popover-footer { 7 | .display(flex); 8 | .justify-content(flex-end); 9 | 10 | padding: 8px 14px; 11 | 12 | border-top: @border-thin; 13 | } 14 | 15 | // Special Popovers 16 | .popover-advanced { 17 | min-width: 250px; 18 | min-height: 250px; 19 | } -------------------------------------------------------------------------------- /packages/reaction-core-theme/fonts/fontello.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/fonts/fontello.eot -------------------------------------------------------------------------------- /packages/reaction-core-theme/fonts/fontello.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/fonts/fontello.ttf -------------------------------------------------------------------------------- /packages/reaction-core-theme/fonts/fontello.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/fonts/fontello.woff -------------------------------------------------------------------------------- /packages/reaction-core-theme/fonts/fontello.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/fonts/fontello.woff2 -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/.editorconfig: -------------------------------------------------------------------------------- 1 | # editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | 13 | [*.md] 14 | trim_trailing_whitespace = false 15 | 16 | [*.py] 17 | indent_size = 4 18 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/.gitattributes: -------------------------------------------------------------------------------- 1 | # Enforce Unix newlines 2 | *.css text eol=lf 3 | *.html text eol=lf 4 | *.js text eol=lf 5 | *.json text eol=lf 6 | *.less text eol=lf 7 | *.md text eol=lf 8 | *.svg text eol=lf 9 | *.yml text eol=lf 10 | # Don't diff or textually merge source maps 11 | *.map binary 12 | 13 | bootstrap-theme.css linguist-vendored=false 14 | bootstrap.css linguist-vendored=false 15 | bootstrap.js linguist-vendored=false 16 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore docs files 2 | _gh_pages 3 | _site 4 | .ruby-version 5 | 6 | # Numerous always-ignore extensions 7 | *.diff 8 | *.err 9 | *.log 10 | *.orig 11 | *.rej 12 | *.swo 13 | *.swp 14 | *.vi 15 | *.zip 16 | *~ 17 | 18 | # OS or Editor folders 19 | ._* 20 | .cache 21 | .DS_Store 22 | .idea 23 | .project 24 | .settings 25 | .tmproj 26 | *.esproj 27 | *.sublime-project 28 | *.sublime-workspace 29 | nbproject 30 | Thumbs.db 31 | 32 | # Komodo 33 | .komodotools 34 | *.komodoproject 35 | 36 | # Jekyll metadata 37 | docs/.jekyll-metadata 38 | 39 | # Folders to ignore 40 | bower_components 41 | node_modules 42 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/.hound.yml: -------------------------------------------------------------------------------- 1 | javascript: 2 | config_file: js/.jshintrc 3 | enabled: true 4 | scss: 5 | enabled: false 6 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs. 2 | 3 | See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. 4 | 5 | Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release. 6 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/CNAME: -------------------------------------------------------------------------------- 1 | getbootstrap.com 2 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_data/core-team.yml: -------------------------------------------------------------------------------- 1 | - name: Mark Otto 2 | user: mdo 3 | gravatar: bc4ab438f7a4ce1c406aadc688427f2c 4 | 5 | - name: Jacob Thornton 6 | user: fat 7 | gravatar: a98244cbdacaf1c0b55499466002f7a8 8 | 9 | - name: Chris Rebert 10 | user: cvrebert 11 | gravatar: edec428c425453955f770095a7d26c50 12 | 13 | - name: Julian Thilo 14 | user: juthilo 15 | gravatar: 0f7dd3ce58a416be5685ea6194f82b11 16 | 17 | - name: XhmikosR 18 | user: xhmikosr 19 | gravatar: e37759b1ea0125d4e97b1e00b5eed26f 20 | 21 | - name: Heinrich Fenkart 22 | user: hnrch02 23 | gravatar: 0d53f5d3d3d28bd470f394d98f7ef48f 24 | 25 | - name: Patrick H. Lauke 26 | user: patrickhlauke 27 | gravatar: 357f279672db832fc41a5a2f36559fcb 28 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_data/sass-team.yml: -------------------------------------------------------------------------------- 1 | - name: Thomas McDonald 2 | user: thomas-mcdonald 3 | gravatar: 24cd55ab1a62ffb113ab8c02f64c9301 4 | 5 | - name: Gleb Mazovetskiy 6 | user: glebm 7 | gravatar: 729f685b8e8d7e9feed18c177c82e59b 8 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_data/showcase.yml: -------------------------------------------------------------------------------- 1 | - name: Lyft 2 | url: https://www.lyft.com 3 | expo_url: http://expo.getbootstrap.com/2014/10/29/lyft/ 4 | img: lyft 5 | 6 | - name: Vogue 7 | url: http://www.vogue.com 8 | expo_url: http://expo.getbootstrap.com/2014/09/30/vogue/ 9 | img: vogue 10 | 11 | - name: Riot Design 12 | url: http://riotdesign.eu/en/ 13 | expo_url: http://expo.getbootstrap.com/2014/03/13/riot-design/ 14 | img: riot 15 | 16 | - name: Newsweek 17 | url: http://www.newsweek.com/ 18 | expo_url: http://expo.getbootstrap.com/2014/02/12/newsweek/ 19 | img: newsweek 20 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_includes/ads.html: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_includes/nav/about.html: -------------------------------------------------------------------------------- 1 |
  • 2 | History 3 |
  • 4 |
  • 5 | Team 6 |
  • 7 |
  • 8 | Brand guidelines 9 |
  • 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_includes/nav/migration.html: -------------------------------------------------------------------------------- 1 |
  • 2 | Major class changes 3 |
  • 4 |
  • 5 | What's new 6 |
  • 7 |
  • 8 | What's removed 9 |
  • 10 |
  • 11 | Additional notes 12 |
  • 13 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_jade/customizer-nav.jade: -------------------------------------------------------------------------------- 1 | // NOTE: DO NOT EDIT THE FOLLOWING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template. 2 | li 3 | a(href='#import-drop-target') Import 4 | li 5 | a(href='#less') Less components 6 | li 7 | a(href='#plugins') jQuery plugins 8 | li 9 | a(href='#less-variables') Less variables 10 | ul.nav 11 | each section in sections 12 | if section.customizable 13 | li 14 | a(href='#'+section.id)= section.heading 15 | li 16 | a(href='#download') Download 17 | // NOTE: DO NOT EDIT THE PRECEDING SECTION DIRECTLY! It is autogenerated via the `build-customizer-html` Grunt task using the customizer-nav.jade template. 18 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_layouts/home.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% include header.html %} 6 | 7 | 8 |
    Skip to main content
    9 | 10 | 11 | {% include nav/main.html %} 12 | 13 | 14 | {{ content }} 15 | 16 | {% include footer.html %} 17 | 18 | 19 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/_plugins/bridge.rb: -------------------------------------------------------------------------------- 1 | require 'yaml' 2 | 3 | module Bridge 4 | class Generator < Jekyll::Generator 5 | def generate(site) 6 | site.data["configBridge"] = YAML.load_file("./grunt/configBridge.json") 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/css/ie10-viewport-bug-workaround.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * IE10 viewport hack for Surface/desktop Windows 8 bug 3 | * Copyright 2014-2015 Twitter, Inc. 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 5 | */ 6 | 7 | /* 8 | * See the Getting Started docs for more information: 9 | * http://getbootstrap.com/getting-started/#support-ie10-width 10 | */ 11 | @-webkit-viewport { width: device-width; } 12 | @-moz-viewport { width: device-width; } 13 | @-ms-viewport { width: device-width; } 14 | @-o-viewport { width: device-width; } 15 | @viewport { width: device-width; } 16 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/flash/ZeroClipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/flash/ZeroClipboard.swf -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/components.png -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/devices.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/devices.png -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-lyft.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-lyft.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-newsweek.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-newsweek.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-riot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-riot.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-vogue.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/expo-vogue.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/img/sass-less.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/img/sass-less.png -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/js/ie8-responsive-file-warning.js: -------------------------------------------------------------------------------- 1 | // NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT 2 | // IT'S JUST JUNK FOR OUR DOCS! 3 | // ++++++++++++++++++++++++++++++++++++++++++ 4 | /*! 5 | * Copyright 2011-2015 Twitter, Inc. 6 | * 7 | * Licensed under the Creative Commons Attribution 3.0 Unported License. For 8 | * details, see https://creativecommons.org/licenses/by/3.0/. 9 | */ 10 | // Intended to prevent false-positive bug reports about responsive styling supposedly not working in IE8. 11 | if (window.location.protocol == 'file:') { 12 | window.alert('ERROR: Bootstrap\'s responsive CSS is disabled!\nSee getbootstrap.com/getting-started/#respond-file-proto for details.') 13 | } 14 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/assets/js/vendor/autoprefixer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/assets/js/vendor/autoprefixer.js -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/css.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: CSS 4 | slug: css 5 | lead: "Global CSS settings, fundamental HTML elements styled and enhanced with extensible classes, and an advanced grid system." 6 | --- 7 | 8 | 9 | {% include css/overview.html %} 10 | {% include css/grid.html %} 11 | {% include css/type.html %} 12 | {% include css/code.html %} 13 | {% include css/tables.html %} 14 | {% include css/forms.html %} 15 | {% include css/buttons.html %} 16 | {% include css/images.html %} 17 | {% include css/helpers.html %} 18 | {% include css/responsive-utilities.html %} 19 | {% include css/less.html %} 20 | {% include css/sass.html %} 21 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/grid/grid.css: -------------------------------------------------------------------------------- 1 | h4 { 2 | margin-top: 25px; 3 | } 4 | .row { 5 | margin-bottom: 20px; 6 | } 7 | .row .row { 8 | margin-top: 10px; 9 | margin-bottom: 0; 10 | } 11 | [class*="col-"] { 12 | padding-top: 15px; 13 | padding-bottom: 15px; 14 | background-color: #eee; 15 | background-color: rgba(86,61,124,.15); 16 | border: 1px solid #ddd; 17 | border: 1px solid rgba(86,61,124,.2); 18 | } 19 | 20 | hr { 21 | margin-top: 40px; 22 | margin-bottom: 40px; 23 | } 24 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/jumbotron/jumbotron.css: -------------------------------------------------------------------------------- 1 | /* Move down content because we have a fixed navbar that is 50px tall */ 2 | body { 3 | padding-top: 50px; 4 | padding-bottom: 20px; 5 | } 6 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/navbar-fixed-top/navbar-fixed-top.css: -------------------------------------------------------------------------------- 1 | body { 2 | min-height: 2000px; 3 | padding-top: 70px; 4 | } 5 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/navbar-static-top/navbar-static-top.css: -------------------------------------------------------------------------------- 1 | body { 2 | min-height: 2000px; 3 | } 4 | 5 | .navbar-static-top { 6 | margin-bottom: 19px; 7 | } 8 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/navbar/navbar.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 20px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | .navbar { 7 | margin-bottom: 20px; 8 | } 9 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/offcanvas/offcanvas.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $('[data-toggle="offcanvas"]').click(function () { 3 | $('.row-offcanvas').toggleClass('active') 4 | }); 5 | }); -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/blog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/blog.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/carousel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/carousel.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/cover.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/dashboard.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/dashboard.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/equal-height-columns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/equal-height-columns.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/grid.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/grid.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/jumbotron-narrow.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/jumbotron-narrow.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/jumbotron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/jumbotron.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/justified-nav.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/justified-nav.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/navbar-fixed.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/navbar-fixed.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/navbar-static.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/navbar-static.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/navbar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/navbar.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/non-responsive.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/non-responsive.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/offcanvas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/offcanvas.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/sign-in.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/sign-in.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/starter-template.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/starter-template.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/sticky-footer-navbar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/sticky-footer-navbar.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/sticky-footer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/sticky-footer.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/theme.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/examples/screenshots/theme.jpg -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/starter-template/starter-template.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | } 4 | .starter-template { 5 | padding: 40px 15px; 6 | text-align: center; 7 | } 8 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/theme/theme.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 70px; 3 | padding-bottom: 30px; 4 | } 5 | 6 | .theme-dropdown .dropdown-menu { 7 | position: static; 8 | display: block; 9 | margin-bottom: 20px; 10 | } 11 | 12 | .theme-showcase > p > .btn { 13 | margin: 5px 0; 14 | } 15 | 16 | .theme-showcase .navbar .container { 17 | width: auto; 18 | } 19 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/tooltip-viewport/tooltip-viewport.css: -------------------------------------------------------------------------------- 1 | body { 2 | height: 1200px; 3 | } 4 | .tooltip { 5 | min-width: 250px; 6 | max-width: 500px; 7 | } 8 | .tooltip .tooltip-inner { 9 | min-width: 250px; 10 | max-width: 500px; 11 | min-height: 100px; 12 | text-align: left; 13 | } 14 | .container-viewport { 15 | position: absolute; 16 | top: 100px; 17 | right: 250px; 18 | left: 250px; 19 | height: 300px; 20 | background-color: #eee; 21 | } 22 | .btn-bottom { 23 | position: absolute; 24 | bottom: 0; 25 | left: 0; 26 | } 27 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/examples/tooltip-viewport/tooltip-viewport.js: -------------------------------------------------------------------------------- 1 | $(document).ready(function () { 2 | $('.tooltip-right').tooltip({ 3 | placement: 'right', 4 | viewport: {selector: 'body', padding: 2} 5 | }) 6 | $('.tooltip-bottom').tooltip({ 7 | placement: 'bottom', 8 | viewport: {selector: 'body', padding: 2} 9 | }) 10 | $('.tooltip-viewport-right').tooltip({ 11 | placement: 'right', 12 | viewport: {selector: '.container-viewport', padding: 2} 13 | }) 14 | $('.tooltip-viewport-bottom').tooltip({ 15 | placement: 'bottom', 16 | viewport: {selector: '.container-viewport', padding: 2} 17 | }) 18 | }) 19 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/docs/favicon.ico -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/javascript.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: JavaScript 4 | slug: js 5 | lead: "Bring Bootstrap's components to life with over a dozen custom jQuery plugins. Easily include them all, or one by one." 6 | --- 7 | 8 | 9 | {% include js/overview.html %} 10 | {% include js/transitions.html %} 11 | {% include js/modal.html %} 12 | {% include js/dropdowns.html %} 13 | {% include js/scrollspy.html %} 14 | {% include js/tabs.html %} 15 | {% include js/tooltips.html %} 16 | {% include js/popovers.html %} 17 | {% include js/alerts.html %} 18 | {% include js/buttons.html %} 19 | {% include js/collapse.html %} 20 | {% include js/carousel.html %} 21 | {% include js/affix.html %} 22 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/docs/robots.txt: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | # www.robotstxt.org/ 5 | 6 | # Allow crawling of all content 7 | User-agent: * 8 | Disallow: 9 | Sitemap: {{ site.url }}/sitemap.xml 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-core-theme/lib/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/grunt/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : "../js/.jshintrc", 3 | "asi" : false, 4 | "browser" : false, 5 | "es3" : false, 6 | "node" : true 7 | } 8 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/js/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "asi" : true, 3 | "browser" : true, 4 | "eqeqeq" : false, 5 | "eqnull" : true, 6 | "es3" : true, 7 | "expr" : true, 8 | "jquery" : true, 9 | "latedef" : true, 10 | "laxbreak" : true, 11 | "nonbsp" : true, 12 | "strict" : true, 13 | "undef" : true, 14 | "unused" : true 15 | } 16 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/js/tests/unit/.jshintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends" : "../../.jshintrc", 3 | "devel" : true, 4 | "es3" : false, 5 | "qunit" : true 6 | } 7 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/.csslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "adjoining-classes": false, 3 | "box-sizing": false, 4 | "box-model": false, 5 | "compatible-vendor-prefixes": false, 6 | "floats": false, 7 | "font-sizes": false, 8 | "gradients": false, 9 | "important": false, 10 | "known-properties": false, 11 | "outline-none": false, 12 | "qualified-headings": false, 13 | "regex-selectors": false, 14 | "shorthand": false, 15 | "text-indent": false, 16 | "unique-headings": false, 17 | "universal-selector": false, 18 | "unqualified-attributes": false 19 | } 20 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/breadcrumbs.less: -------------------------------------------------------------------------------- 1 | // 2 | // Breadcrumbs 3 | // -------------------------------------------------- 4 | 5 | 6 | .breadcrumb { 7 | padding: @breadcrumb-padding-vertical @breadcrumb-padding-horizontal; 8 | margin-bottom: @line-height-computed; 9 | list-style: none; 10 | background-color: @breadcrumb-bg; 11 | border-radius: @border-radius-base; 12 | 13 | > li { 14 | display: inline-block; 15 | 16 | + li:before { 17 | content: "@{breadcrumb-separator}\00a0"; // Unicode space added since inline-block means non-collapsing white-space 18 | padding: 0 5px; 19 | color: @breadcrumb-color; 20 | } 21 | } 22 | 23 | > .active { 24 | color: @breadcrumb-active-color; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/alerts.less: -------------------------------------------------------------------------------- 1 | // Alerts 2 | 3 | .alert-variant(@background; @border; @text-color) { 4 | background-color: @background; 5 | border-color: @border; 6 | color: @text-color; 7 | 8 | hr { 9 | border-top-color: darken(@border, 5%); 10 | } 11 | .alert-link { 12 | color: darken(@text-color, 10%); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/background-variant.less: -------------------------------------------------------------------------------- 1 | // Contextual backgrounds 2 | 3 | .bg-variant(@color) { 4 | background-color: @color; 5 | a&:hover, 6 | a&:focus { 7 | background-color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/border-radius.less: -------------------------------------------------------------------------------- 1 | // Single side border-radius 2 | 3 | .border-top-radius(@radius) { 4 | border-top-right-radius: @radius; 5 | border-top-left-radius: @radius; 6 | } 7 | .border-right-radius(@radius) { 8 | border-bottom-right-radius: @radius; 9 | border-top-right-radius: @radius; 10 | } 11 | .border-bottom-radius(@radius) { 12 | border-bottom-right-radius: @radius; 13 | border-bottom-left-radius: @radius; 14 | } 15 | .border-left-radius(@radius) { 16 | border-bottom-left-radius: @radius; 17 | border-top-left-radius: @radius; 18 | } 19 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/center-block.less: -------------------------------------------------------------------------------- 1 | // Center-align a block level element 2 | 3 | .center-block() { 4 | display: block; 5 | margin-left: auto; 6 | margin-right: auto; 7 | } 8 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/clearfix.less: -------------------------------------------------------------------------------- 1 | // Clearfix 2 | // 3 | // For modern browsers 4 | // 1. The space content is one way to avoid an Opera bug when the 5 | // contenteditable attribute is included anywhere else in the document. 6 | // Otherwise it causes space to appear at the top and bottom of elements 7 | // that are clearfixed. 8 | // 2. The use of `table` rather than `block` is only necessary if using 9 | // `:before` to contain the top-margins of child elements. 10 | // 11 | // Source: http://nicolasgallagher.com/micro-clearfix-hack/ 12 | 13 | .clearfix() { 14 | &:before, 15 | &:after { 16 | content: " "; // 1 17 | display: table; // 2 18 | } 19 | &:after { 20 | clear: both; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/hide-text.less: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | // 3 | // Heads up! v3 launched with only `.hide-text()`, but per our pattern for 4 | // mixins being reused as classes with the same name, this doesn't hold up. As 5 | // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. 6 | // 7 | // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 8 | 9 | // Deprecated as of v3.0.1 (has been removed in v4) 10 | .hide-text() { 11 | font: ~"0/0" a; 12 | color: transparent; 13 | text-shadow: none; 14 | background-color: transparent; 15 | border: 0; 16 | } 17 | 18 | // New mixin to use as of v3.0.1 19 | .text-hide() { 20 | .hide-text(); 21 | } 22 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/labels.less: -------------------------------------------------------------------------------- 1 | // Labels 2 | 3 | .label-variant(@color) { 4 | background-color: @color; 5 | 6 | &[href] { 7 | &:hover, 8 | &:focus { 9 | background-color: darken(@color, 10%); 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/list-group.less: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | .list-group-item-variant(@state; @background; @color) { 4 | .list-group-item-@{state} { 5 | color: @color; 6 | background-color: @background; 7 | 8 | a&, 9 | button& { 10 | color: @color; 11 | 12 | .list-group-item-heading { 13 | color: inherit; 14 | } 15 | 16 | &:hover, 17 | &:focus { 18 | color: @color; 19 | background-color: darken(@background, 5%); 20 | } 21 | &.active, 22 | &.active:hover, 23 | &.active:focus { 24 | color: #fff; 25 | background-color: @color; 26 | border-color: @color; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/nav-divider.less: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | .nav-divider(@color: #e5e5e5) { 6 | height: 1px; 7 | margin: ((@line-height-computed / 2) - 1) 0; 8 | overflow: hidden; 9 | background-color: @color; 10 | } 11 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/nav-vertical-align.less: -------------------------------------------------------------------------------- 1 | // Navbar vertical align 2 | // 3 | // Vertically center elements in the navbar. 4 | // Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin. 5 | 6 | .navbar-vertical-align(@element-height) { 7 | margin-top: ((@navbar-height - @element-height) / 2); 8 | margin-bottom: ((@navbar-height - @element-height) / 2); 9 | } 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/opacity.less: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | .opacity(@opacity) { 4 | opacity: @opacity; 5 | // IE8 filter 6 | @opacity-ie: (@opacity * 100); 7 | filter: ~"alpha(opacity=@{opacity-ie})"; 8 | } 9 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/pagination.less: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) { 4 | > li { 5 | > a, 6 | > span { 7 | padding: @padding-vertical @padding-horizontal; 8 | font-size: @font-size; 9 | line-height: @line-height; 10 | } 11 | &:first-child { 12 | > a, 13 | > span { 14 | .border-left-radius(@border-radius); 15 | } 16 | } 17 | &:last-child { 18 | > a, 19 | > span { 20 | .border-right-radius(@border-radius); 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/panels.less: -------------------------------------------------------------------------------- 1 | // Panels 2 | 3 | .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) { 4 | border-color: @border; 5 | 6 | & > .panel-heading { 7 | color: @heading-text-color; 8 | background-color: @heading-bg-color; 9 | border-color: @heading-border; 10 | 11 | + .panel-collapse > .panel-body { 12 | border-top-color: @border; 13 | } 14 | .badge { 15 | color: @heading-bg-color; 16 | background-color: @heading-text-color; 17 | } 18 | } 19 | & > .panel-footer { 20 | + .panel-collapse > .panel-body { 21 | border-bottom-color: @border; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/progress-bar.less: -------------------------------------------------------------------------------- 1 | // Progress bars 2 | 3 | .progress-bar-variant(@color) { 4 | background-color: @color; 5 | 6 | // Deprecated parent class requirement as of v3.2.0 7 | .progress-striped & { 8 | #gradient > .striped(); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/reset-filter.less: -------------------------------------------------------------------------------- 1 | // Reset filters for IE 2 | // 3 | // When you need to remove a gradient background, do not forget to use this to reset 4 | // the IE filter for IE9 and below. 5 | 6 | .reset-filter() { 7 | filter: e(%("progid:DXImageTransform.Microsoft.gradient(enabled = false)")); 8 | } 9 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/reset-text.less: -------------------------------------------------------------------------------- 1 | .reset-text() { 2 | font-family: @font-family-base; 3 | // We deliberately do NOT reset font-size. 4 | font-style: normal; 5 | font-weight: normal; 6 | letter-spacing: normal; 7 | line-break: auto; 8 | line-height: @line-height-base; 9 | text-align: left; // Fallback for where `start` is not supported 10 | text-align: start; 11 | text-decoration: none; 12 | text-shadow: none; 13 | text-transform: none; 14 | white-space: normal; 15 | word-break: normal; 16 | word-spacing: normal; 17 | word-wrap: normal; 18 | } 19 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/resize.less: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | .resizable(@direction) { 4 | resize: @direction; // Options: horizontal, vertical, both 5 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 6 | } 7 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/responsive-visibility.less: -------------------------------------------------------------------------------- 1 | // Responsive utilities 2 | 3 | // 4 | // More easily include all the states for responsive-utilities.less. 5 | .responsive-visibility() { 6 | display: block !important; 7 | table& { display: table !important; } 8 | tr& { display: table-row !important; } 9 | th&, 10 | td& { display: table-cell !important; } 11 | } 12 | 13 | .responsive-invisibility() { 14 | display: none !important; 15 | } 16 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/size.less: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | .size(@width; @height) { 4 | width: @width; 5 | height: @height; 6 | } 7 | 8 | .square(@size) { 9 | .size(@size; @size); 10 | } 11 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/tab-focus.less: -------------------------------------------------------------------------------- 1 | // WebKit-style focus 2 | 3 | .tab-focus() { 4 | // Default 5 | outline: thin dotted; 6 | // WebKit 7 | outline: 5px auto -webkit-focus-ring-color; 8 | outline-offset: -2px; 9 | } 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/text-emphasis.less: -------------------------------------------------------------------------------- 1 | // Typography 2 | 3 | .text-emphasis-variant(@color) { 4 | color: @color; 5 | a&:hover, 6 | a&:focus { 7 | color: darken(@color, 10%); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/mixins/text-overflow.less: -------------------------------------------------------------------------------- 1 | // Text overflow 2 | // Requires inline-block or block for proper styling 3 | 4 | .text-overflow() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/responsive-embed.less: -------------------------------------------------------------------------------- 1 | // Embeds responsive 2 | // 3 | // Credit: Nicolas Gallagher and SUIT CSS. 4 | 5 | .embed-responsive { 6 | position: relative; 7 | display: block; 8 | height: 0; 9 | padding: 0; 10 | overflow: hidden; 11 | 12 | .embed-responsive-item, 13 | iframe, 14 | embed, 15 | object, 16 | video { 17 | position: absolute; 18 | top: 0; 19 | left: 0; 20 | bottom: 0; 21 | height: 100%; 22 | width: 100%; 23 | border: 0; 24 | } 25 | } 26 | 27 | // Modifier class for 16:9 aspect ratio 28 | .embed-responsive-16by9 { 29 | padding-bottom: 56.25%; 30 | } 31 | 32 | // Modifier class for 4:3 aspect ratio 33 | .embed-responsive-4by3 { 34 | padding-bottom: 75%; 35 | } 36 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/less/wells.less: -------------------------------------------------------------------------------- 1 | // 2 | // Wells 3 | // -------------------------------------------------- 4 | 5 | 6 | // Base class 7 | .well { 8 | min-height: 20px; 9 | padding: 19px; 10 | margin-bottom: 20px; 11 | background-color: @well-bg; 12 | border: 1px solid @well-border; 13 | border-radius: @border-radius-base; 14 | .box-shadow(inset 0 1px 1px rgba(0,0,0,.05)); 15 | blockquote { 16 | border-color: #ddd; 17 | border-color: rgba(0,0,0,.15); 18 | } 19 | } 20 | 21 | // Sizes 22 | .well-lg { 23 | padding: 24px; 24 | border-radius: @border-radius-large; 25 | } 26 | .well-sm { 27 | padding: 9px; 28 | border-radius: @border-radius-small; 29 | } 30 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/nuget/MyGet.ps1: -------------------------------------------------------------------------------- 1 | $nuget = $env:NuGet 2 | 3 | #parse the version number out of package.json 4 | $bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version 5 | 6 | #create packages 7 | & $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion 8 | & $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/test-infra/S3Cachefile.json: -------------------------------------------------------------------------------- 1 | { 2 | "npm-modules": { 3 | "key": "./npm-shrinkwrap.json", 4 | "cache": "../node_modules", 5 | "generate": "./uncached-npm-install.sh" 6 | }, 7 | "rubygems": { 8 | "key": "../pseudo_Gemfile.lock", 9 | "cache": "$GEMDIR", 10 | "generate": "gem install -N jekyll -v $JEKYLL_VERSION && gem install -N rouge -v $ROUGE_VERSION" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/test-infra/requirements.txt: -------------------------------------------------------------------------------- 1 | boto==2.25.0 2 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/lib/bootstrap/test-infra/uncached-npm-install.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | cd .. # /bootstrap/ 4 | cp test-infra/npm-shrinkwrap.json npm-shrinkwrap.json 5 | # npm is flaky, so try multiple times 6 | MAXTRIES=3 7 | TRIES=1 8 | while ! npm install; do 9 | if [ $TRIES -ge $MAXTRIES ]; then 10 | exit 1 11 | fi 12 | TRIES=$(($TRIES + 1)) 13 | echo "Retrying npm install (Try $TRIES of $MAXTRIES)..." 14 | done 15 | rm npm-shrinkwrap.json 16 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme-data.js: -------------------------------------------------------------------------------- 1 | ThemeData = function (file) { 2 | return Assets.getText(file); 3 | } 4 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/cart/cartDrawer/cartSubTotals/cartSubTotals.less: -------------------------------------------------------------------------------- 1 | .cart-drawer { 2 | .cart-items { 3 | // border: 3px solid @body-bg 4 | } 5 | 6 | .table { 7 | background-color: transparent; 8 | } 9 | 10 | .cart-totals { 11 | .text-align(left); 12 | padding: 15px; 13 | font-size: 16px; 14 | height: 100%; 15 | width: 225px; 16 | height: 225px; 17 | color: contrast(@cart-drawer-bg, black, white); 18 | } 19 | 20 | thead { 21 | height: 2em; 22 | font-weight: 900; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/dashboard/widget/widget.less: -------------------------------------------------------------------------------- 1 | // use .dashboard-widget for outer div, and .dashboard-widget-center for inner div to properly orient on the dashboard slider 2 | // see dashboard.import.less 3 | 4 | .order-multi-graph-link { 5 | &:hover { 6 | text-decoration: none; 7 | } 8 | } -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/layout/footer/footer.less: -------------------------------------------------------------------------------- 1 | /* Set the fixed height of the footer here */ 2 | .footer-default { 3 | position: relative; 4 | padding: 40px 20px; 5 | background-color: @footer-default-bg; 6 | 7 | a { 8 | color: @footer-default-color; 9 | 10 | &:hover { 11 | color: @footer-default-color-hover; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/layout/header/header.less: -------------------------------------------------------------------------------- 1 | .ltr({ 2 | // This is for making sure WebKit knows the "default" direction when switching back from RTL. 3 | // It solves a bug where some of the elements stayed RTL because the Computed Style on Document still says direction: rtl 4 | direction: ltr; 5 | }); 6 | 7 | .rtl({ 8 | direction: rtl; 9 | text-align: right; 10 | }); 11 | -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/products/productDetail/attributes/attributes.less: -------------------------------------------------------------------------------- 1 | .pdp-container { 2 | .metafield-list-item, .metafield-new-item { 3 | .row { 4 | padding: 5px 3px 5px; 5 | } 6 | padding: 5px 3px 5px; 7 | cursor: pointer; 8 | input { 9 | width: 48%; 10 | } 11 | } 12 | .metafield-remove { 13 | position: absolute; 14 | top: 10px; 15 | right: 5px; 16 | color: @input-color-placeholder; 17 | cursor: pointer; 18 | } 19 | } -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/products/productDetail/variants/variantForm/childVariant/childVariant.less: -------------------------------------------------------------------------------- 1 | .child-variant-table { 2 | margin-bottom: 0px; 3 | } 4 | .remove-child-variant { 5 | margin: 8px 0 0 0; 6 | } -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/products/productDetail/variants/variantList/variantList.less: -------------------------------------------------------------------------------- 1 | .variant-list-item { 2 | margin: 5px 0 5px 0; 3 | line-height: 28px; 4 | cursor: pointer; 5 | .progress { 6 | height: 28px; 7 | } 8 | .progress-bar-success { 9 | opacity: 0.8; 10 | } 11 | .well{ 12 | margin-bottom: 5px; 13 | } 14 | } -------------------------------------------------------------------------------- /packages/reaction-core-theme/theme/products/productList/productList.less: -------------------------------------------------------------------------------- 1 | .product-list { 2 | display: none; 3 | } 4 | .product-list-item img { 5 | margin-top: 20px; 6 | } -------------------------------------------------------------------------------- /packages/reaction-core/.gitignore: -------------------------------------------------------------------------------- 1 | .build* 2 | .DS_Store 3 | *.log 4 | versions.json 5 | .versions 6 | -------------------------------------------------------------------------------- /packages/reaction-core/.npm/package/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/reaction-core/.npm/package/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/reaction-core/client/components/numericInput/numericInput.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-core/common/common.js: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * Match.OptionalOrNull 4 | * See Meteor Match methods 5 | * @param {String} pattern - match pattern 6 | * @return {Boolean} matches - void, null, or pattern 7 | */ 8 | Match.OptionalOrNull = function (pattern) { 9 | return Match.OneOf(void 0, null, pattern); 10 | }; 11 | 12 | /** 13 | * Match.OrderHookOption 14 | * See Meteor Match methods 15 | * @return {Boolean} matches - void, null, or pattern 16 | */ 17 | Match.OrderHookOptions = function () { 18 | return Match.OneOf(Object); 19 | }; 20 | -------------------------------------------------------------------------------- /packages/reaction-core/lib/.bowerrc: -------------------------------------------------------------------------------- 1 | { 2 | "directory": "bower/" 3 | } 4 | -------------------------------------------------------------------------------- /packages/reaction-core/lib/.gitignore: -------------------------------------------------------------------------------- 1 | bower 2 | -------------------------------------------------------------------------------- /packages/reaction-core/server/init.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Execute start up fixtures 4 | */ 5 | 6 | Meteor.startup(function () { 7 | ReactionCore.init(); 8 | // we've finished all reaction core initialization 9 | ReactionCore.Log.info("Reaction initialization finished."); 10 | }); 11 | -------------------------------------------------------------------------------- /packages/reaction-core/server/logger.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionCore.Log = Logger; 3 | -------------------------------------------------------------------------------- /packages/reaction-core/server/methods/.gitignore: -------------------------------------------------------------------------------- 1 | /products-DEPRECATED.js 2 | -------------------------------------------------------------------------------- /packages/reaction-core/server/registry/registry.js: -------------------------------------------------------------------------------- 1 | /* 2 | * ReactionRegistry is a global server object that it can be reused in packages 3 | * assumes collection data in reaction-core/private/data, optionally jsonFile 4 | * use jsonFile when calling from another package, as we can't read the assets from here 5 | */ 6 | 7 | // initialize shop registry when a new shop is added 8 | ReactionCore.Collections.Shops.find().observe({ 9 | added(doc) { 10 | ReactionRegistry.setShopName(doc); 11 | ReactionRegistry.setDomain(); 12 | }, 13 | removed() { 14 | // TODO SHOP REMOVAL CLEANUP FOR #357 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /packages/reaction-dashboard/README.md: -------------------------------------------------------------------------------- 1 | # reaction-dashboard 2 | Reaction Commerce dashboard templates 3 | 4 | ``` 5 | meteor add reactioncommerce:reaction-dashboard 6 | ``` 7 | -------------------------------------------------------------------------------- /packages/reaction-dashboard/client/templates/dashboard/dashboard.js: -------------------------------------------------------------------------------- 1 | // 2 | // registry helper for the dashboard, assembles i18n labels 3 | // 4 | Template.dashboardHeader.helpers({ 5 | registry: function () { 6 | // just some handle little helpers for default package i18nKey/i18nLabel 7 | let route = ReactionRouter.getRouteName(); 8 | let registry = ReactionCore.getRegistryForCurrentRoute() || {}; 9 | if (registry && route) { 10 | return ReactionCore.translateRegistry(registry); 11 | } 12 | } 13 | }); 14 | 15 | // 16 | // dashboard events 17 | // 18 | Template.dashboardHeader.events({ 19 | "click [data-event-action=showPackageSettings]": function () { 20 | ReactionCore.showActionView(); 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /packages/reaction-dashboard/client/templates/dashboard/import/import.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/reaction-dashboard/client/templates/dashboard/packages/grid/grid.html: -------------------------------------------------------------------------------- 1 | 12 | 13 | 25 | -------------------------------------------------------------------------------- /packages/reaction-dashboard/client/templates/dashboard/packages/packages.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/reaction-default-theme/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Default Theme 2 | 3 | Default theme from Reaction Commerce. Simply includes all css from `reactioncommerce:core-theme`. 4 | -------------------------------------------------------------------------------- /packages/reaction-default-theme/img/.gitignore: -------------------------------------------------------------------------------- 1 | /logo.png 2 | -------------------------------------------------------------------------------- /packages/reaction-default-theme/package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | name: "reactioncommerce:default-theme", 3 | summary: "Reaction Commerce Default theme", 4 | version: "1.0.4" 5 | }); 6 | 7 | Package.onUse(function (api) { 8 | // Works with meteor 1.2 and above 9 | api.versionsFrom("METEOR@1.2"); 10 | 11 | // Using less only for this theme 12 | api.use("less"); 13 | api.use("fortawesome:fontawesome@4.5.0"); 14 | 15 | // Include core theme to get its base styles 16 | api.use("reactioncommerce:core-theme@2.0.1"); 17 | 18 | // Add top level .less files 19 | api.addFiles([ 20 | "main.less" 21 | ], "client"); 22 | }); 23 | -------------------------------------------------------------------------------- /packages/reaction-email-templates/server/register.js: -------------------------------------------------------------------------------- 1 | ReactionCore.registerPackage({ 2 | label: "Email Templates", 3 | name: "reaction-email-templates", 4 | icon: "fa fa-envelope-square", 5 | autoEnable: true, 6 | settings: { 7 | name: "Email" 8 | }, 9 | registry: [{ 10 | provides: "dashboard", 11 | template: "emailTemplateDashboard", 12 | label: "Email", 13 | description: "Email templates", 14 | icon: "fa fa-envelope-square", 15 | priority: 4, 16 | container: "appearance" 17 | }] 18 | }); 19 | -------------------------------------------------------------------------------- /packages/reaction-email-templates/templates/checkout/checkoutLogin.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-email-templates/templates/checkout/checkoutLogin.html -------------------------------------------------------------------------------- /packages/reaction-email-templates/templates/coreDefault.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-email-templates/templates/coreDefault.html -------------------------------------------------------------------------------- /packages/reaction-i18n/.npm/package/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/reaction-i18n/.npm/package/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/reaction-i18n/.npm/package/npm-shrinkwrap.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "i18next": { 4 | "version": "2.2.0" 5 | }, 6 | "i18next-browser-languagedetector": { 7 | "version": "0.0.14" 8 | }, 9 | "i18next-localstorage-cache": { 10 | "version": "0.0.4" 11 | }, 12 | "i18next-sprintf-postprocessor": { 13 | "version": "0.0.6", 14 | "dependencies": { 15 | "sprintf-js": { 16 | "version": "1.0.3" 17 | } 18 | } 19 | }, 20 | "jquery-i18next": { 21 | "version": "0.0.14" 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /packages/reaction-i18n/README.md: -------------------------------------------------------------------------------- 1 | # reaction-i18n 2 | Reaction Commerce i18n utilities 3 | 4 | ``` 5 | meteor add reactioncommerce:reaction-i18n 6 | ``` 7 | -------------------------------------------------------------------------------- /packages/reaction-i18n/client/i18next.browserify.js: -------------------------------------------------------------------------------- 1 | i18next = require("i18next"); 2 | i18nextSprintfPostProcessor = require("i18next-sprintf-postprocessor"); 3 | i18nextJquery = require("jquery-i18next"); 4 | i18nextBrowserLanguageDetector = require("i18next-browser-languagedetector"); 5 | i18nextLocalStorageCache = require("i18next-localstorage-cache"); 6 | -------------------------------------------------------------------------------- /packages/reaction-i18n/private/readme.md: -------------------------------------------------------------------------------- 1 | Export from an existing mongodb/meteor reaction collection: 2 | See: http://docs.mongodb.org/v2.2/reference/mongoexport/ 3 | 4 | mongoexport --port 3001 --db meteor --collection Products --jsonArray --out packages/reaction-core/private/data/Products.json -------------------------------------------------------------------------------- /packages/reaction-i18n/server/i18next.js: -------------------------------------------------------------------------------- 1 | i18next = Npm.require("i18next"); 2 | i18nextSprintfPostProcessor = Npm.require("i18next-sprintf-postprocessor"); 3 | i18nextJquery = Npm.require("jquery-i18next"); 4 | i18nextBrowserLanguageDetector = Npm.require("i18next-browser-languagedetector"); 5 | i18nextLocalStorageCache = Npm.require("i18next-localstorage-cache"); 6 | -------------------------------------------------------------------------------- /packages/reaction-i18n/server/register.js: -------------------------------------------------------------------------------- 1 | ReactionCore.registerPackage({ 2 | label: "i18n", 3 | name: "reaction-i18n", 4 | icon: "fa fa-language", 5 | autoEnable: true, 6 | settings: { 7 | name: "i18n" 8 | }, 9 | registry: [{ 10 | provides: "dashboard", 11 | template: "i18nDashboard", 12 | label: "i18n", 13 | description: "Internationalization utilities", 14 | icon: "fa fa-language", 15 | priority: 2, 16 | container: "utilities" 17 | }, { 18 | provides: "settings", 19 | template: "i18nSettings", 20 | label: "Localization and i18n", 21 | container: "reaction-i18n" 22 | }] 23 | }); 24 | -------------------------------------------------------------------------------- /packages/reaction-inventory/client/templates/dashboard/inventory.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-inventory/client/templates/dashboard/inventory.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-inventory/client/templates/dashboard/inventory.js -------------------------------------------------------------------------------- /packages/reaction-inventory/client/templates/settings/settings.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-inventory/client/templates/settings/settings.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-inventory/client/templates/settings/settings.js -------------------------------------------------------------------------------- /packages/reaction-inventory/common/collections.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ReactionCore Collections Inventory 3 | */ 4 | ReactionCore.Collections.Inventory = new Mongo.Collection("Inventory"); 5 | 6 | ReactionCore.Collections.Inventory.attachSchema(ReactionCore.Schemas.Inventory); 7 | -------------------------------------------------------------------------------- /packages/reaction-inventory/common/globals.js: -------------------------------------------------------------------------------- 1 | // exported, global/window scope 2 | ReactionInventory = {}; 3 | ReactionInventory.Schemas = {}; 4 | ReactionInventory.Collections = {}; 5 | -------------------------------------------------------------------------------- /packages/reaction-inventory/server/logger.js: -------------------------------------------------------------------------------- 1 | // set logging level 2 | // ReactionInventory.Log = logger.bunyan.createLogger({name: "inventory", stream: formatOut}); 3 | ReactionInventory.Log = Logger; 4 | -------------------------------------------------------------------------------- /packages/reaction-inventory/server/publications.js: -------------------------------------------------------------------------------- 1 | Meteor.publish("Inventory", function () { 2 | if (this.userId === null) { 3 | return this.ready(); 4 | } 5 | const shopId = ReactionCore.getShopId(); 6 | if (!shopId) { 7 | return this.ready(); 8 | } 9 | if (Roles.userIsInRole(this.userId, ["admin", "owner", "createProduct"], 10 | shopId)) { 11 | return ReactionCore.Collections.Inventory.find({ 12 | shopId: shopId 13 | }); 14 | } 15 | return this.ready(); 16 | }); 17 | -------------------------------------------------------------------------------- /packages/reaction-layout/README.md: -------------------------------------------------------------------------------- 1 | # reaction-layout 2 | Reaction Commerce layout templates 3 | 4 | ``` 5 | meteor add reactioncommerce:reaction-layout 6 | ``` 7 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/createContentMenu/createContentMenu.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/footer/footer.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/header/brand/brand.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/header/header.html: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/header/menu/button.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/layout.js: -------------------------------------------------------------------------------- 1 | /** 2 | * coreHead helpers 3 | * used to define layout for routes 4 | * see: common/routing.js 5 | */ 6 | 7 | Template.coreHead.helpers({ 8 | metaData: function () { 9 | return ReactionCore.MetaData; 10 | } 11 | }); 12 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/loading/loading.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/notFound/notFound.js: -------------------------------------------------------------------------------- 1 | Template.notFound.onCreated = function () { 2 | // todo report not found source 3 | }; 4 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/layout/notice/unauthorized.html: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/theme/theme.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/reaction-layout/client/templates/theme/theme.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | Meteor.startup(() => { 4 | Tracker.autorun(() => { 5 | const subscription = ReactionCore.Subscriptions.Shops; 6 | if (subscription.ready()) { 7 | const shop = ReactionCore.Collections.Shops.findOne({}); 8 | 9 | if (shop) { 10 | if (shop.theme) { 11 | $("#reactionLayoutStyles").text(shop.theme.styles || ""); 12 | } else { 13 | $("#reactionLayoutStyles").text(""); 14 | } 15 | } 16 | } 17 | }); 18 | }); 19 | -------------------------------------------------------------------------------- /packages/reaction-layout/private/themes/notFound.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @theme base 3 | * @name notFound 4 | * @label Not Found Page 5 | * @author Reaction commerce 6 | * @url https://reactioncommerce.com 7 | */ 8 | 9 | .rui.not-found { 10 | /** 11 | * @label Not Found Container 12 | */ 13 | border: --; 14 | padding: --; 15 | background-color: --; 16 | } 17 | 18 | .rui.not-found i { 19 | /** 20 | * @label Icon 21 | */ 22 | } 23 | 24 | .rui.not-found .title { 25 | /** 26 | * @label 27 | */ 28 | color: --; 29 | font: --; 30 | } 31 | 32 | .rui.not-found .message { 33 | /** 34 | * @label 35 | */ 36 | color: --; 37 | font: --; 38 | } 39 | -------------------------------------------------------------------------------- /packages/reaction-layout/server/register.js: -------------------------------------------------------------------------------- 1 | 2 | // Register Themes 3 | // ReactionUI.registerTheme(Assets.getText("private/themes/notFound.css")); 4 | // 5 | ReactionCore.registerPackage({ 6 | label: "Layout", 7 | name: "reaction-layout", 8 | icon: "fa fa-object-group", 9 | autoEnable: true, 10 | settings: { 11 | name: "Layout" 12 | }, 13 | registry: [{ 14 | provides: "dashboard", 15 | template: "layoutDashboard", 16 | label: "Layout", 17 | description: "Layout utilities", 18 | icon: "fa fa-object-group", 19 | priority: 4, 20 | container: "appearance" 21 | }] 22 | }); 23 | -------------------------------------------------------------------------------- /packages/reaction-logging/.npm/package/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/reaction-logging/.npm/package/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/reaction-logging/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Logging 2 | 3 | Reaction Commerce internal logging package. 4 | 5 | ``` 6 | meteor add reactioncommerce:reaction-logging 7 | ``` 8 | -------------------------------------------------------------------------------- /packages/reaction-logging/client/bunyan.browserify.js: -------------------------------------------------------------------------------- 1 | bunyan = require("bunyan"); 2 | -------------------------------------------------------------------------------- /packages/reaction-logging/tests/bunyan-test.js: -------------------------------------------------------------------------------- 1 | Tinytest.add('bunyan', function(test) { 2 | test.isNotNull(logger, 'logger should be available'); 3 | test.isNotNull(bunyan, 'bunyan should be available'); 4 | }); 5 | -------------------------------------------------------------------------------- /packages/reaction-orders/README.md: -------------------------------------------------------------------------------- 1 | # reaction-layout 2 | Provides Reaction Commerce order management. 3 | 4 | ``` 5 | meteor add reactioncommerce:reaction-orders 6 | ``` 7 | -------------------------------------------------------------------------------- /packages/reaction-orders/client/templates/dashboard/orders/list/items/items.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ordersListItems helpers 3 | * 4 | */ 5 | Template.ordersListItems.helpers({ 6 | media: function () { 7 | const variantImage = ReactionCore.Collections.Media.findOne({ 8 | "metadata.productId": this.productId, 9 | "metadata.variantId": this.variants._id 10 | }); 11 | // variant image 12 | if (variantImage) { 13 | return variantImage; 14 | } 15 | // find a default image 16 | const productImage = ReactionCore.Collections.Media.findOne({ 17 | "metadata.productId": this.productId 18 | }); 19 | if (productImage) { 20 | return productImage; 21 | } 22 | return false; 23 | } 24 | }); 25 | -------------------------------------------------------------------------------- /packages/reaction-orders/client/templates/dashboard/orders/list/pdf/pdf.js: -------------------------------------------------------------------------------- 1 | /** 2 | * completedPDFLayout 3 | * inheritsHelpersFrom dashboardOrdersList 4 | * Uses the browser print function. 5 | */ 6 | Template.completedPDFLayout.inheritsHelpersFrom("dashboardOrdersList"); 7 | 8 | Template.completedPDFLayout.inheritsEventsFrom("dashboardOrdersList"); 9 | 10 | Template.completedPDFLayout.helpers({ 11 | invoice: function () { 12 | return this.billing[0].invoices; 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /packages/reaction-orders/client/templates/dashboard/orders/list/summary/summary.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ordersListSummary helpers 3 | * 4 | * @returns paymentInvoice 5 | */ 6 | Template.ordersListSummary.helpers({ 7 | invoice: function () { 8 | return this.invoice; 9 | } 10 | }); 11 | -------------------------------------------------------------------------------- /packages/reaction-orders/client/templates/dashboard/orders/orderPage/details/details.js: -------------------------------------------------------------------------------- 1 | /** 2 | * pageOrderDetail helpers 3 | * 4 | */ 5 | Template.pageOrderDetail.helpers({ 6 | userProfile: function () { 7 | if (typeof this.userId === "string") { 8 | const userProfile = ReactionCore.Collections. 9 | Accounts.findOne(this.userId); 10 | return userProfile.profile; 11 | } 12 | }, 13 | orderAge: function () { 14 | return moment(this.createdAt).fromNow(); 15 | }, 16 | shipmentTracking: function () { 17 | return this.shipping.shipmentMethod.tracking; 18 | }, 19 | paymentMethod: function () { 20 | return this.payment.paymentMethod[0].processor; 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /packages/reaction-orders/client/templates/dashboard/orders/workflow/orderCompleted/orderCompleted.html: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /packages/reaction-orders/client/templates/dashboard/orders/workflow/orderSummary/orderSummary.html: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-buyer/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-buyer/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-buyer/reaction-p2p-marketplace-buyer-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-buyer/reaction-p2p-marketplace-buyer.js: -------------------------------------------------------------------------------- 1 | // Write your package code here! 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-locations/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/client/templates/products/locationField/locationField.js: -------------------------------------------------------------------------------- 1 | // inherit helpers from template productDetail so we can use fieldComponent in this here template 2 | Template.productDetailLocationField.inheritsHelpersFrom("productDetail"); 3 | Template.productDetailLocationField.inheritsEventsFrom("productDetail"); 4 | Template.productDetailLocationField.inheritsHooksFrom("productDetail"); 5 | 6 | 7 | Template.productDetailLocationField.onRendered( 8 | function() { 9 | Meteor.setTimeout(function() { // what the?!? document doesn't seem to be ready immediately when this event is fired... 10 | // always show the map on product detail 11 | $(".map-container").css({ opacity: 1.0 }); 12 | }, 100); 13 | } 14 | ); 15 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/client/templates/products/locationFieldDisplay/locationFieldDisplay.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/client/templates/products/productMap/productMap.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/client/templates/products/productMap/productMap.less: -------------------------------------------------------------------------------- 1 | 2 | @import "{reactioncommerce:reaction-ui}/client/styles/variables.less"; 3 | @import "{reactioncommerce:reaction-ui}/client/styles/mixins.less"; 4 | 5 | .product-map { 6 | //display: none; // makes map initialize empty :( // will be changed by view switcher 7 | width: 100%; 8 | } 9 | 10 | .product-map .map-container { 11 | width: 100%; 12 | height: 600px; 13 | padding: 0 20px; 14 | } 15 | 16 | @media screen and (max-width: @screen-xs) { 17 | .product-map .map-container { 18 | height: 350px; 19 | } 20 | } 21 | 22 | .product-detail-map { 23 | margin-top: 40px; 24 | } 25 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/client/templates/products/productMap/productMapSingle.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/common/collections/collections.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ReactionCore Collections MapMarkers 3 | */ 4 | ReactionCore.Collections.MapMarkers = new Mongo.Collection("MapMarkers"); 5 | 6 | ReactionCore.Collections.MapMarkers.attachSchema(ReactionCore.Schemas.MapMarker); 7 | 8 | ReactionCore.Collections.MapMarkers.allow({ 9 | insert: function(userId, doc) { 10 | // only allow posting if you are logged in 11 | return !! userId; 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/common/schemas/mapmarkers.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Map Marker Schema 3 | */ 4 | 5 | ReactionCore.Schemas.MapMarker = new SimpleSchema({ 6 | _id: { 7 | type: String, 8 | optional: true 9 | }, 10 | productId: { 11 | type: String, 12 | optional: false, 13 | defaultValue: "" 14 | }, 15 | shopId: { 16 | type: String, 17 | autoValue: ReactionCore.shopIdAutoValue, 18 | index: 1, 19 | label: "Product ShopId" 20 | }, 21 | latitude: { 22 | type: String, 23 | defaultValue: "0" 24 | }, 25 | longitude: { 26 | type: String, 27 | defaultValue: "0" 28 | }, 29 | }); 30 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/public/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-locations/public/images/icon.png -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/reaction-p2p-marketplace-locations-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/reaction-p2p-marketplace-locations.js: -------------------------------------------------------------------------------- 1 | // Write your package code here! 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-locations/server/security/browserPolicy.js: -------------------------------------------------------------------------------- 1 | Meteor.startup(function() { 2 | BrowserPolicy.content.allowOriginForAll("*.googleapis.com"); 3 | BrowserPolicy.content.allowOriginForAll("*.gstatic.com"); 4 | return BrowserPolicy.content.allowOriginForAll("maps.googleapis.com"); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-profile/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-profile/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-profile/client/templates/accountProfile/marketplaceAccountProfile.less: -------------------------------------------------------------------------------- 1 | 2 | .profile-input-description { 3 | height: 200px !important; 4 | } 5 | 6 | .address-book .panel-control-bar, 7 | .address-list-heading, 8 | .address-list-heading, 9 | .address-list-item div[data-event-action="selectBillingAddress"], 10 | #addressBookEditForm .address-options, 11 | #addressBookAddForm .address-options { 12 | display: none; 13 | } 14 | 15 | select[name="country"] option:first-child { 16 | visibility: hidden; /* can't translate (Select One) so we hide it */ 17 | } 18 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-profile/client/templates/publicProfile/marketplaceProfileWidget.js: -------------------------------------------------------------------------------- 1 | 2 | Template.marketplaceProfileWidget.inheritsHooksFrom("marketplaceProfile"); 3 | Template.marketplaceProfileWidget.inheritsHelpersFrom("marketplaceProfile"); 4 | Template.marketplaceProfileWidget.inheritsEventsFrom("marketplaceProfile"); 5 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-profile/client/templates/publicProfile/marketplaceProfileWidget.less: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-profile/reaction-p2p-marketplace-profile-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-profile/reaction-p2p-marketplace-profile.js: -------------------------------------------------------------------------------- 1 | // Write your package code here! 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-ratings/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/client/templates/products/productDetail/productDetailMarketplaceRating.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/common/collections/collections.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionCore.Collections.Ratings = new Mongo.Collection("Ratings"); 3 | ReactionCore.Collections.Ratings.attachSchema(ReactionCore.Schemas.Ratings); 4 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/common/schemas/ratings.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionCore.Schemas.Ratings = new SimpleSchema( 3 | { 4 | "raterId": { 5 | type: String, 6 | optional: false 7 | }, 8 | "rateeId": { 9 | type: String, 10 | optional: false 11 | }, 12 | "value": { 13 | type: Number, 14 | decimal: true, 15 | optional: false 16 | }, 17 | } 18 | ); 19 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/reaction-p2p-marketplace-ratings-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/reaction-p2p-marketplace-ratings.js: -------------------------------------------------------------------------------- 1 | // Write your package code here! 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/server/publications/ratings.js: -------------------------------------------------------------------------------- 1 | 2 | Meteor.publish("Ratings", function () { 3 | return ReactionCore.Collections.Ratings.find( 4 | /* 5 | { 6 | raterId: Meteor.userId() 7 | }*/ 8 | ); 9 | 10 | }); 11 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-ratings/server/security/ratings.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionCore.Collections.Ratings.allow({ 3 | insert: function(userId, rating) { 4 | if (Match.test(rating, ReactionCore.Schemas.Ratings)) { 5 | return true 6 | } 7 | return false 8 | }, 9 | update: function(userId, rating, fields, modifier) { 10 | ReactionCore.Log.info("ReactionCore.Collections.Ratings.allow.update() ",rating); 11 | if (userId != rating.raterId) { 12 | return false; 13 | } 14 | return true; 15 | }, 16 | remove: function(userId, rating) { 17 | if (rating.shopId !== ReactionCore.getShopId()) { 18 | return false; 19 | } 20 | return true; 21 | } 22 | }); 23 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-sell-date/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-sell-date/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-sell-date/client/templates/products/dateField/dateField.less: -------------------------------------------------------------------------------- 1 | 2 | .pickupTime-label { 3 | float: left; 4 | width: 50px; 5 | } 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-sell-date/common/collections/collections.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Collections Templates 3 | */ 4 | 5 | // overriding Products collection set by reaction core 6 | ReactionCore.Collections.Products.attachSchema(ReactionCore.Schemas.Product, {selector: { type: "simple" }, replace: true}); 7 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-sell-date/reaction-p2p-marketplace-sell-date-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-seller/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/addressBook/addressBook.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/addressBook/addressBook.js: -------------------------------------------------------------------------------- 1 | 2 | Template.addressBookPanelSeller.replaces("addressBookPanel"); 3 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/dashboard/orders/details/detail.js: -------------------------------------------------------------------------------- 1 | Template.orderDetailMarketplace.replaces("orderDetail"); 2 | 3 | Template.orderDetail.helpers({ 4 | transactionId: function () { 5 | return this.billing[0].paymentMethod.transactionId; 6 | } 7 | }); 8 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/dashboard/orders/sellerOrders.less: -------------------------------------------------------------------------------- 1 | /* 2 | .seller-orders .controls { 3 | display: none; 4 | }*/ 5 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/dashboard/products/list/productsList.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/dashboard/products/list/productsList.less: -------------------------------------------------------------------------------- 1 | .backend-product-list img { 2 | width: 100px; 3 | min-width: 100px; 4 | max-width: 100px; 5 | } 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/products/productDetail/variants/variantForm/variantForm.js: -------------------------------------------------------------------------------- 1 | 2 | Template.variantFormMarketplace.replaces('variantForm'); 3 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/signIn/signIn.js: -------------------------------------------------------------------------------- 1 | 2 | //Template.loginFormSignInViewMarketplace.replaces("loginFormSignInView"); 3 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/client/templates/signUp/sellerFlag.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/collections/collections.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Collections Templates 3 | */ 4 | 5 | // overriding Products collection set by reaction core 6 | ReactionCore.Collections.Products.attachSchema(ReactionCore.Schemas.Product, {selector: { type: "simple" }, replace: true}); 7 | 8 | ReactionCore.Collections.Accounts.attachSchema(ReactionCore.Schemas.Accounts, {replace: true}); 9 | 10 | ReactionCore.Collections.Cart.attachSchema(ReactionCore.Schemas.Cart, {replace: true}); 11 | 12 | ReactionCore.Collections.Orders.attachSchema([ReactionCore.Schemas.Cart, 13 | ReactionCore.Schemas.Order, 14 | ReactionCore.Schemas.OrderItem], {replace: true}); 15 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/common.js: -------------------------------------------------------------------------------- 1 | 2 | //Meteor.users.update(Meteor.userId(), {$set: {'profile.company': company._id }}); 3 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/schemas/accounts.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionCore.Schemas.Accounts = new SimpleSchema([ 3 | ReactionCore.Schemas.Accounts, { 4 | isSeller: { 5 | type: Boolean, 6 | defaultValue: false, 7 | optional: true 8 | }, 9 | acceptedTerms: { 10 | type: Boolean, 11 | defaultValue: false, 12 | optional: true 13 | }, 14 | isDecided: { 15 | type: Boolean, 16 | defaultValue: false, 17 | optional: true 18 | }, 19 | } 20 | ]); 21 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/schemas/cart.js: -------------------------------------------------------------------------------- 1 | 2 | // overriding CartItem schema with extended version 3 | ReactionCore.Schemas.CartItem = new SimpleSchema([ 4 | ReactionCore.Schemas.CartItem, 5 | { 6 | sellerId: { 7 | type: String, 8 | index: 1, 9 | optional: true 10 | }, 11 | } 12 | ]); 13 | 14 | ReactionCore.Schemas.CartItems = new SimpleSchema({ 15 | items: { 16 | type: [ReactionCore.Schemas.CartItem], 17 | optional: true 18 | } 19 | }); 20 | 21 | ReactionCore.Schemas.Cart = new SimpleSchema([ 22 | ReactionCore.Schemas.Cart, 23 | { 24 | items: { 25 | type: [ReactionCore.Schemas.CartItem], 26 | optional: true 27 | }, 28 | } 29 | ]); 30 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/schemas/i18n/de.i18n.json: -------------------------------------------------------------------------------- 1 | { 2 | "schemas": { 3 | "products": { 4 | "inventoryQuantity": { 5 | "label": "Menge", 6 | "placeholder": "Enter a title for your post" 7 | }, 8 | "category": { 9 | "label": "Category", 10 | "placeholder": "Select a category", 11 | "options": { 12 | "announcements": "Announcements", 13 | "packages": "Packages", 14 | "ama": "AMA", 15 | "news": "News" 16 | } 17 | } 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/schemas/orders.js: -------------------------------------------------------------------------------- 1 | 2 | // overriding CartItem schema with extended version 3 | ReactionCore.Schemas.OrderItem = new SimpleSchema([ 4 | ReactionCore.Schemas.OrderItem, 5 | { 6 | sellerId: { 7 | type: String, 8 | index: 1, 9 | optional: true 10 | }, 11 | } 12 | ]); 13 | 14 | ReactionCore.Schemas.Order = new SimpleSchema([ 15 | ReactionCore.Schemas.Order, 16 | { 17 | items: { 18 | type: [ReactionCore.Schemas.OrderItem], 19 | optional: true 20 | }, 21 | } 22 | ]); 23 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/common/schemas/products.js: -------------------------------------------------------------------------------- 1 | 2 | // overriding product schema with extended version 3 | ReactionCore.Schemas.Product = new SimpleSchema([ 4 | ReactionCore.Schemas.Product, { 5 | userId: { 6 | type: String, 7 | index: 1 8 | }, 9 | isActive: { 10 | type: Boolean, 11 | index: 1, 12 | defaultValue: false 13 | }, 14 | copiedInventoryQuantity: { 15 | type: Number, 16 | label: "Quantity", 17 | optional: true 18 | }, 19 | soldOne: { 20 | type: Boolean, 21 | defaultValue: false 22 | }, 23 | } 24 | ]); 25 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/public/images/decision_deco.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-seller/public/images/decision_deco.jpg -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/reaction-p2p-marketplace-seller-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/reaction-p2p-marketplace-seller.js: -------------------------------------------------------------------------------- 1 | // Write your package code here! 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/server/publications/orders.js: -------------------------------------------------------------------------------- 1 | /** 2 | * seller orders 3 | */ 4 | 5 | Meteor.publish("SellerOrders", function () { 6 | if (this.userId === null) { 7 | return this.ready(); 8 | } 9 | const shopId = ReactionCore.getShopId(); 10 | if (!shopId) { 11 | return this.ready(); 12 | } 13 | if (Roles.userIsInRole(this.userId, ["admin", "owner"], shopId)) { 14 | return ReactionCore.Collections.Orders.find({ 15 | shopId: shopId 16 | }); 17 | } 18 | return ReactionCore.Collections.Orders.find({ 19 | shopId: shopId, 20 | //"items.item.sellerId": this.userId 21 | items: { 22 | $elemMatch: { 23 | sellerId: this.userId, 24 | } 25 | } 26 | }); 27 | }); 28 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-seller/server/publications/productsForOrdersHistory.js: -------------------------------------------------------------------------------- 1 | /** 2 | * products publication 3 | * @return {Object} return product cursor 4 | */ 5 | Meteor.publish("ProductsForOrdersHistory", function () { 6 | const Products = ReactionCore.Collections.Products; 7 | return Products.find({}); 8 | }); 9 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-simplified-products/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/cart/cartDrawer/cartDrawer.js: -------------------------------------------------------------------------------- 1 | Template.newOpenCartDrawer.replaces("openCartDrawer"); 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/cart/cartDrawer/cartItems/cartItems.js: -------------------------------------------------------------------------------- 1 | Template.newCartDrawerItems.replaces("cartDrawerItems"); 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/cart/cartDrawer/cartSubTotals/cartSubTotals.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/cart/cartDrawer/cartSubTotals/cartSubTotals.js: -------------------------------------------------------------------------------- 1 | Template.newCartSubTotals.replaces('cartSubTotals'); 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/productDetailHideVariants.js: -------------------------------------------------------------------------------- 1 | 2 | // let simplifyProductPage = function() { 3 | 4 | // } 5 | 6 | // Template.productDetail.onRendered( 7 | // simplifyProductPage 8 | // ); 9 | 10 | // Template.productDetailEdit.onRendered( // to simplify page after only fields are reloaded without full page reload 11 | // simplifyProductPage 12 | // ); 13 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/simplifiedProduct.js: -------------------------------------------------------------------------------- 1 | 2 | Template.simplifiedProductCssInclude.helpers( 3 | { 4 | urlFor: function(relativeUrl) { 5 | return "/packages/scydev_reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/"+relativeUrl; 6 | }, 7 | }); 8 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/simplifiedProductBuyer.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/simplifiedProductBuyer.css -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/simplifiedProductSeller.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/simplifiedProductSeller.css -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/client/templates/products/productDetail/tags/tags.less: -------------------------------------------------------------------------------- 1 | 2 | .tag-input-hashtag { 3 | display: none; 4 | } 5 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/reaction-p2p-marketplace-simplified-products-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace-simplified-products/reaction-p2p-marketplace-simplified-products.js: -------------------------------------------------------------------------------- 1 | // Write your package code here! 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-p2p-marketplace/README.md -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/cart/checkout/checkout.js: -------------------------------------------------------------------------------- 1 | Template.cartCheckoutMarketplace.replaces("cartCheckout"); 2 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/cart/checkout/header/header.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/cart/checkout/header/header.js: -------------------------------------------------------------------------------- 1 | 2 | Template.checkoutHeaderMarketplace.replaces("checkoutHeader"); 3 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/dashboard/orders/list/itemSeller/itemSeller.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/dashboard/orders/list/ordersList.js: -------------------------------------------------------------------------------- 1 | Template.dashboardOrdersListMarketplace.replaces("dashboardOrdersList"); 2 | 3 | /** 4 | * dashboardOrdersList helpers 5 | * 6 | */ 7 | Template.dashboardOrdersList.helpers({ 8 | orderCreatedAt: function () { 9 | let context = this.createdAt; 10 | if (window.moment) { 11 | return moment(context).format("DD.MM.YYYY HH:mm"); 12 | } 13 | return context; 14 | }, 15 | }); 16 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/dropdown/dropdown.html: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/dropdown/dropdown.js: -------------------------------------------------------------------------------- 1 | 2 | Template.marketplaceUserDropdown.replaces("userDropdown"); 3 | 4 | Template.loginDropdown.events({ 5 | "click #logout": function (event, template) { 6 | event.preventDefault(); 7 | 8 | template.$(".dropdown-toggle").dropdown("toggle"); 9 | $("#userDropdownSpinnerContainer").show(); 10 | 11 | return event.stopPropagation(); 12 | } 13 | }); 14 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/dropdown/dropdown.less: -------------------------------------------------------------------------------- 1 | #userDropdownSpinnerContainer div.spinnerBox { 2 | height: 200px; 3 | } 4 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/products/productList/productList.less: -------------------------------------------------------------------------------- 1 | 2 | .product-list-item img { 3 | width: 100px; 4 | min-width: 100px; 5 | max-width: 100px; 6 | } 7 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/products/productsMarketplace.html: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/client/templates/style.less: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | fixes to reaction style 4 | */ 5 | 6 | .dropup, .dropdown { 7 | position: static !important; 8 | } 9 | 10 | .product-grid-item .for-sale-on-date, 11 | .product-grid-item .location-text { 12 | width: 100%; 13 | text-align: center; 14 | } 15 | 16 | .product-grid-item .for-sale-on-date { 17 | padding-top: 20px; 18 | } 19 | 20 | .product-list-item .for-sale-on-date, 21 | .product-list-item .location-text { 22 | padding-top: 20px; 23 | } 24 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/reaction-p2p-marketplace-tests.js: -------------------------------------------------------------------------------- 1 | // Write your tests here! 2 | // Here is an example. 3 | Tinytest.add('example', function (test) { 4 | test.equal(true, true); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/reaction-p2p-marketplace/server/methods/checkout.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | ReactionCore.MethodHooks.before('genericSubmit', function(options) { 4 | //"genericSubmit": function (transactionType, cardData, paymentData) { 5 | ReactionCore.Log.info("ReactionCore.MethodHooks.before('genericSubmit') Access Denied!"); 6 | throw new Meteor.Error(403, "Access Denied"); 7 | }); 8 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/README.md: -------------------------------------------------------------------------------- 1 | # reaction-product-variant 2 | Basic Reaction product type with variants. 3 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/client/templates/products/productDetail/social/social.html: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/client/templates/products/productGrid/content/content.js: -------------------------------------------------------------------------------- 1 | /** 2 | * gridContent helpers 3 | */ 4 | 5 | Template.gridContent.helpers({ 6 | displayPrice: function () { 7 | return this._id && this.price && this.price.range; 8 | } 9 | }); 10 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/client/templates/products/productGrid/controls/controls.js: -------------------------------------------------------------------------------- 1 | Template.gridControls.onRendered(function () { 2 | return this.$("[data-toggle='tooltip']").tooltip({ 3 | position: "top" 4 | }); 5 | }); 6 | 7 | Template.gridControls.helpers({ 8 | checked: function () { 9 | const selectedProducts = Session.get("productGrid/selectedProducts"); 10 | return _.isArray(selectedProducts) ? selectedProducts.indexOf(this._id) >= 0 : false; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/client/templates/products/productGrid/notice/notice.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/client/templates/products/productGrid/notice/notice.js: -------------------------------------------------------------------------------- 1 | /** 2 | * gridNotice helpers 3 | */ 4 | Template.gridNotice.helpers({ 5 | isLowQuantity: function () { 6 | return this.isLowQuantity; 7 | }, 8 | isSoldOut: function () { 9 | return this.isSoldOut; 10 | }, 11 | isBackorder: function () { 12 | return this.isBackorder; 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /packages/reaction-product-variant/client/templates/products/products.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 13 | -------------------------------------------------------------------------------- /packages/reaction-router/server/register.js: -------------------------------------------------------------------------------- 1 | ReactionCore.registerPackage({ 2 | label: "Router", 3 | name: "reaction-router", 4 | icon: "fa fa-share-square-o", 5 | autoEnable: true, 6 | settings: { 7 | name: "Layout" 8 | }, 9 | registry: [{ 10 | provides: "dashboard", 11 | template: "routerDashboard", 12 | label: "Routing", 13 | description: "Routing utilities", 14 | icon: "fa fa-share-square-o", 15 | priority: 4, 16 | container: "utilities" 17 | }] 18 | }); 19 | -------------------------------------------------------------------------------- /packages/reaction-sample-data-custom/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Sample Data 2 | 3 | This package contains some sample data to load into an empty reaction database. It also contains the data needed to obtain a functional installation. This package will also load the sample data on first startup, but only if no other data is found in the collection being loaded. 4 | -------------------------------------------------------------------------------- /packages/reaction-sample-data-custom/package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | summary: "Reaction Commerce Sample Data", 3 | name: "scydev:reaction-sample-data-custom", 4 | version: "0.1.2", 5 | documentation: "README.md" 6 | }); 7 | 8 | Package.onUse(function (api) { 9 | api.versionsFrom("METEOR@1.2.1"); 10 | 11 | // reaction core 12 | api.use("reactioncommerce:core@0.12.0"); 13 | 14 | // load fixture data 15 | api.addFiles("server/load.js", "server"); 16 | 17 | // Private fixture data 18 | api.addAssets("private/data/Products.json", "server"); 19 | api.addAssets("private/data/Shops.json", "server"); 20 | api.addAssets("private/data/Tags.json", "server"); 21 | }); 22 | -------------------------------------------------------------------------------- /packages/reaction-sample-data-custom/private/data/Tags.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /packages/reaction-sample-data-custom/server/load.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hook to setup core additional imports during ReactionCore init (shops process first) 3 | */ 4 | if (ReactionCore && ReactionCore.Hooks) { 5 | ReactionCore.Hooks.Events.add("onCoreInit", () => { 6 | ReactionImport.fixture().process(Assets.getText("private/data/Shops.json"), ["name"], ReactionImport.shop); 7 | // ensure Shops are loaded first. 8 | ReactionImport.flush(); 9 | // these will flush/import with the rest of the imports from core init. 10 | ReactionImport.fixture().process(Assets.getText("private/data/Products.json"), ["title"], ReactionImport.load); 11 | ReactionImport.fixture().process(Assets.getText("private/data/Tags.json"), ["name"], ReactionImport.load); 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /packages/reaction-sample-data/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Sample Data 2 | 3 | This package contains some sample data to load into an empty reaction database. It also contains the data needed to obtain a functional installation. This package will also load the sample data on first startup, but only if no other data is found in the collection being loaded. 4 | -------------------------------------------------------------------------------- /packages/reaction-sample-data/package.js: -------------------------------------------------------------------------------- 1 | Package.describe({ 2 | summary: "Reaction Commerce Sample Data", 3 | name: "reactioncommerce:reaction-sample-data", 4 | version: "0.1.2", 5 | documentation: "README.md" 6 | }); 7 | 8 | Package.onUse(function (api) { 9 | api.versionsFrom("METEOR@1.2.1"); 10 | 11 | // reaction core 12 | api.use("reactioncommerce:core@0.12.0"); 13 | 14 | // load fixture data 15 | api.addFiles("server/load.js", "server"); 16 | 17 | // Private fixture data 18 | api.addAssets("private/data/Products.json", "server"); 19 | api.addAssets("private/data/Shops.json", "server"); 20 | api.addAssets("private/data/Tags.json", "server"); 21 | }); 22 | -------------------------------------------------------------------------------- /packages/reaction-sample-data/private/data/Tags.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "slug": "example-product", 3 | "name": "example-product", 4 | "isTopLevel": false, 5 | "updatedAt": { 6 | "$date": "2014-04-12T08:17:20.576-0700" 7 | }, 8 | "createdAt": { 9 | "$date": "2014-04-12T08:17:20.576-0700" 10 | }, 11 | "_id": "cseCBSSrJ3t8HQSNP", 12 | "shopId": "J8Bhq3uTtdgwZx3rz" 13 | }, { 14 | "slug": "shop", 15 | "name": "Shop", 16 | "isTopLevel": true, 17 | "updatedAt": { 18 | "$date": "2014-04-09T13:23:57.412-0700" 19 | }, 20 | "createdAt": { 21 | "$date": "2014-04-09T13:23:57.412-0700" 22 | }, 23 | "_id": "rpjCvTBGjhBi2xdro", 24 | "shopId": "J8Bhq3uTtdgwZx3rz" 25 | }] 26 | -------------------------------------------------------------------------------- /packages/reaction-sample-data/server/load.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Hook to setup core additional imports during ReactionCore init (shops process first) 3 | */ 4 | if (ReactionCore && ReactionCore.Hooks) { 5 | ReactionCore.Hooks.Events.add("onCoreInit", () => { 6 | ReactionImport.fixture().process(Assets.getText("private/data/Shops.json"), ["name"], ReactionImport.shop); 7 | // ensure Shops are loaded first. 8 | ReactionImport.flush(); 9 | // these will flush/import with the rest of the imports from core init. 10 | ReactionImport.fixture().process(Assets.getText("private/data/Products.json"), ["title"], ReactionImport.load); 11 | ReactionImport.fixture().process(Assets.getText("private/data/Tags.json"), ["name"], ReactionImport.load); 12 | }); 13 | } 14 | -------------------------------------------------------------------------------- /packages/reaction-schemas/README.md: -------------------------------------------------------------------------------- 1 | # Reaction Schemas 2 | This is a core package of Reaction Commerce and provides schema definitions. 3 | 4 | `reactioncommerce:reaction-collections` is dependent on, and includes this package. 5 | 6 | ## Installation 7 | 8 | ```bash 9 | meteor add reactioncommerce:reaction-schemas 10 | ``` 11 | -------------------------------------------------------------------------------- /packages/reaction-schemas/common/schemas/templates.js: -------------------------------------------------------------------------------- 1 | ReactionCore.Schemas.Templates = new SimpleSchema({ 2 | template: { 3 | type: String 4 | }, 5 | language: { 6 | type: String, 7 | optional: true, 8 | defaultValue: "en" 9 | }, 10 | source: { 11 | type: String, 12 | optional: true 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /packages/reaction-schemas/common/schemas/themes.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @summary Themes Schema 3 | * Schema for themes used in reaction-layout 4 | */ 5 | 6 | ReactionCore.Schemas.Themes = new SimpleSchema({ 7 | theme: { 8 | type: String, 9 | index: true 10 | }, 11 | 12 | author: { 13 | type: String, 14 | optional: true 15 | }, 16 | 17 | layout: { 18 | type: String, 19 | optional: true, 20 | defaultValue: "coreLayout" 21 | }, 22 | 23 | url: { 24 | type: String, 25 | optional: true 26 | }, 27 | 28 | components: { 29 | type: [Object], 30 | optional: true, 31 | blackbox: true 32 | } 33 | }); 34 | -------------------------------------------------------------------------------- /packages/reaction-schemas/common/schemas/translations.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * translations schema 4 | * mostly just a blackbox for now 5 | * someday maybe we'll validate the entire schema 6 | * since ui editing for these values are likely 7 | */ 8 | 9 | ReactionCore.Schemas.Translation = new SimpleSchema({ 10 | shopId: { 11 | type: String, 12 | index: 1, 13 | autoValue: ReactionCore.shopIdAutoValue, 14 | label: "Translation ShopId" 15 | }, 16 | language: { 17 | type: String 18 | }, 19 | i18n: { 20 | type: String, 21 | index: 1 22 | }, 23 | translation: { 24 | type: Object, 25 | blackbox: true 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /packages/reaction-schemas/common/schemas/workflow.js: -------------------------------------------------------------------------------- 1 | /** 2 | * workflow schema for attaching to collection where 3 | * PackageWorkflow is controlling view flow 4 | * Shop defaultWorkflow is defined in Shop 5 | */ 6 | 7 | ReactionCore.Schemas.Workflow = new SimpleSchema({ 8 | status: { 9 | type: String, 10 | defaultValue: "new", 11 | index: 1 12 | }, 13 | workflow: { 14 | type: [String], 15 | optional: true 16 | } 17 | }); 18 | -------------------------------------------------------------------------------- /packages/reaction-shipping/.gitignore: -------------------------------------------------------------------------------- 1 | .build* 2 | .versions 3 | -------------------------------------------------------------------------------- /packages/reaction-shipping/README.md: -------------------------------------------------------------------------------- 1 | # reaction-shipping 2 | `meteor add reactioncommerce:reaction-shipping` 3 | 4 | ## Description 5 | Flat Shipping Rate Provider for Reaction Commerce. 6 | 7 | ## Provides 8 | Flat rate shipping package, example for shipping packages. Add admin screen for flat rates in shipping package Extends core shipping templates 9 | 10 | ## TODO 11 | - Extend to additional rate sources 12 | - Examples extending for aftership, postmaster.io,etc 13 | -------------------------------------------------------------------------------- /packages/reaction-shipping/client/templates/cart/checkout/shipping/shipping.js: -------------------------------------------------------------------------------- 1 | Template.flatRateCheckoutShipping.inheritsHelpersFrom("coreCheckoutShipping"); 2 | Template.flatRateCheckoutShipping.inheritsEventsFrom("coreCheckoutShipping"); 3 | -------------------------------------------------------------------------------- /packages/reaction-shipping/client/templates/shipping.less: -------------------------------------------------------------------------------- 1 | .add-shipping-method, 2 | .edit-shipping-method, 3 | .delete-shipping-method{ 4 | cursor: pointer; 5 | padding-right: 10px; 6 | } 7 | 8 | .add-shipping-provider { 9 | cursor: pointer; 10 | padding-right: 33px; 11 | margin-top: 30px; 12 | } 13 | 14 | .edit-shipping-provider { 15 | cursor: pointer; 16 | padding-right: 18px; 17 | } 18 | 19 | .shipping-rate-tables { 20 | 21 | } -------------------------------------------------------------------------------- /packages/reaction-shipping/common/collections.js: -------------------------------------------------------------------------------- 1 | ReactionCore.Schemas.ShippingPackageConfig = new SimpleSchema([ 2 | ReactionCore.Schemas.PackageConfig, { 3 | "settings.name": { 4 | type: String, 5 | defaultValue: "Flat Rate Service" 6 | } 7 | } 8 | ]); 9 | -------------------------------------------------------------------------------- /packages/reaction-shipping/server/fixtures.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Fixture - we always want a record 3 | */ 4 | // Meteor.startup(function() { 5 | // var jsonFile; 6 | // jsonFile = Assets.getText("private/data/Shipping.json"); 7 | // return Fixtures.loadData(ReactionCore.Collections.Shipping, jsonFile); 8 | // }); 9 | Meteor.startup(function () { 10 | ReactionImport.process(Assets.getText("private/data/Shipping.json"), ["name"], ReactionImport.shipping); 11 | ReactionImport.flush(); 12 | }); 13 | -------------------------------------------------------------------------------- /packages/reaction-social/.gitignore: -------------------------------------------------------------------------------- 1 | .meteor/local 2 | .meteor/meteorite 3 | .versions 4 | -------------------------------------------------------------------------------- /packages/reaction-social/client/templates/apps/facebook.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/reaction-social/client/templates/apps/googleplus.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/reaction-social/client/templates/apps/pinterest.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/reaction-social/client/templates/apps/twitter.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/reaction-social/client/templates/dashboard/social.js: -------------------------------------------------------------------------------- 1 | Template.socialSettings.helpers({ 2 | packageData() { 3 | return ReactionCore.Collections.Packages.findOne({ 4 | name: "reaction-social" 5 | }); 6 | }, 7 | 8 | checkboxAtts: function () { 9 | return { 10 | class: "checkbox-switch" 11 | }; 12 | } 13 | }); 14 | 15 | 16 | AutoForm.hooks({ 17 | "social-update-form": { 18 | onSuccess() { 19 | Alerts.removeSeen(); 20 | return Alerts.toast("Social settings saved.", "success", { 21 | autoHide: true 22 | }); 23 | }, 24 | onError(operation, error) { 25 | Alerts.removeSeen(); 26 | return Alerts.toast(`Social settings update failed. ${error}`, "error"); 27 | } 28 | } 29 | }); 30 | -------------------------------------------------------------------------------- /packages/reaction-social/client/templates/social.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /packages/reaction-social/server/policy.js: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * set browser policies 4 | */ 5 | BrowserPolicy.content.allowOriginForAll("*.facebook.com"); 6 | 7 | BrowserPolicy.content.allowOriginForAll("connect.facebook.net"); 8 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/README.md: -------------------------------------------------------------------------------- 1 | # reaction-ui-navbar 2 | Reaction Commerce UI Navbar 3 | 4 | ``` 5 | meteor add reactioncommerce:reaction-ui-navbar 6 | ``` 7 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/client/components/brand/brand.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/client/components/brand/brand.js: -------------------------------------------------------------------------------- 1 | Template.coreNavigationBrand.helpers({ 2 | logo() { 3 | const shop = ReactionCore.Collections.Shops.findOne(ReactionCore.getShopId()); 4 | 5 | if (_.isArray(shop.brandAssets)) { 6 | const brandAsset = _.find(shop.brandAssets, (asset) => asset.type === "navbarBrandImage"); 7 | return ReactionCore.Collections.Media.findOne(brandAsset.mediaId); 8 | } 9 | 10 | return false; 11 | } 12 | }); 13 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/client/components/brand/brand.less: -------------------------------------------------------------------------------- 1 | // Imports 2 | @import "{reactioncommerce:reaction-ui}/client/styles/variables.less"; 3 | @import "{reactioncommerce:reaction-ui}/client/styles/mixins.less"; 4 | 5 | .rui.navbar .brand { 6 | .display(flex); 7 | .flex(0 0 auto); 8 | .align-items(center); 9 | .margin-left(10px); 10 | } 11 | 12 | .rui.navbar .brand .logo img { 13 | max-height: @navbar-height - 5; 14 | .padding-right(10px); 15 | } 16 | 17 | .rui.navbar .brand .title {} 18 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/client/components/i18n/i18n.html: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/client/components/navbar/navbar.html: -------------------------------------------------------------------------------- 1 | 2 | 16 | -------------------------------------------------------------------------------- /packages/reaction-ui-navbar/server/register.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionUI.registerTheme(Assets.getText("private/themes/navbar.css")); 3 | -------------------------------------------------------------------------------- /packages/reaction-ui-tagnav/README.md: -------------------------------------------------------------------------------- 1 | # reaction-ui-navbar 2 | Reaction Commerce UI Tag Nav 3 | 4 | ``` 5 | meteor add reactioncommerce:reaction-ui-tagnav 6 | ``` 7 | -------------------------------------------------------------------------------- /packages/reaction-ui-tagnav/client/components/components.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionUI = ReactionUI || {}; 3 | ReactionUI.TagNav = {}; 4 | ReactionUI.TagNav.Components = {}; 5 | -------------------------------------------------------------------------------- /packages/reaction-ui-tagnav/client/components/tagGroup/tagGroup.html: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /packages/reaction-ui-tagnav/client/helpers/helpers.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionUI = ReactionUI || {}; 3 | ReactionUI.TagNav.Helpers = {}; 4 | -------------------------------------------------------------------------------- /packages/reaction-ui/.gitignore: -------------------------------------------------------------------------------- 1 | .meteor/local 2 | .meteor/meteorite 3 | -------------------------------------------------------------------------------- /packages/reaction-ui/.npm/package/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /packages/reaction-ui/.npm/package/README: -------------------------------------------------------------------------------- 1 | This directory and the files immediately inside it are automatically generated 2 | when you change this package's NPM dependencies. Commit the files in this 3 | directory (npm-shrinkwrap.json, .gitignore, and this README) to source control 4 | so that others run the same versions of sub-dependencies. 5 | 6 | You should NOT check in the node_modules directory that Meteor automatically 7 | creates; if you are using git, the .gitignore file tells git to ignore it. 8 | -------------------------------------------------------------------------------- /packages/reaction-ui/README.md: -------------------------------------------------------------------------------- 1 | # reaction-ui 2 | UI Components for Reaction Commerce 3 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/button/button.less: -------------------------------------------------------------------------------- 1 | 2 | .rui.button > .contents { 3 | display: flex; 4 | flex: 1 1 auto; 5 | width: 100%; 6 | height: 100%; 7 | justify-content: center; 8 | align-items: center; 9 | } 10 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/cards/cardGroup.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/cards/cards.html: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/cards/cards.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-ui/client/components/cards/cards.js -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/components.jsx: -------------------------------------------------------------------------------- 1 | 2 | ReactionUI = ReactionUI || {}; 3 | ReactionUI.Components = {}; 4 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/gallery/gallery.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-ui/client/components/gallery/gallery.jsx -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/icon/icon.jsx: -------------------------------------------------------------------------------- 1 | const classnames = ReactionUI.Lib.classnames; 2 | 3 | const Icon = React.createClass({ 4 | propTypes: { 5 | icon: React.PropTypes.string.isRequired 6 | }, 7 | 8 | render() { 9 | let classes; 10 | 11 | if (this.props.icon) { 12 | if (this.props.icon.indexOf("icon-") === 0) { 13 | classes = this.props.icon; 14 | } else { 15 | classes = classnames({ 16 | fa: true, 17 | [`fa-${this.props.icon}`]: true 18 | }); 19 | } 20 | } 21 | 22 | return ( 23 | 24 | ); 25 | } 26 | }); 27 | 28 | ReactionUI.Components.Icon = Icon; 29 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/media/media.less: -------------------------------------------------------------------------------- 1 | 2 | .rui.media img { 3 | width: 100%; 4 | } 5 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/numericInput/numericInput.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/separator/separator.jsx: -------------------------------------------------------------------------------- 1 | const Items = ReactionUI.Components.Items; 2 | const classnames = ReactionUI.Lib.classnames; 3 | 4 | class Separator extends React.Component { 5 | 6 | render() { 7 | const classes = classnames({ 8 | rui: true, 9 | separator: true, 10 | labeled: this.props.label 11 | }); 12 | 13 | 14 | if (this.props.label) { 15 | return ( 16 |
    17 |
    18 | {this.props.label} 19 |
    20 |
    21 | ); 22 | } 23 | 24 | return ( 25 |
    26 | ); 27 | } 28 | } 29 | 30 | ReactionUI.Components.Separator = Separator; 31 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/separator/separator.less: -------------------------------------------------------------------------------- 1 | @import "{reactioncommerce:reaction-ui}/client/styles/variables.less"; 2 | 3 | .rui.separator.labeled { 4 | display: flex; 5 | align-items: center; 6 | } 7 | 8 | .rui.separator.labeled hr { 9 | flex: 1 1 auto; 10 | } 11 | 12 | .rui.separator.labeled .label { 13 | flex: 0 0 auto; 14 | color: @text-color; 15 | text-transform: uppercase; 16 | font-size: 1.2rem; 17 | } 18 | 19 | .rui.separator.padding.xs { 20 | padding-left: @padding-xs-horizontal; 21 | padding-right: @padding-xs-horizontal; 22 | } 23 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/socialShare/socialShare.jsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/packages/reaction-ui/client/components/socialShare/socialShare.jsx -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/tags/tagList.html: -------------------------------------------------------------------------------- 1 | 2 | 13 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/textfield/textfield.html: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/components/upload/upload.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/helpers/helpers.js: -------------------------------------------------------------------------------- 1 | const classnames = ReactionUI.Lib.classnames; 2 | 3 | ReactionUI = ReactionUI || {}; 4 | ReactionUI.Helpers = { 5 | templateClassName(templateInstance, defaults, key) { 6 | const classNameData = templateInstance.data.classNames || {}; 7 | const classNameOverrides = classNameData[key]; 8 | 9 | if (_.isString(classNameOverrides)) { 10 | return classnames(defaults, classNameOverrides); 11 | } 12 | 13 | return classnames({ 14 | ...defaults || {}, 15 | ...classNameOverrides 16 | }); 17 | } 18 | }; 19 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/styles/mixins.less: -------------------------------------------------------------------------------- 1 | // Default mixins 2 | @import "{reactioncommerce:core-theme}/lib/bootstrap/less/mixins.less"; 3 | @import "{reactioncommerce:core-theme}/default/mixins/flexbox.less"; 4 | @import "{reactioncommerce:core-theme}/default/mixins/rtl.less"; 5 | @import "{reactioncommerce:core-theme}/default/mixins/lesshat.less"; 6 | 7 | // If your forked this package you may import or add your mixins overrides here 8 | -------------------------------------------------------------------------------- /packages/reaction-ui/client/styles/variables.less: -------------------------------------------------------------------------------- 1 | // Default variables 2 | @import "{reactioncommerce:core-theme}/lib/bootstrap/less/variables.less"; 3 | @import "{reactioncommerce:core-theme}/default/variables.less"; 4 | 5 | // If your forked this package you may import or add your variables overrides here 6 | -------------------------------------------------------------------------------- /packages/reaction-ui/common/global.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionUI = ReactionUI || {}; 3 | -------------------------------------------------------------------------------- /packages/reaction-ui/lib/client.browserify.js: -------------------------------------------------------------------------------- 1 | 2 | ReactionUI = ReactionUI || {}; 3 | ReactionUI.Lib = {}; 4 | 5 | ReactionUI.Lib.classnames = require("classnames"); 6 | ReactionUI.Lib.Drop = require("tether-drop"); 7 | ReactionUI.Lib.ReactDOM = require("react-dom"); 8 | ReactionUI.Lib.Sortable = require("sortablejs"); 9 | ReactionUI.Lib.TextareaAutosize = require("react-textarea-autosize"); 10 | ReactionUI.Lib.Tooltip = require("tether-tooltip"); 11 | -------------------------------------------------------------------------------- /packages/reaction-ui/private/themes/button.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @theme base 3 | * @label Buttons 4 | * @component button 5 | * @name button 6 | * @author Reaction Commerce 7 | * @url https://reactioncommerce.com 8 | */ 9 | 10 | .rui.button { 11 | /** 12 | * @label Button 13 | */ 14 | background-color: --; 15 | color: --; 16 | } 17 | 18 | .rui.button:hover { 19 | /** 20 | * @label Button Hover (Mouse Over) 21 | */ 22 | background-color: --; 23 | color: --; 24 | } 25 | 26 | .rui.button:active { 27 | /** 28 | * @label Button Active (On Click) 29 | */ 30 | background-color: --; 31 | color: --; 32 | } 33 | -------------------------------------------------------------------------------- /packages/reaction-ui/private/themes/theme.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @summary Reaction Commerce Base Theme 3 | * @theme base 4 | * @author Reaction Commerce 5 | * @url https://reactioncommerce.com 6 | */ 7 | -------------------------------------------------------------------------------- /private/settings/.gitignore: -------------------------------------------------------------------------------- 1 | *.json 2 | -------------------------------------------------------------------------------- /public/assets/bootstrap/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/bootstrap/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /public/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/bootstrap/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/bootstrap/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /public/assets/images/Berechnungsbeispiel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/Berechnungsbeispiel.png -------------------------------------------------------------------------------- /public/assets/images/bekanntheit-kreide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/bekanntheit-kreide.png -------------------------------------------------------------------------------- /public/assets/images/bestellung-kreide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/bestellung-kreide.png -------------------------------------------------------------------------------- /public/assets/images/bezahlung-kreide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/bezahlung-kreide.png -------------------------------------------------------------------------------- /public/assets/images/food-kreide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/food-kreide.png -------------------------------------------------------------------------------- /public/assets/images/holz.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/holz.jpg -------------------------------------------------------------------------------- /public/assets/images/kochen-kreide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/kochen-kreide.png -------------------------------------------------------------------------------- /public/assets/images/profil-kreide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/profil-kreide.png -------------------------------------------------------------------------------- /public/assets/images/snaxter_hintergrund.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/snaxter_hintergrund.png -------------------------------------------------------------------------------- /public/assets/images/snaxter_icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/snaxter_icon.jpg -------------------------------------------------------------------------------- /public/assets/images/socialmedia.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/socialmedia.jpg -------------------------------------------------------------------------------- /public/assets/images/tom_josh.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/tom_josh.jpg -------------------------------------------------------------------------------- /public/assets/images/wandtafel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/wandtafel.jpg -------------------------------------------------------------------------------- /public/assets/images/zuckerrohr.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/images/zuckerrohr.png -------------------------------------------------------------------------------- /public/assets/socicon/fonts/socicon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/socicon/fonts/socicon.eot -------------------------------------------------------------------------------- /public/assets/socicon/fonts/socicon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/socicon/fonts/socicon.ttf -------------------------------------------------------------------------------- /public/assets/socicon/fonts/socicon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/assets/socicon/fonts/socicon.woff -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/favicon.ico -------------------------------------------------------------------------------- /public/hungrypeople.snaxter.ch.html: -------------------------------------------------------------------------------- 1 | L2RUTlBoZ1o5T2ZpQjBvM0xHZCtYd3lXdU1Uc2RweGNiR0JQblFVM2hlWT0 2 | -------------------------------------------------------------------------------- /public/loaderio-7a47b8ab93fa78cda1de3d2a17ce4019.txt: -------------------------------------------------------------------------------- 1 | loaderio-7a47b8ab93fa78cda1de3d2a17ce4019 -------------------------------------------------------------------------------- /public/resources/avatar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/resources/avatar.gif -------------------------------------------------------------------------------- /public/resources/placeholder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/public/resources/placeholder.gif -------------------------------------------------------------------------------- /server/fixtures.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Create a global reference to the app level "Assets" 3 | */ 4 | AppAssets = Assets; 5 | -------------------------------------------------------------------------------- /settings/.gitignore: -------------------------------------------------------------------------------- 1 | *.json 2 | !dev.settings.json 3 | -------------------------------------------------------------------------------- /settings/dev.settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "ROOT_URL": "", 3 | "MONGO_URL": "", 4 | "MAIL_URL": "", 5 | "reaction": { 6 | "REACTION_USER": "", 7 | "REACTION_AUTH": "", 8 | "REACTION_EMAIL": "" 9 | }, 10 | "isDebug": "info", 11 | "public": {} 12 | } 13 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ScyDev/reaction/9a63f15b4d090603110b8f1b1d6ccd761b312d73/tests/.gitignore -------------------------------------------------------------------------------- /tests/jasmine/client/integration/loginSpecs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * client integration tests for layouts 3 | * integration tests are those that check client 4 | * interactions with the server 5 | */ 6 | describe("User signup", function () { 7 | let user = { 8 | email: faker.internet.email(), 9 | password: faker.internet.password() 10 | }; 11 | 12 | it("should return a meteor userId users by one", function () { 13 | signUp(user); 14 | expect(Meteor.userId()).not.toBeNull; 15 | }); 16 | 17 | it("should automatically log-in new user", function () { 18 | expect(Meteor.userId()).not.toBeNull; 19 | }); 20 | }); 21 | -------------------------------------------------------------------------------- /tests/jasmine/client/integration/productGridSpecs.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Product grid integration specs 3 | * 4 | */ 5 | // describe("Product Grid", function () { 6 | // beforeAll(function (done) { 7 | // VelocityHelpers.exportGlobals(); 8 | // Meteor.subscribe("products", function () { 9 | // Products = ReactionCore.Collections.Products.find().fetch(); 10 | // done(); 11 | // }); 12 | // }); 13 | // 14 | // it("should have one product", function () { 15 | // expect(Products.length).toBeGreaterThan(0); 16 | // }); 17 | // }); 18 | --------------------------------------------------------------------------------