mvpkit 0.8.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/bin/mvp +0 -1
  4. data/mvpkit.gemspec +71 -50
  5. data/package.json +1 -0
  6. data/project/.babelrc +3 -0
  7. data/project/.env +15 -0
  8. data/project/.gitignore +15 -40
  9. data/project/.iteration +3 -0
  10. data/project/Gemfile +43 -19
  11. data/project/Gemfile.lock +237 -165
  12. data/project/Procfile +2 -1
  13. data/project/README.md +0 -1
  14. data/project/app/assets/config/manifest.js +2 -0
  15. data/project/app/assets/javascripts/application.js +5 -0
  16. data/project/app/assets/javascripts/templates.js.erb +14 -0
  17. data/project/app/assets/stylesheets/application.scss +2 -0
  18. data/project/app/controllers/application_controller.rb +25 -5
  19. data/project/app/helpers/application_helper.rb +17 -4
  20. data/project/app/mailers/application_mailer.rb +5 -0
  21. data/project/app/templates/README.txt +1 -0
  22. data/project/app/templates/examples/template.mustache +1 -0
  23. data/project/app/views/examples/mustache.html.erb +25 -3
  24. data/project/app/views/layouts/_header.html.erb +22 -14
  25. data/project/app/views/layouts/_notifications.html.erb +10 -0
  26. data/project/app/views/layouts/application.html.erb +22 -11
  27. data/project/app/views/layouts/mailer.html.erb +5 -0
  28. data/project/app/views/layouts/mailer.text.erb +1 -0
  29. data/project/app/webpack/javascripts/behaviors/example.js +21 -0
  30. data/project/app/webpack/javascripts/controllers/home.js +15 -0
  31. data/project/app/webpack/javascripts/lib/clientsidevalidations.js +3 -0
  32. data/project/app/webpack/javascripts/lib/selectize.js +1 -0
  33. data/project/app/webpack/javascripts/pack.js +47 -0
  34. data/project/app/webpack/stylesheets/config/variables.scss +41 -0
  35. data/project/app/webpack/stylesheets/init/reset.scss +48 -0
  36. data/project/app/webpack/stylesheets/layout/main.scss +7 -0
  37. data/project/app/webpack/stylesheets/pack.scss +20 -0
  38. data/project/app/webpack/stylesheets/skin/alerts.scss +3 -0
  39. data/project/app/webpack/stylesheets/skin/buttons.scss +38 -0
  40. data/project/app/webpack/stylesheets/skin/hero.scss +45 -0
  41. data/project/app/webpack/stylesheets/skin/images.scss +13 -0
  42. data/project/app/webpack/stylesheets/skin/progress.scss +3 -0
  43. data/project/app/webpack/stylesheets/skin/selectize.scss +30 -0
  44. data/project/{assets/stylesheets/lib → app/webpack/stylesheets/skin}/spacing.scss +0 -2
  45. data/project/app/webpack/stylesheets/skin/tables.scss +10 -0
  46. data/project/app/webpack/stylesheets/skin/treatments.scss +3 -0
  47. data/project/app/webpack/stylesheets/skin/turbolinks.scss +4 -0
  48. data/project/app/webpack/stylesheets/skin/typography.scss +116 -0
  49. data/project/bin/rails +1 -6
  50. data/project/bin/rake +0 -5
  51. data/project/bin/setup +17 -17
  52. data/project/bin/update +29 -0
  53. data/project/config/application.rb +5 -4
  54. data/project/config/boot.rb +1 -1
  55. data/project/config/cable.yml +9 -0
  56. data/project/config/environment.rb +1 -1
  57. data/project/config/environments/development.rb +29 -26
  58. data/project/config/environments/production.rb +32 -19
  59. data/project/config/environments/test.rb +6 -6
  60. data/project/config/initializers/algolia.rb +7 -0
  61. data/project/config/initializers/application_controller_renderer.rb +6 -0
  62. data/project/config/initializers/assets.rb +23 -2
  63. data/project/config/initializers/client_side_validations.rb +20 -0
  64. data/project/config/initializers/cookies_serializer.rb +2 -0
  65. data/project/config/initializers/date_formats.rb +6 -0
  66. data/project/config/initializers/fingerprint.rb +1 -0
  67. data/project/config/initializers/geocoder.rb +9 -0
  68. data/project/config/initializers/new_framework_defaults.rb +23 -0
  69. data/project/config/initializers/rails_admin.rb +13 -7
  70. data/project/config/initializers/sidekiq.rb +19 -0
  71. data/project/config/initializers/simple_form.rb +2 -0
  72. data/project/config/initializers/stripe.rb +8 -0
  73. data/project/config/initializers/wrap_parameters.rb +2 -2
  74. data/project/config/puma.rb +47 -0
  75. data/project/config/routes.rb +4 -2
  76. data/project/config/secrets.yml +17 -3
  77. data/project/config/sidekiq.yml +6 -0
  78. data/project/config/spring.rb +6 -0
  79. data/project/config/stripe/coupons.rb +39 -0
  80. data/project/config/stripe/plans.rb +32 -0
  81. data/project/lib/tasks/heroku.rake +10 -2
  82. data/project/lib/tasks/migrations.rake +3 -0
  83. data/project/package.json +19 -28
  84. data/project/public/favicon.ico +0 -0
  85. data/project/webpack.config.js +62 -53
  86. metadata +70 -49
  87. data/project/app/decorators/.keep +0 -0
  88. data/project/app/mailers/.keep +0 -0
  89. data/project/app/views/layouts/_includes.html.erb +0 -7
  90. data/project/app/views/layouts/modal.html.erb +0 -14
  91. data/project/assets/images/.keep +0 -0
  92. data/project/assets/images/favicon.ico +0 -0
  93. data/project/assets/javascripts/controllers/home.coffee +0 -15
  94. data/project/assets/javascripts/pack.js +0 -9
  95. data/project/assets/stylesheets/config/variables.scss +0 -876
  96. data/project/assets/stylesheets/layout/basic.scss +0 -6
  97. data/project/assets/stylesheets/layout/carousel.scss +0 -127
  98. data/project/assets/stylesheets/layout/cover.scss +0 -129
  99. data/project/assets/stylesheets/skin/style.scss +0 -16
  100. data/project/assets/stylesheets/style.scss +0 -8
  101. data/project/config/initializers/mustache.rb +0 -7
  102. data/project/log/development.log +0 -48216
  103. data/project/log/production.log +0 -0
  104. data/project/public/404.html +0 -67
  105. data/project/public/422.html +0 -67
  106. data/project/public/500.html +0 -66
  107. data/project/public/assets/javascripts/448c34a56d699c29117adc64c43affeb.woff2 +0 -0
  108. data/project/public/assets/javascripts/89889688147bd7575d6327160d64e760.svg +0 -288
  109. data/project/public/assets/javascripts/e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
  110. data/project/public/assets/javascripts/f4769f9bdb7466be65088239c12046d1.eot +0 -0
  111. data/project/public/assets/javascripts/fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
  112. data/project/public/assets/javascripts/pack.js +0 -31367
  113. data/project/public/assets/javascripts/pack.js.map +0 -1
  114. data/project/public/assets/pack.js +0 -17220
  115. data/project/public/assets/style.css +0 -7477
  116. /data/app/views/layouts/{minimum_viable_product → mvp}/_instrumentation.html.erb +0 -0
  117. /data/app/views/layouts/{minimum_viable_product → mvp}/_meta.html.erb +0 -0
  118. /data/app/views/layouts/{minimum_viable_product → mvp}/application.html.erb +0 -0
  119. /data/app/views/{minimum_viable_product → mvp}/styleguide/_example.html.erb +0 -0
  120. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_buttons.html.erb +0 -0
  121. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_forms.html.erb +0 -0
  122. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_header.html.erb +0 -0
  123. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_panels.html.erb +0 -0
  124. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_tables.html.erb +0 -0
  125. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_typography.html.erb +0 -0
  126. /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap.html.erb +0 -0
  127. /data/app/views/{minimum_viable_product → mvp}/styleguide/elements/_grouping.html.erb +0 -0
  128. /data/app/views/{minimum_viable_product → mvp}/styleguide/elements/partials/_row_groups_of.html.erb +0 -0
  129. /data/app/views/{minimum_viable_product → mvp}/styleguide/index.html.erb +0 -0
  130. /data/app/views/{minimum_viable_product → mvp}/styleguide/layouts/basic.html.erb +0 -0
  131. /data/app/views/{minimum_viable_product → mvp}/styleguide/layouts/carousel.html.erb +0 -0
  132. /data/app/views/{minimum_viable_product → mvp}/styleguide/layouts/cover.html.erb +0 -0
@@ -1,4 +1,15 @@
1
1
  module ApplicationHelper
2
+ def body_id
3
+ "#{controller_name}-#{action_name}-page"
4
+ end
5
+
6
+ def body_classes
7
+ klass = []
8
+ klass << "#{controller_name}-pages"
9
+ klass << page.classes if page.classes.present?
10
+ klass.join(' ')
11
+ end
12
+
2
13
  def render_partial(partial, locals={}, &block)
3
14
  render(
4
15
  partial: partial,
@@ -9,10 +20,8 @@ module ApplicationHelper
9
20
  def render_mustache(template, object)
10
21
  mustache = Mustache.new
11
22
  mustache.template_extension = 'mustache'
12
- # mustache.template_path = Rails.root.join("assets/templates")
13
- # mustache.template_file = Rails.root.join("assets/templates/#{template}.mustache")
14
- mustache.template_path = Rails.root.join("app/views")
15
- mustache.template_file = Rails.root.join("app/views/#{template}.mustache")
23
+ mustache.template_path = Rails.root.join("app/templates")
24
+ mustache.template_file = Rails.root.join("app/templates/#{template}.mustache")
16
25
  mustache.instance_eval %%
17
26
  def logged_in
18
27
  #{!!current_user}
@@ -21,4 +30,8 @@ module ApplicationHelper
21
30
  # mustache.template_extension = 'mustache'
22
31
  mustache.render(object).html_safe
23
32
  end
33
+
34
+ def store_and_redirect_path(path)
35
+ url_for(:only_path => false, :trailing_slash => true) + "r/" + path
36
+ end
24
37
  end
@@ -0,0 +1,5 @@
1
+ class ApplicationMailer < ActionMailer::Base
2
+ default from: "admin@example.com"
3
+
4
+ layout 'mailer'
5
+ end
@@ -0,0 +1 @@
1
+ Put mustache templates in here, and they'll be shared across Rails and JavaScript
@@ -0,0 +1 @@
1
+ This is <code>template.mustache</code>
@@ -2,17 +2,39 @@
2
2
  <div class="col-md-9">
3
3
  <h1>Mustache Rendering</h1>
4
4
  <p>
5
- You can render mustache files by using <code>&lt;<%= "%= render_mustache 'examples/mustache/template', { some: 'value' } %" %>&gt;</code>.
5
+ You can render mustache files by using <code>&lt;<%= "%= render_mustache 'examples/template', { some: 'value' } %" %>&gt;</code>.
6
6
  </p>
7
7
  <p>
8
8
  Place your files into <code>app/views</code> and reference it relatively. You don't need the <code>.mustache</code> file suffix.
9
9
  </p>
10
+
11
+ <hr>
12
+
13
+ <h2>Via Ruby</h2>
10
14
  <p>
11
- Here we render <code>examples/mustache/template</code>:
15
+ <code><%%= render_mustache 'examples/template', { some: 'value' } %></code>
16
+ <br>
17
+ will render:
12
18
  </p>
13
19
 
14
20
  <div class="well">
15
- <%= render_mustache 'examples/mustache/template', { some: 'value' } %>
21
+ <%= render_mustache 'examples/template', { some: 'value' } %>
16
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>
17
39
  </div>
18
40
  </div>
@@ -1,16 +1,24 @@
1
- <nav class="navbar navbar-light bg-faded mt50">
1
+ <nav class="navbar navbar-toggleable-md navbar-light bg-faded">
2
+ <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
3
+ <span class="navbar-toggler-icon"></span>
4
+ </button>
2
5
  <a class="navbar-brand" href="/">__PROJECT_NAME__</a>
3
- <ul class="nav navbar-nav float-lg-right">
4
- <li class="nav-item active">
5
- <%= link_to 'Examples', examples_path, class: 'nav-link' %>
6
- </li>
7
- <li class="nav-item dropdown">
8
- <a class="nav-link dropdown-toggle" href="http://example.com" id="supportedContentDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
9
- <div class="dropdown-menu" aria-labelledby="supportedContentDropdown">
10
- <a class="dropdown-item" href="#">Action</a>
11
- <a class="dropdown-item" href="#">Another action</a>
12
- <a class="dropdown-item" href="#">Something else here</a>
13
- </div>
14
- </li>
15
- </ul>
6
+
7
+ <div class="collapse navbar-collapse" id="navbarSupportedContent">
8
+ <ul class="navbar-nav mr-auto">
9
+ <li class="nav-item active">
10
+ <%= link_to 'Examples', examples_path, class: 'nav-link' %>
11
+ </li>
12
+ <li class="nav-item">
13
+ <a class="nav-link" href="#">Link</a>
14
+ </li>
15
+ <li class="nav-item">
16
+ <a class="nav-link disabled" href="#">Disabled</a>
17
+ </li>
18
+ </ul>
19
+ <form class="form-inline my-2 my-lg-0">
20
+ <input class="form-control mr-sm-2" type="text" placeholder="Search">
21
+ <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
22
+ </form>
23
+ </div>
16
24
  </nav>
@@ -0,0 +1,10 @@
1
+ <% flash.each do |key, value| %>
2
+ <% next if ['__analytics_identify_events','__analytics_track_events'].include?(key) %>
3
+ <% klass = ['success','warning','danger','info'].include?(key) ? key : 'info' %>
4
+ <div class="fadeout alert alert-<%= klass %>">
5
+ <button type="button" class="close" data-dismiss="alert" aria-label="Close">
6
+ <span aria-hidden="true">&times;</span>
7
+ </button>
8
+ <%= value %>
9
+ </div>
10
+ <% end %>
@@ -1,17 +1,28 @@
1
- <% page.classes = "body-basic" %>
2
- <%= render 'layouts/includes' %>
1
+ <%- content_for :javascripts do %>
2
+ <%= javascript_include_tag 'https://npmcdn.com/tether@1.2.4/dist/js/tether.min.js' %>
3
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
4
+ <%= javascript_include_tag 'https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.4/js/standalone/selectize.js' %>
5
+ <% end %>
6
+
7
+ <%- content_for :stylesheets do %>
8
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
9
+ <% end %>
3
10
 
4
11
  <%- content_for :body do %>
5
- <% if content_for :header %>
6
- <%= yield :header %>
7
- <% else %>
8
- <div class="container">
9
- <%= render 'layouts/header' %>
12
+ <% unless page.hide_header == true %>
13
+ <% if content_for :header %>
14
+ <%= yield :header %>
15
+ <% else %>
16
+ <%= render 'layouts/header' %>
17
+ <% end %>
18
+ <% end %>
19
+
20
+ <%= yield :pre %>
21
+
22
+ <div class="container <%= page.container_class %>">
23
+ <%= render 'layouts/notifications' %>
24
+ <%= yield %>
10
25
  </div>
11
26
  <% end %>
12
- <div class="container">
13
- <%= yield %>
14
- </div>
15
- <% end %>
16
27
 
17
28
  <%= render template: "layouts/minimum_viable_product/application" %>
@@ -0,0 +1,5 @@
1
+ <html>
2
+ <body>
3
+ <%= yield %>
4
+ </body>
5
+ </html>
@@ -0,0 +1 @@
1
+ <%= yield %>
@@ -0,0 +1,21 @@
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
+ }
@@ -0,0 +1,15 @@
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()
@@ -0,0 +1,3 @@
1
+ $(document).on('shown.bs.modal', function () {
2
+ $(ClientSideValidations.selectors.forms).validate();
3
+ });
@@ -0,0 +1 @@
1
+ const Selectize = require('selectize')
@@ -0,0 +1,47 @@
1
+ // Courtesy of https://medium.com/@chrismnicola/leaving-sprockets-for-webpack-ccf7c6993ffa
2
+ function requireAll(r) { r.keys().forEach(r); }
3
+ function requireTree(path) { requireAll(require.context('./', true, /\.(js|coffee)$/)) }
4
+
5
+ window.$ = window.jQuery = require('jquery')
6
+ window._ = require('lodash')
7
+ window.is = require('is')
8
+ window.Mustache = require('mustache/mustache')
9
+
10
+ require('mvpkit/assets/js/application')
11
+ require('bootstrap/dist/js/bootstrap')
12
+ require('selectize/dist/js/selectize')
13
+ require('mustache')
14
+
15
+ requireTree('lib')
16
+ requireTree('behaviors')
17
+ requireTree('controllers')
18
+
19
+ document.addEventListener("turbolinks:load", function(){
20
+ // $('*[data-toggle="popover"]').popover()
21
+ // $('select').selectize()
22
+ $('[data-toggle="tooltip"]').tooltip()
23
+ $('[data-toggle="popover"]').popover()
24
+
25
+ // Redirect to hash after page is loaded since the conversation is injected
26
+ if (!is.empty(window.location.hash.substring(1)) ) {
27
+ location.href = "#" + window.location.hash.substring(1);
28
+ }
29
+
30
+ setTimeout(function(){
31
+ $('.fadeout.alert').fadeOut('slow')
32
+ }, 2000);
33
+
34
+ $(document).on('turbolinks:click', function (event) {
35
+ if (event.target.getAttribute('href').charAt(0) === '#') {
36
+ return event.preventDefault()
37
+ }
38
+ })
39
+ })
40
+
41
+ jQuery.fn.extend({
42
+ disable: function(state) {
43
+ return this.each(function() {
44
+ this.disabled = state;
45
+ });
46
+ }
47
+ })
@@ -0,0 +1,41 @@
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;
@@ -0,0 +1,48 @@
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
+ // }
@@ -0,0 +1,7 @@
1
+ html {
2
+ height: 100%;
3
+ }
4
+
5
+ body {
6
+ background-color: #FFF;
7
+ }
@@ -0,0 +1,20 @@
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';
@@ -0,0 +1,3 @@
1
+ .alert-default {
2
+ @include alert-variant(#FFF, $color-grey4, $color-grey);
3
+ }
@@ -0,0 +1,38 @@
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
+ }
@@ -0,0 +1,45 @@
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
+ }
@@ -0,0 +1,13 @@
1
+ .img-block {
2
+ width: 100%;
3
+ }
4
+
5
+ @each $breakpoint in map-keys($grid-breakpoints) {
6
+ @include media-breakpoint-up($breakpoint) {
7
+ .img-block-#{$breakpoint}-up { width: 100%; display: block }
8
+ }
9
+
10
+ @include media-breakpoint-down($breakpoint) {
11
+ .img-block-#{$breakpoint}-down { width: 100%; display: block }
12
+ }
13
+ }
@@ -0,0 +1,3 @@
1
+ .progress.small {
2
+ height: 0.4rem;
3
+ }
@@ -0,0 +1,30 @@
1
+ .selectize-input, .selectize-input.has-items {
2
+ padding: 0.5rem 0.75rem;
3
+ }
4
+
5
+ .selectize-control.multi .selectize-input > div {
6
+ background: #98A8BB;
7
+ color: #FFF;
8
+ font-size: 0.9em;
9
+ }
10
+
11
+ .selectize-control::before {
12
+ -moz-transition: opacity 0.2s;
13
+ -webkit-transition: opacity 0.2s;
14
+ transition: opacity 0.2s;
15
+ content: ' ';
16
+ z-index: 2;
17
+ position: absolute;
18
+ display: block;
19
+ top: 12px;
20
+ right: 34px;
21
+ width: 16px;
22
+ height: 16px;
23
+ background: url(/images/spinner.gif);
24
+ background-size: 16px 16px;
25
+ opacity: 0;
26
+ }
27
+
28
+ .selectize-control.loading::before {
29
+ opacity: 1.0;
30
+ }
@@ -1,5 +1,3 @@
1
- @import 'bootstrap/scss/bootstrap';
2
-
3
1
  @each $breakpoint in map-keys($grid-breakpoints) {
4
2
  @include media-breakpoint-up($breakpoint) {
5
3
  .block-#{$breakpoint}-up { display: block; width: 100% }
@@ -0,0 +1,10 @@
1
+ .table th {
2
+ border-top: 0;
3
+ margin-bottom: 0;
4
+ }
5
+
6
+ .table.no-top-border {
7
+ tr:first-child td {
8
+ border-top: 0;
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ .shadowed {
2
+ box-shadow: 0 0 3px lighten($color-grey2, 50%);
3
+ }
@@ -0,0 +1,4 @@
1
+ .turbolinks-progress-bar {
2
+ height: 2px;
3
+ background-color: $brand-primary;
4
+ }