mvpkit 1.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -24
  3. data/README.md +43 -48
  4. data/VERSION +1 -1
  5. data/bin/mvp +2 -2
  6. data/config/routes.rb +0 -4
  7. data/mvpkit.gemspec +57 -129
  8. data/package.json +3 -22
  9. data/project/.babelrc +23 -1
  10. data/project/.gitignore +2 -0
  11. data/project/.postcssrc.yml +4 -0
  12. data/project/Gemfile +21 -13
  13. data/project/Gemfile.lock +181 -153
  14. data/project/Procfile +1 -1
  15. data/project/README.md +2 -116
  16. data/project/app/assets/javascripts/application.js +0 -8
  17. data/project/app/assets/stylesheets/application.scss +9 -3
  18. data/project/app/assets/stylesheets/elements/alerts.scss +10 -0
  19. data/project/app/assets/stylesheets/elements/badges.scss +16 -0
  20. data/project/app/assets/stylesheets/elements/buttons.scss +107 -0
  21. data/project/app/assets/stylesheets/elements/cards.scss +68 -0
  22. data/project/app/assets/stylesheets/elements/drawer.scss +66 -0
  23. data/project/app/assets/stylesheets/elements/forms.scss +64 -0
  24. data/project/app/assets/stylesheets/elements/interstitial.scss +24 -0
  25. data/project/app/assets/stylesheets/elements/navs.scss +15 -0
  26. data/project/app/assets/stylesheets/elements/sidebar.scss +30 -0
  27. data/project/app/assets/stylesheets/elements/tables.scss +61 -0
  28. data/project/app/assets/stylesheets/elements/timeline.scss +38 -0
  29. data/project/app/assets/stylesheets/elements/typography.scss +80 -0
  30. data/project/app/assets/stylesheets/init/bootstrap.scss +53 -0
  31. data/project/app/assets/stylesheets/init/reset.scss +20 -0
  32. data/project/app/assets/stylesheets/init/variables.scss +40 -0
  33. data/project/app/assets/stylesheets/treatments/backgrounds.scss +23 -0
  34. data/project/app/assets/stylesheets/treatments/borders.scss +7 -0
  35. data/project/app/{webpack/stylesheets/skin → assets/stylesheets/treatments}/spacing.scss +4 -10
  36. data/{app/controllers/mvp → project/app/controllers}/analytics_controller.rb +0 -0
  37. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/analytics_concern.rb +0 -0
  38. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/seo_concern.rb +0 -0
  39. data/{app/controllers/concerns/mvp → project/app/controllers/concerns}/session_concern.rb +0 -0
  40. data/project/app/controllers/conversions_controller.rb +1 -2
  41. data/{app/controllers/mvp → project/app/controllers}/seo_controller.rb +0 -0
  42. data/project/app/engines/admin/app/views/layouts/admin/_header.html.erb +18 -18
  43. data/project/app/helpers/application_helper.rb +0 -14
  44. data/{app/assets/stylesheets/mvp/application.scss → project/app/javascript/components/.gitkeep} +0 -0
  45. data/project/app/javascript/components/conversion.jsx +73 -0
  46. data/project/app/javascript/packs/application.js +28 -0
  47. data/project/app/javascript/packs/server_rendering.js +5 -0
  48. data/project/app/models/conversion.rb +1 -1
  49. data/project/app/views/conversions/show.json.jbuilder +1 -0
  50. data/project/app/views/home/index.html.erb +22 -22
  51. data/project/app/views/layouts/_header.html.erb +35 -34
  52. data/{app/views/layouts/mvp → project/app/views/layouts}/_instrumentation.html.erb +0 -0
  53. data/{app/views/layouts/mvp → project/app/views/layouts}/_meta.html.erb +0 -0
  54. data/project/app/views/layouts/application.html.erb +31 -21
  55. data/project/bin/setup +1 -1
  56. data/project/bin/webpack +28 -0
  57. data/project/bin/webpack-dev-server +43 -0
  58. data/project/config/initializers/assets.rb +2 -0
  59. data/{config → project/config}/initializers/canonical_host.rb +0 -0
  60. data/{config → project/config}/initializers/cloudinary.rb +0 -0
  61. data/{config → project/config}/initializers/rollbar.rb +0 -0
  62. data/{config → project/config}/initializers/routing.rb +0 -0
  63. data/{config → project/config}/initializers/spoof_ip.rb +0 -0
  64. data/{config → project/config}/initializers/ssl.rb +0 -0
  65. data/project/config/routes.rb +5 -7
  66. data/project/config/webpack/configuration.js +35 -0
  67. data/project/config/webpack/development.js +32 -0
  68. data/project/config/webpack/loaders/assets.js +12 -0
  69. data/project/config/webpack/loaders/babel.js +5 -0
  70. data/project/config/webpack/loaders/coffee.js +4 -0
  71. data/project/config/webpack/loaders/erb.js +9 -0
  72. data/project/config/webpack/loaders/react.js +5 -0
  73. data/project/config/webpack/loaders/sass.js +15 -0
  74. data/project/config/webpack/production.js +35 -0
  75. data/project/config/webpack/shared.js +58 -0
  76. data/project/config/webpack/test.js +6 -0
  77. data/project/config/webpacker.yml +38 -0
  78. data/project/package-lock.json +250 -0
  79. data/project/package.json +37 -17
  80. data/project/yarn.lock +4538 -0
  81. metadata +56 -326
  82. data/app/assets/javascripts/mvp/application.js +0 -1
  83. data/app/controllers/mvp/styleguide_controller.rb +0 -23
  84. data/app/helpers/minimum_viable_product/body_helper.rb +0 -14
  85. data/app/helpers/minimum_viable_product/bootstrap_helper.rb +0 -38
  86. data/app/helpers/minimum_viable_product/styleguide_helper.rb +0 -4
  87. data/app/models/concerns/mvp/slugification.rb +0 -24
  88. data/app/views/layouts/mvp/application.html.erb +0 -19
  89. data/app/views/mvp/styleguide/_example.html.erb +0 -6
  90. data/app/views/mvp/styleguide/bootstrap.html.erb +0 -43
  91. data/app/views/mvp/styleguide/bootstrap/_buttons.html.erb +0 -191
  92. data/app/views/mvp/styleguide/bootstrap/_forms.html.erb +0 -192
  93. data/app/views/mvp/styleguide/bootstrap/_header.html.erb +0 -48
  94. data/app/views/mvp/styleguide/bootstrap/_panels.html.erb +0 -16
  95. data/app/views/mvp/styleguide/bootstrap/_tables.html.erb +0 -34
  96. data/app/views/mvp/styleguide/bootstrap/_typography.html.erb +0 -51
  97. data/app/views/mvp/styleguide/elements/_grouping.html.erb +0 -1
  98. data/app/views/mvp/styleguide/elements/partials/_row_groups_of.html.erb +0 -7
  99. data/app/views/mvp/styleguide/index.html.erb +0 -17
  100. data/app/views/mvp/styleguide/layouts/basic.html.erb +0 -4
  101. data/app/views/mvp/styleguide/layouts/carousel.html.erb +0 -120
  102. data/app/views/mvp/styleguide/layouts/cover.html.erb +0 -34
  103. data/config/initializers/assets.rb +0 -2
  104. data/config/initializers/geocoder.rb +0 -9
  105. data/project/app/assets/javascripts/pack-compiled.js +0 -37394
  106. data/project/app/assets/javascripts/pack-compiled.js.map +0 -1
  107. data/project/app/assets/javascripts/templates.js.erb +0 -14
  108. data/project/app/assets/stylesheets/pack-compiled.css +0 -33946
  109. data/project/app/assets/stylesheets/pack-compiled.css.map +0 -1
  110. data/project/app/controllers/examples_controller.rb +0 -2
  111. data/project/app/views/examples/index.html.erb +0 -1
  112. data/project/app/views/examples/mustache.html.erb +0 -40
  113. data/project/app/views/examples/mustache/template.mustache +0 -1
  114. data/project/app/views/home/conversion.html.erb +0 -12
  115. data/project/app/webpack/javascripts/behaviors/example.js +0 -21
  116. data/project/app/webpack/javascripts/controllers/home.js +0 -15
  117. data/project/app/webpack/javascripts/lib/analytics.js +0 -22
  118. data/project/app/webpack/javascripts/lib/clientsidevalidations.js +0 -3
  119. data/project/app/webpack/javascripts/lib/controllers.js +0 -28
  120. data/project/app/webpack/javascripts/lib/forms.js +0 -28
  121. data/project/app/webpack/javascripts/lib/selectize.js +0 -1
  122. data/project/app/webpack/javascripts/pack.js +0 -50
  123. data/project/app/webpack/stylesheets/config/variables.scss +0 -41
  124. data/project/app/webpack/stylesheets/init/reset.scss +0 -48
  125. data/project/app/webpack/stylesheets/layout/main.scss +0 -7
  126. data/project/app/webpack/stylesheets/pack.scss +0 -20
  127. data/project/app/webpack/stylesheets/skin/alerts.scss +0 -3
  128. data/project/app/webpack/stylesheets/skin/buttons.scss +0 -38
  129. data/project/app/webpack/stylesheets/skin/hero.scss +0 -45
  130. data/project/app/webpack/stylesheets/skin/images.scss +0 -13
  131. data/project/app/webpack/stylesheets/skin/progress.scss +0 -3
  132. data/project/app/webpack/stylesheets/skin/selectize.scss +0 -30
  133. data/project/app/webpack/stylesheets/skin/tables.scss +0 -24
  134. data/project/app/webpack/stylesheets/skin/treatments.scss +0 -3
  135. data/project/app/webpack/stylesheets/skin/turbolinks.scss +0 -4
  136. data/project/app/webpack/stylesheets/skin/typography.scss +0 -116
  137. data/project/webpack.config.js +0 -76
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"stylesheets/pack-compiled.css","sourceRoot":""}
@@ -1,2 +0,0 @@
1
- class ExamplesController < ApplicationController
2
- end
@@ -1 +0,0 @@
1
- <%= link_to "Mustache Rendering", mustache_example_path %>
@@ -1,40 +0,0 @@
1
- <div class="row">
2
- <div class="col-md-9">
3
- <h1>Mustache Rendering</h1>
4
- <p>
5
- You can render mustache files by using <code>&lt;<%= "%= render_mustache 'examples/template', { some: 'value' } %" %>&gt;</code>.
6
- </p>
7
- <p>
8
- Place your files into <code>app/views</code> and reference it relatively. You don't need the <code>.mustache</code> file suffix.
9
- </p>
10
-
11
- <hr>
12
-
13
- <h2>Via Ruby</h2>
14
- <p>
15
- <code><%%= render_mustache 'examples/template', { some: 'value' } %></code>
16
- <br>
17
- will render:
18
- </p>
19
-
20
- <div class="well">
21
- <%= render_mustache 'examples/template', { some: 'value' } %>
22
- </div>
23
-
24
- <hr>
25
-
26
- <h2>Via JavaScript</h2>
27
- <p>
28
- <pre>
29
- <code>&lt;script type="text/javascript">
30
- document.write(Templates['examples/template']())
31
- &lt;/script></code>
32
- </pre>
33
- <br>
34
- will render:
35
- <script type="text/javascript">
36
- document.write(Templates['examples/template']())
37
- </script>
38
- </p>
39
- </div>
40
- </div>
@@ -1 +0,0 @@
1
- This is <code>template.mustache</code>
@@ -1,12 +0,0 @@
1
- <div class="row mt100">
2
- <div class="col-sm-6 col-sm-push-3">
3
- <div class="panel">
4
- <div class="panel-heading">
5
- <h4 class="panel-title">Conversion</h4>
6
- </div>
7
- <div class="panel-body">
8
- Success Page
9
- </div>
10
- </div>
11
- </div>
12
- </div>
@@ -1,21 +0,0 @@
1
- // Behaviors are a way of specifying a behavior attribute on an HTML tag and having it always *work*
2
- //
3
- // For example, we'd specify:
4
- //
5
- // <div behavior="example">
6
- // ...
7
- // </div>
8
- //
9
- // And we would automatically have the behavior setup ...
10
-
11
- document.addEventListener("turbolinks:load", function(){
12
- _.each( $('*[behavior=example]'), function(obj){
13
- obj.controller = new Example(obj)
14
- })
15
- })
16
-
17
- class Example {
18
- constructor(obj, opts={}){
19
- // do something
20
- }
21
- }
@@ -1,15 +0,0 @@
1
- class Controller {
2
- init() {
3
- const self = this
4
-
5
- $('#new_conversion').on('submit', function(e){
6
- window.track("Conversion Submit", { source: "Registration Form" })
7
- })
8
-
9
- $('#new_conversion').on('ajax:success', function(){
10
- top.location = "/conversion"
11
- })
12
- }
13
- }
14
-
15
- window.controllers['home'] = new Controller()
@@ -1,22 +0,0 @@
1
- window.track = function(event, attributes, fn){
2
- console.log("Track: " + event + " " + JSON.stringify(attributes))
3
-
4
- if (is.fn(attributes)) fn = attributes, attributes = null;
5
- if (is.undefined(attributes)) { attributes = {} }
6
- if ($.cookie('invisible') == "true") {
7
- if (!is.undefined(fn)) { fn() }
8
- return
9
- }
10
-
11
- var attrs = _.extend({
12
- iteration: $('body').data('iteration')
13
- }, attributes)
14
-
15
- if (typeof(analytics) != 'undefined') {
16
- analytics.track(event, attrs, fn);
17
- }
18
-
19
- if (typeof(amplitude) != 'undefined') {
20
- amplitude.getInstance().logEvent(event, attrs, fn);
21
- }
22
- }
@@ -1,3 +0,0 @@
1
- $(document).on('shown.bs.modal', function () {
2
- $(ClientSideValidations.selectors.forms).validate();
3
- });
@@ -1,28 +0,0 @@
1
- window.controllers = {}
2
-
3
- let handler = function(){
4
- var $body = $("body");
5
- var controller = $body.data("controller").replace(/\//g, "_");
6
- var action = $body.data("action");
7
-
8
- var activeController = window.controllers[controller];
9
-
10
- if (activeController !== undefined) {
11
- if (window.env == "development") {
12
- console.log("[Controllers] " + controller + "." + action + "()");
13
- }
14
-
15
- if ($.isFunction(activeController.init)) {
16
- activeController.init();
17
- }
18
-
19
- if ($.isFunction(activeController[action])) {
20
- activeController[action]();
21
- }
22
- }
23
- }
24
-
25
- $(function(){
26
- document.addEventListener("turbolinks:load", handler)
27
- handler()
28
- })
@@ -1,28 +0,0 @@
1
- const _ = require('lodash')
2
- const is = require('is')
3
-
4
- $(function(){
5
- $('form.no-enter-submit').bind("keypress", function(e) {
6
- if (e.keyCode == 13) {
7
- e.preventDefault();
8
- return false;
9
- }
10
- });
11
-
12
- $('form.disable-on-submit').on('submit', function(e){
13
- $(this).find(".btn").addClass('disabled')
14
- })
15
- })
16
-
17
- // Submit forms when you command + enter on a textarea
18
- // $(function(){
19
- // // submit form on command + enter if in a textarea
20
- // $(document).on('keydown', 'body', function(e) {
21
- // if (!(e.keyCode == 13 && e.metaKey)) return;
22
- //
23
- // var $target = $(e.target);
24
- // if ($target.is('textarea')) {
25
- // $target.closest('form').submit();
26
- // }
27
- // });
28
- // });
@@ -1 +0,0 @@
1
- const Selectize = require('selectize')
@@ -1,50 +0,0 @@
1
- // https://webpack.github.io/docs/context.html#require-context
2
- function requireAll(requireContext) {
3
- return requireContext.keys().map(requireContext);
4
- }
5
-
6
- window.$ = window.jQuery = require('jquery')
7
- window._ = require('lodash')
8
- window.is = require('is')
9
- window.Mustache = require('mustache/mustache')
10
-
11
- require('jquery')
12
- require('jquery-ujs')
13
- require('js-cookie')
14
- require('bootstrap/dist/js/bootstrap')
15
- require('selectize/dist/js/selectize')
16
- require('mustache')
17
-
18
- requireAll(require.context("./lib", true, /\.js$/));
19
- requireAll(require.context("./behaviors", true, /\.js$/));
20
- requireAll(require.context("./controllers", true, /\.js$/));
21
-
22
- $(function(){
23
- // $('*[data-toggle="popover"]').popover()
24
- // $('select').selectize()
25
- $('[data-toggle="tooltip"]').tooltip()
26
- $('[data-toggle="popover"]').popover()
27
-
28
- // Redirect to hash after page is loaded since the conversation is injected
29
- if (!is.empty(window.location.hash.substring(1)) ) {
30
- location.href = "#" + window.location.hash.substring(1);
31
- }
32
-
33
- setTimeout(function(){
34
- $('.fadeout.alert').fadeOut('slow')
35
- }, 2000);
36
-
37
- $(document).on('turbolinks:click', function (event) {
38
- if (event.target.getAttribute('href').charAt(0) === '#') {
39
- return event.preventDefault()
40
- }
41
- })
42
- })
43
-
44
- jQuery.fn.extend({
45
- disable: function(state) {
46
- return this.each(function() {
47
- this.disabled = state;
48
- });
49
- }
50
- })
@@ -1,41 +0,0 @@
1
- $color-orange: #F65314 !default;
2
- $color-yellow: #FFBB00 !default;
3
- $color-green: #7CBB00 !default;
4
- // $color-blue: #00A1F1 !default;
5
- $color-blue: #30B4FF !default;
6
- $color-light-blue: #63A6FF !default;
7
-
8
- $color-grey: #333 !default;
9
- $color-grey2: #4B5C72 !default;
10
- $color-grey3: #98A8BB !default;
11
- $color-grey4: #D6D6D6 !default;
12
- $color-grey5: #ECECEC !default;
13
- $color-grey6: #F6F6F6 !default;
14
-
15
- $brand-primary: $color-blue;
16
- $brand-success: $color-green;
17
- $brand-info: #fff !default;
18
- $brand-warning: $color-yellow;
19
- $brand-danger: $color-orange;
20
-
21
- // $gray-dark: #001837 !default;
22
- $gray: #55595c !default;
23
- $gray-light: #818a91 !default;
24
- $gray-lighter: #eceeef !default;
25
- $gray-lightest: #f7f7f9 !default;
26
-
27
- $state-success-text: darken($brand-success, 10%) !default;
28
- $state-success-bg: lighten($brand-success, 50%) !default;
29
- $state-success-border: lighten($state-success-text, 20%) !default;
30
-
31
- $state-info-text: darken($brand-primary, 10%) !default;
32
- $state-info-bg: lighten($brand-primary, 40%) !default;
33
- $state-info-border: lighten($state-info-text, 20%) !default;
34
-
35
- $state-warning-text: darken($brand-warning, 10%) !default;
36
- $state-warning-bg: lighten($brand-warning, 40%) !default;
37
- $state-warning-border: lighten($state-warning-text, 20%) !default;
38
-
39
- $state-danger-text: darken($brand-danger, 10%) !default;
40
- $state-danger-bg: lighten($brand-danger, 40%) !default;
41
- $state-danger-border: lighten($state-danger-text, 20%) !default;
@@ -1,48 +0,0 @@
1
- // Fuck you outlines
2
- * {
3
- outline: none !important;
4
- }
5
-
6
- html, body, div, span, applet, object, iframe,
7
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
8
- a, abbr, acronym, address, big, cite, code,
9
- del, dfn, em, img, ins, kbd, q, s, samp,
10
- small, strike, strong, sub, sup, tt, var,
11
- b, u, i, center,
12
- dl, dt, dd, ol, ul, li,
13
- fieldset, form, label, legend,
14
- table, caption, tbody, tfoot, thead, tr, th, td,
15
- article, aside, canvas, details, embed,
16
- figure, figcaption, footer, header, hgroup,
17
- menu, nav, output, ruby, section, summary,
18
- time, mark, audio, video {
19
- margin: 0;
20
- padding: 0;
21
- border: 0;
22
- // font-size: 100%;
23
- // font: inherit;
24
- // vertical-align: baseline;
25
- }
26
- // /* HTML5 display-role reset for older browsers */
27
- // article, aside, details, figcaption, figure,
28
- // footer, header, hgroup, menu, nav, section {
29
- // display: block;
30
- // }
31
- // body {
32
- // line-height: 1;
33
- // }
34
- ol, ul {
35
- list-style: none;
36
- }
37
- // blockquote, q {
38
- // quotes: none;
39
- // }
40
- // blockquote:before, blockquote:after,
41
- // q:before, q:after {
42
- // content: '';
43
- // content: none;
44
- // }
45
- // table {
46
- // border-collapse: collapse;
47
- // border-spacing: 0;
48
- // }
@@ -1,7 +0,0 @@
1
- html {
2
- height: 100%;
3
- }
4
-
5
- body {
6
- background-color: #FFF;
7
- }
@@ -1,20 +0,0 @@
1
- @import 'config/variables';
2
- @import '~bootstrap/scss/bootstrap';
3
- @import '~selectize/dist/css/selectize';
4
- @import '~selectize/dist/css/selectize.bootstrap3';
5
-
6
- @import 'init/reset';
7
-
8
- @import 'skin/alerts';
9
- @import 'skin/buttons';
10
- @import 'skin/hero';
11
- @import 'skin/images';
12
- @import 'skin/progress';
13
- @import 'skin/selectize';
14
- @import 'skin/spacing';
15
- @import 'skin/tables';
16
- @import 'skin/treatments';
17
- @import 'skin/turbolinks';
18
- @import 'skin/typography';
19
-
20
- @import 'layout/main';
@@ -1,3 +0,0 @@
1
- .alert-default {
2
- @include alert-variant(#FFF, $color-grey4, $color-grey);
3
- }
@@ -1,38 +0,0 @@
1
- .btn {
2
- font-family: 'Lato', sans-serif;
3
- font-weight: 700;
4
- white-space: normal;
5
-
6
- .cell {
7
- float: left;
8
- padding: 0.25rem 0.5rem;
9
- border-right: 1px solid $color-grey4;
10
-
11
- &:last-child {
12
- border-right: 0;
13
- }
14
- }
15
- }
16
-
17
- .btn-secondary {
18
- color: $color-grey2;
19
- }
20
-
21
- .btn-faded {
22
- opacity: 0.3;
23
- }
24
-
25
- .btn-wide {
26
- @extend .pl-2;
27
- @extend .pr-2;
28
- }
29
-
30
- @each $breakpoint in map-keys($grid-breakpoints) {
31
- @include media-breakpoint-up($breakpoint) {
32
- .btn-block-#{$breakpoint}-up { width: 100%; display: block }
33
- }
34
-
35
- @include media-breakpoint-down($breakpoint) {
36
- .btn-block-#{$breakpoint}-down { width: 100%; display: block }
37
- }
38
- }
@@ -1,45 +0,0 @@
1
- .hero {
2
- // background-color: #F8FAFD;
3
- background-color: #E7EEFE;
4
-
5
- @include media-breakpoint-up(sm) {
6
- height: 360px;
7
- }
8
-
9
- // @include media-breakpoint-up(sm) {
10
- // height: 380px;
11
- // }
12
-
13
- .intro {
14
- .lead {
15
- color: #4B5C72;
16
- }
17
- }
18
- }
19
-
20
- .hero-blue {
21
- background-color: #30B4FF;
22
- }
23
-
24
- .hero-green {
25
- background-color: #00b936;
26
- }
27
-
28
- .hero-small {
29
- background-color: #E7EEFE;
30
- border-bottom: 1px solid $color-grey4;
31
-
32
- // @include media-breakpoint-up(xs) {
33
- // height: 320px;
34
- // }
35
- //
36
- // @include media-breakpoint-up(lg) {
37
- // height: 300px;
38
- // }
39
-
40
- .intro {
41
- .lead {
42
- color: #4B5C72;
43
- }
44
- }
45
- }