mvpkit 0.8.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/bin/mvp +0 -1
- data/mvpkit.gemspec +71 -50
- data/package.json +1 -0
- data/project/.babelrc +3 -0
- data/project/.env +15 -0
- data/project/.gitignore +15 -40
- data/project/.iteration +3 -0
- data/project/Gemfile +43 -19
- data/project/Gemfile.lock +237 -165
- data/project/Procfile +2 -1
- data/project/README.md +0 -1
- data/project/app/assets/config/manifest.js +2 -0
- data/project/app/assets/javascripts/application.js +5 -0
- data/project/app/assets/javascripts/templates.js.erb +14 -0
- data/project/app/assets/stylesheets/application.scss +2 -0
- data/project/app/controllers/application_controller.rb +25 -5
- data/project/app/helpers/application_helper.rb +17 -4
- data/project/app/mailers/application_mailer.rb +5 -0
- data/project/app/templates/README.txt +1 -0
- data/project/app/templates/examples/template.mustache +1 -0
- data/project/app/views/examples/mustache.html.erb +25 -3
- data/project/app/views/layouts/_header.html.erb +22 -14
- data/project/app/views/layouts/_notifications.html.erb +10 -0
- data/project/app/views/layouts/application.html.erb +22 -11
- data/project/app/views/layouts/mailer.html.erb +5 -0
- data/project/app/views/layouts/mailer.text.erb +1 -0
- data/project/app/webpack/javascripts/behaviors/example.js +21 -0
- data/project/app/webpack/javascripts/controllers/home.js +15 -0
- data/project/app/webpack/javascripts/lib/clientsidevalidations.js +3 -0
- data/project/app/webpack/javascripts/lib/selectize.js +1 -0
- data/project/app/webpack/javascripts/pack.js +47 -0
- data/project/app/webpack/stylesheets/config/variables.scss +41 -0
- data/project/app/webpack/stylesheets/init/reset.scss +48 -0
- data/project/app/webpack/stylesheets/layout/main.scss +7 -0
- data/project/app/webpack/stylesheets/pack.scss +20 -0
- data/project/app/webpack/stylesheets/skin/alerts.scss +3 -0
- data/project/app/webpack/stylesheets/skin/buttons.scss +38 -0
- data/project/app/webpack/stylesheets/skin/hero.scss +45 -0
- data/project/app/webpack/stylesheets/skin/images.scss +13 -0
- data/project/app/webpack/stylesheets/skin/progress.scss +3 -0
- data/project/app/webpack/stylesheets/skin/selectize.scss +30 -0
- data/project/{assets/stylesheets/lib → app/webpack/stylesheets/skin}/spacing.scss +0 -2
- data/project/app/webpack/stylesheets/skin/tables.scss +10 -0
- data/project/app/webpack/stylesheets/skin/treatments.scss +3 -0
- data/project/app/webpack/stylesheets/skin/turbolinks.scss +4 -0
- data/project/app/webpack/stylesheets/skin/typography.scss +116 -0
- data/project/bin/rails +1 -6
- data/project/bin/rake +0 -5
- data/project/bin/setup +17 -17
- data/project/bin/update +29 -0
- data/project/config/application.rb +5 -4
- data/project/config/boot.rb +1 -1
- data/project/config/cable.yml +9 -0
- data/project/config/environment.rb +1 -1
- data/project/config/environments/development.rb +29 -26
- data/project/config/environments/production.rb +32 -19
- data/project/config/environments/test.rb +6 -6
- data/project/config/initializers/algolia.rb +7 -0
- data/project/config/initializers/application_controller_renderer.rb +6 -0
- data/project/config/initializers/assets.rb +23 -2
- data/project/config/initializers/client_side_validations.rb +20 -0
- data/project/config/initializers/cookies_serializer.rb +2 -0
- data/project/config/initializers/date_formats.rb +6 -0
- data/project/config/initializers/fingerprint.rb +1 -0
- data/project/config/initializers/geocoder.rb +9 -0
- data/project/config/initializers/new_framework_defaults.rb +23 -0
- data/project/config/initializers/rails_admin.rb +13 -7
- data/project/config/initializers/sidekiq.rb +19 -0
- data/project/config/initializers/simple_form.rb +2 -0
- data/project/config/initializers/stripe.rb +8 -0
- data/project/config/initializers/wrap_parameters.rb +2 -2
- data/project/config/puma.rb +47 -0
- data/project/config/routes.rb +4 -2
- data/project/config/secrets.yml +17 -3
- data/project/config/sidekiq.yml +6 -0
- data/project/config/spring.rb +6 -0
- data/project/config/stripe/coupons.rb +39 -0
- data/project/config/stripe/plans.rb +32 -0
- data/project/lib/tasks/heroku.rake +10 -2
- data/project/lib/tasks/migrations.rake +3 -0
- data/project/package.json +19 -28
- data/project/public/favicon.ico +0 -0
- data/project/webpack.config.js +62 -53
- metadata +70 -49
- data/project/app/decorators/.keep +0 -0
- data/project/app/mailers/.keep +0 -0
- data/project/app/views/layouts/_includes.html.erb +0 -7
- data/project/app/views/layouts/modal.html.erb +0 -14
- data/project/assets/images/.keep +0 -0
- data/project/assets/images/favicon.ico +0 -0
- data/project/assets/javascripts/controllers/home.coffee +0 -15
- data/project/assets/javascripts/pack.js +0 -9
- data/project/assets/stylesheets/config/variables.scss +0 -876
- data/project/assets/stylesheets/layout/basic.scss +0 -6
- data/project/assets/stylesheets/layout/carousel.scss +0 -127
- data/project/assets/stylesheets/layout/cover.scss +0 -129
- data/project/assets/stylesheets/skin/style.scss +0 -16
- data/project/assets/stylesheets/style.scss +0 -8
- data/project/config/initializers/mustache.rb +0 -7
- data/project/log/development.log +0 -48216
- data/project/log/production.log +0 -0
- data/project/public/404.html +0 -67
- data/project/public/422.html +0 -67
- data/project/public/500.html +0 -66
- data/project/public/assets/javascripts/448c34a56d699c29117adc64c43affeb.woff2 +0 -0
- data/project/public/assets/javascripts/89889688147bd7575d6327160d64e760.svg +0 -288
- data/project/public/assets/javascripts/e18bbf611f2a2e43afc071aa2f4e1512.ttf +0 -0
- data/project/public/assets/javascripts/f4769f9bdb7466be65088239c12046d1.eot +0 -0
- data/project/public/assets/javascripts/fa2772327f55d8198301fdb8bcfc8158.woff +0 -0
- data/project/public/assets/javascripts/pack.js +0 -31367
- data/project/public/assets/javascripts/pack.js.map +0 -1
- data/project/public/assets/pack.js +0 -17220
- data/project/public/assets/style.css +0 -7477
- /data/app/views/layouts/{minimum_viable_product → mvp}/_instrumentation.html.erb +0 -0
- /data/app/views/layouts/{minimum_viable_product → mvp}/_meta.html.erb +0 -0
- /data/app/views/layouts/{minimum_viable_product → mvp}/application.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/_example.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_buttons.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_forms.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_header.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_panels.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_tables.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap/_typography.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/bootstrap.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/elements/_grouping.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/elements/partials/_row_groups_of.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/index.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/layouts/basic.html.erb +0 -0
- /data/app/views/{minimum_viable_product → mvp}/styleguide/layouts/carousel.html.erb +0 -0
- /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
|
-
|
13
|
-
|
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 @@
|
|
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><<%= "%= render_mustache 'examples/
|
5
|
+
You can render mustache files by using <code><<%= "%= render_mustache 'examples/template', { some: 'value' } %" %>></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
|
-
|
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/
|
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><script type="text/javascript">
|
30
|
+
document.write(Templates['examples/template']())
|
31
|
+
</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
|
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
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
<
|
10
|
-
<a class="
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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">×</span>
|
7
|
+
</button>
|
8
|
+
<%= value %>
|
9
|
+
</div>
|
10
|
+
<% end %>
|
@@ -1,17 +1,28 @@
|
|
1
|
-
|
2
|
-
<%=
|
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
|
-
<%
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
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 @@
|
|
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 @@
|
|
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,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,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,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
|
+
}
|