avo 1.1.0 → 1.2.6.pre.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of avo might be problematic. Click here for more details.

Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +10 -2
  4. data/app/components/avo/index/grid_cover_empty_state_component.html.erb +3 -0
  5. data/app/components/avo/index/grid_cover_empty_state_component.rb +4 -0
  6. data/app/components/avo/index/grid_item_component.html.erb +4 -4
  7. data/app/components/avo/modal_component.rb +2 -1
  8. data/app/components/avo/panel_component.html.erb +7 -2
  9. data/app/components/avo/panel_component.rb +4 -1
  10. data/app/components/avo/show/fields/has_one_field_component.html.erb +3 -3
  11. data/app/components/avo/views/resource_edit_component.html.erb +3 -3
  12. data/app/components/avo/views/resource_index_component.html.erb +4 -4
  13. data/app/components/avo/views/resource_new_component.html.erb +3 -3
  14. data/app/components/avo/views/resource_show_component.html.erb +2 -2
  15. data/app/controllers/avo/application_controller.rb +20 -0
  16. data/app/controllers/avo/base_controller.rb +16 -0
  17. data/app/controllers/avo/home_controller.rb +5 -1
  18. data/app/helpers/avo/application_helper.rb +0 -6
  19. data/app/packs/entrypoints/application.css +1 -0
  20. data/app/packs/stylesheets/breadcrumbs.css +12 -0
  21. data/app/packs/stylesheets/components/code.css +5 -0
  22. data/app/packs/svgs/chevron-right.svg +3 -0
  23. data/app/views/avo/actions/show.html.erb +2 -2
  24. data/app/views/avo/home/_actions.html.erb +5 -5
  25. data/app/views/avo/home/_docs.html.erb +1 -1
  26. data/app/views/avo/home/_filters.html.erb +4 -4
  27. data/app/views/avo/home/_resources.html.erb +15 -2
  28. data/app/views/avo/home/index.html.erb +4 -4
  29. data/app/views/avo/relations/new.html.erb +2 -2
  30. data/app/views/avo/sidebar/_sidebar.html.erb +2 -1
  31. data/app/views/layouts/avo/application.html.erb +3 -2
  32. data/avo.gemspec +2 -0
  33. data/lib/avo.rb +4 -0
  34. data/lib/avo/app.rb +21 -11
  35. data/lib/avo/base_resource.rb +1 -0
  36. data/lib/avo/configuration.rb +17 -1
  37. data/lib/avo/grid_collector.rb +1 -1
  38. data/lib/avo/licensing/h_q.rb +3 -3
  39. data/lib/avo/licensing/license.rb +2 -0
  40. data/lib/avo/licensing/pro_license.rb +2 -1
  41. data/lib/avo/version.rb +1 -1
  42. data/lib/generators/avo/templates/initializer/avo.tt +10 -1
  43. data/lib/generators/avo/templates/tool/view.tt +3 -3
  44. data/lib/generators/avo/tool_generator.rb +5 -3
  45. data/public/avo-packs/css/{application-9d115b7e.css → application-b5f285ce.css} +49 -7
  46. data/public/avo-packs/css/application-b5f285ce.css.br +0 -0
  47. data/public/avo-packs/css/application-b5f285ce.css.gz +0 -0
  48. data/public/avo-packs/css/application-b5f285ce.css.map +1 -0
  49. data/public/avo-packs/css/application-b5f285ce.css.map.br +0 -0
  50. data/public/avo-packs/css/application-b5f285ce.css.map.gz +0 -0
  51. data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map +1 -1
  52. data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map.br +0 -0
  53. data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map.gz +0 -0
  54. data/public/avo-packs/manifest.json +7 -7
  55. metadata +42 -10
  56. data/public/avo-packs/css/application-9d115b7e.css.br +0 -0
  57. data/public/avo-packs/css/application-9d115b7e.css.gz +0 -0
  58. data/public/avo-packs/css/application-9d115b7e.css.map +0 -1
  59. data/public/avo-packs/css/application-9d115b7e.css.map.br +0 -0
  60. data/public/avo-packs/css/application-9d115b7e.css.map.gz +0 -0
@@ -4,6 +4,6 @@
4
4
  <div class="mt-2">
5
5
  We take pride in our documentation. Please check it out to see what you can build with Avo
6
6
 
7
- <a href="https://docs.avohq.io" class="text-bold cursor-pointer block mt-2">Check out the docs 👉</a>
7
+ <a href="https://docs.avohq.io" target="_blank" title="Avo documentation" class="text-bold cursor-pointer block mt-2">Check out the docs 👉</a>
8
8
  </div>
9
9
  </div>
@@ -4,13 +4,13 @@
4
4
  <div class="mt-2" data-controller="hidden-input">
5
5
  Filters allow you to better scope the index queries for records you are looking for.
6
6
 
7
- <strong class="cursor-pointer block mt-2" data-action="click->hidden-input#showContent">Generate filter 👇</strong>
8
-
9
- <div class="mt-2 hidden" data-hidden-input-target="content">
7
+ <div class="mt-2">
10
8
  <code class="text-lg">Published filter</code>
11
- <div>
9
+ <div class="mt-1">
12
10
  <code class="p-1 rounded bg-light-blue-500 text-white">bin/rails generate avo:filter published_filter</code>
13
11
  </div>
14
12
  </div>
13
+
14
+ <a href="https://docs.avohq.io/1.0/filters.html" target="_blank" title="Avo Filters documentation" class="text-bold cursor-pointer block mt-2">Filters in the docs 👉</a>
15
15
  </div>
16
16
  </div>
@@ -1,5 +1,9 @@
1
1
  <%
2
- models = ApplicationRecord.descendants
2
+ models = begin
3
+ ApplicationRecord.descendants
4
+ rescue => exception
5
+ []
6
+ end
3
7
  %>
4
8
  <div>
5
9
  <h3>Resources</h3>
@@ -10,7 +14,7 @@
10
14
  <div class="mt-2" data-controller="hidden-input">
11
15
  It seems you already have <%= models.count %> <%= 'model'.pluralize models.count %> in your app. You can generate resources for each one with the following commands.
12
16
 
13
- <strong class="cursor-pointer block mt-2" data-action="click->hidden-input#showContent">Generate resources 👇</strong>
17
+ <strong class="cursor-pointer block mt-2" data-action="click->hidden-input#showContent">Generate resources 👇 (click to reveal)</strong>
14
18
 
15
19
  <div class="mt-2 hidden" data-hidden-input-target="content">
16
20
  <% models.each do |model| %>
@@ -22,7 +26,16 @@
22
26
  </div>
23
27
  </div>
24
28
  <% else %>
29
+ <div class="mt-2" data-controller="hidden-input">
30
+ You may generate a resource using the following command:
31
+ <br>
25
32
 
33
+ <code class="p-1 rounded bg-light-blue-500 text-white">bin/rails generate avo:resource post</code>
34
+ </div>
26
35
  <% end %>
36
+
37
+ <p>
38
+ <a href="https://docs.avohq.io/1.0/resources.html" target="_blank" title="Avo Resources documentation">Docs</a>
39
+ </p>
27
40
  </div>
28
41
 
@@ -1,10 +1,10 @@
1
1
  <div class="flex flex-col">
2
- <%= panel title: 'Welcome to Avo' do |c| %>
3
- <% c.with :tools do %>
2
+ <%= render Avo::PanelComponent.new title: 'Welcome to Avo' do |c| %>
3
+ <% c.tools do %>
4
4
  <div class="text-sm italic">This page is visible only in development. It will be hidden in other environments.</div>
5
5
  <% end %>
6
6
 
7
- <% c.with :body do %>
7
+ <% c.body do %>
8
8
  <div class="flex flex-col justify-between py-6 min-h-24">
9
9
  <div class="px-6 space-y-4">
10
10
  <h3>About</h3>
@@ -27,7 +27,7 @@
27
27
  <li><span class="mr-2">👍</span> Grid view</li>
28
28
  <li><span class="mr-2">👍</span> Authorization</li>
29
29
  <li><span class="mr-2">👍</span> Localization</li>
30
- <li><span class="mr-2">⏳</span> Custom tools</li>
30
+ <li><span class="mr-2">👍</span> Custom tools</li>
31
31
  <li><span class="mr-2">⏳</span> Custom fields</li>
32
32
  <li><span class="mr-2">⏳</span> Search</li>
33
33
  <li><span class="mr-2">🕐</span> Dashboards</li>
@@ -5,7 +5,7 @@
5
5
  'turbo-frame': '_top'
6
6
  } do |form| %>
7
7
  <%= render Avo::ModalComponent.new do |c| %>
8
- <% c.with :heading do %>
8
+ <% c.heading do %>
9
9
  <%= t 'avo.choose_item', item: params[:related_name].downcase %>
10
10
  <% end %>
11
11
 
@@ -24,7 +24,7 @@
24
24
 
25
25
  <%#= form.hidden_field :resource_ids, value: params[:resource_ids], 'data-action-target': 'resourceIds' %>
26
26
 
27
- <% c.with :controls do %>
27
+ <% c.controls do %>
28
28
  <%= a_button t('avo.cancel'), 'data-action': 'click->modal#close', size: :sm %>
29
29
  <%= a_button t('avo.attach'), type: :submit, color: :green, size: :sm %>
30
30
  <% end %>
@@ -6,7 +6,8 @@
6
6
 
7
7
  <div class="flex-1 flex flex-col justify-between">
8
8
  <div class="tools py-4">
9
- <%= render Avo::NavigationLinkComponent.new label: 'Get started', path: '/avo', active: :exclusive if Rails.env.development? %>
9
+ <%= render Avo::NavigationLinkComponent.new label: 'Get started', path: Avo.configuration.root_path, active: :exclusive if Rails.env.development? && Avo.configuration.home_path.nil? %>
10
+
10
11
  <%= render Avo::NavigationHeadingComponent.new label: t('avo.resources') %>
11
12
 
12
13
  <div class="w-full">
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
3
  <head>
4
- <title>Avo Hotwire</title>
4
+ <%= display_meta_tags site: Avo.configuration.app_name, reverse: true, separator: "—" %>
5
5
 
6
6
  <%= csrf_meta_tags %>
7
7
  <%= csp_meta_tag %>
@@ -44,6 +44,7 @@
44
44
  <% end %>
45
45
  </div>
46
46
 
47
- <%= render partial: "avo/partials/footer" %>
47
+ <%= render partial: "avo/partials/scripts" %>
48
+ <!-- Avo version: <%= Avo::VERSION %> -->
48
49
  </body>
49
50
  </html>
data/avo.gemspec CHANGED
@@ -43,4 +43,6 @@ Gem::Specification.new do |spec|
43
43
  spec.add_dependency "view_component"
44
44
  spec.add_dependency "hotwire-rails"
45
45
  spec.add_dependency "addressable"
46
+ spec.add_dependency "meta-tags"
47
+ spec.add_dependency "breadcrumbs_on_rails"
46
48
  end
data/lib/avo.rb CHANGED
@@ -10,6 +10,10 @@ module Avo
10
10
  IN_DEVELOPMENT = ENV["AVO_IN_DEVELOPMENT"] == "1"
11
11
  PACKED = !IN_DEVELOPMENT
12
12
 
13
+ class LicenseTinkeredError < StandardError; end
14
+
15
+ class LicenseInvalidError < StandardError; end
16
+
13
17
  class << self
14
18
  def webpacker
15
19
  @webpacker ||= ::Webpacker::Instance.new(
data/lib/avo/app.rb CHANGED
@@ -26,12 +26,16 @@ module Avo
26
26
  self.request = request
27
27
  self.context = context
28
28
 
29
+ self.license = Licensing::LicenseManager.new(Licensing::HQ.new(request).response).license
30
+
29
31
  # Set the current host for ActiveStorage
30
- ActiveStorage::Current.host = request.base_url
32
+ begin
33
+ ActiveStorage::Current.host = request.base_url
34
+ rescue => exception
35
+ Rails.logger.debug "[Avo] Failed to set ActiveStorage::Current.host, #{exception.inspect}"
36
+ end
31
37
 
32
38
  init_resources
33
-
34
- self.license = Licensing::LicenseManager.new(Licensing::HQ.new(request).response).license
35
39
  end
36
40
 
37
41
  def cache_store
@@ -133,6 +137,9 @@ module Avo
133
137
  get_available_resources(user).select do |resource|
134
138
  resource.model_class.present?
135
139
  end
140
+ .select do |resource|
141
+ resource.visible_on_sidebar
142
+ end
136
143
  end
137
144
 
138
145
  # Insert any partials that we find in app/views/avo/sidebar/items.
@@ -144,6 +151,8 @@ module Avo
144
151
  .map do |filename|
145
152
  # remove the leading underscore (_)
146
153
  filename[0] = ""
154
+ # remove the extension
155
+ filename.gsub!('.html.erb', '')
147
156
  filename
148
157
  end
149
158
  end
@@ -157,16 +166,17 @@ module Avo
157
166
  .select do |resource|
158
167
  resource != :BaseResource
159
168
  end
169
+ .select do |resource|
170
+ resource.is_a? Class
171
+ end
160
172
  .map do |resource|
161
- if resource.is_a? Class
162
- route_key = if resource.model_class.present?
163
- resource.model_class.model_name.route_key
164
- else
165
- resource.to_s.underscore.gsub("_resource", "").downcase.pluralize.to_sym
166
- end
167
-
168
- resources route_key
173
+ route_key = if resource.model_class.present?
174
+ resource.model_class.model_name.route_key
175
+ else
176
+ resource.to_s.underscore.gsub("_resource", "").downcase.pluralize.to_sym
169
177
  end
178
+
179
+ resources route_key
170
180
  end
171
181
  end
172
182
  end
@@ -21,6 +21,7 @@ module Avo
21
21
  class_attribute :filters_loader
22
22
  class_attribute :fields
23
23
  class_attribute :grid_loader
24
+ class_attribute :visible_on_sidebar, default: true
24
25
 
25
26
  class << self
26
27
  def grid(&block)
@@ -19,10 +19,13 @@ module Avo
19
19
  attr_accessor :full_width_index_view
20
20
  attr_accessor :cache_resources_on_index_view
21
21
  attr_accessor :context
22
+ attr_accessor :display_breadcrumbs
23
+ attr_accessor :initial_breadcrumbs
24
+ attr_accessor :home_path
22
25
 
23
26
  def initialize
24
27
  @root_path = "/avo"
25
- @app_name = Rails.application.class.to_s.split("::").first.underscore.humanize(keep_id_suffix: true)
28
+ @app_name = ::Rails.application.class.to_s.split("::").first.underscore.humanize(keep_id_suffix: true)
26
29
  @timezone = "UTC"
27
30
  @per_page = 24
28
31
  @per_page_steps = [12, 24, 48, 72]
@@ -48,6 +51,11 @@ module Avo
48
51
  @full_width_index_view = false
49
52
  @cache_resources_on_index_view = Avo::PACKED
50
53
  @context = proc {}
54
+ @initial_breadcrumbs = proc {
55
+ add_breadcrumb I18n.t("avo.home").humanize, avo.root_path
56
+ }
57
+ @display_breadcrumbs = true
58
+ @home_path = nil
51
59
  end
52
60
 
53
61
  def locale_tag
@@ -71,6 +79,14 @@ module Avo
71
79
  def set_context(&block)
72
80
  @context = block if block.present?
73
81
  end
82
+
83
+ def set_initial_breadcrumbs(&block)
84
+ @initial_breadcrumbs = block if block.present?
85
+ end
86
+
87
+ def namespace
88
+ root_path.delete "/"
89
+ end
74
90
  end
75
91
 
76
92
  def self.configuration
@@ -27,7 +27,7 @@ module Avo
27
27
  def hydrate(model:, view:, resource:)
28
28
  cover_field.hydrate(model: model, view: view, resource: resource) if cover_field.present?
29
29
  title_field.hydrate(model: model, view: view, resource: resource) if title_field.present?
30
- body_field.hydrate(model: model, view: view, resource: resource) if title_field.present?
30
+ body_field.hydrate(model: model, view: view, resource: resource) if body_field.present?
31
31
 
32
32
  self
33
33
  end
@@ -3,8 +3,8 @@ module Avo
3
3
  class HQ
4
4
  attr_accessor :current_request
5
5
 
6
- ENDPOINT = "https://avohq.io/api/v1/licenses/check" unless const_defined?(:ENDPOINT)
7
- CACHE_KEY = "avo.hq.response" unless const_defined?(:CACHE_KEY)
6
+ ENDPOINT = "https://avohq.io/api/v1/licenses/check".freeze unless const_defined?(:ENDPOINT)
7
+ CACHE_KEY = "avo.hq.response".freeze unless const_defined?(:CACHE_KEY)
8
8
  REQUEST_TIMEOUT = 5 unless const_defined?(:REQUEST_TIMEOUT) # seconds
9
9
 
10
10
  def initialize(current_request)
@@ -54,7 +54,7 @@ module Avo
54
54
  end
55
55
 
56
56
  def perform_request
57
- puts "Performing request to avohq.io API to check license availability.".inspect if Rails.env.development?
57
+ ::Rails.logger.debug "[Avo] Performing request to avohq.io API to check license availability." if Rails.env.development?
58
58
 
59
59
  HTTParty.post ENDPOINT, body: payload.to_json, headers: {'Content-type': "application/json"}, timeout: REQUEST_TIMEOUT
60
60
  end
@@ -4,11 +4,13 @@ module Avo
4
4
  attr_accessor :id
5
5
  attr_accessor :response
6
6
  attr_accessor :valid
7
+ attr_accessor :payload
7
8
 
8
9
  def initialize(response)
9
10
  @response = response
10
11
  @id = response["id"]
11
12
  @valid = response["valid"]
13
+ @payload = response["payload"]
12
14
  end
13
15
 
14
16
  def valid?
@@ -3,7 +3,8 @@ module Avo
3
3
  class ProLicense < License
4
4
  def abilities
5
5
  [
6
- :authorization
6
+ :authorization,
7
+ :custom_tools
7
8
  ]
8
9
  end
9
10
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.6.pre.1"
3
3
  end
@@ -29,10 +29,10 @@ Avo.configure do |config|
29
29
  # }
30
30
 
31
31
  ## == Localization ==
32
+ # config.locale = 'en-US'
32
33
 
33
34
  ## == Customization ==
34
35
  # config.app_name = 'Avocadelicious'
35
- # config.locale = 'en-US'
36
36
  # config.timezone = 'UTC'
37
37
  # config.currency = 'USD'
38
38
  # config.per_page = 24
@@ -43,4 +43,13 @@ Avo.configure do |config|
43
43
  # config.full_width_container = false
44
44
  # config.full_width_index_view = false
45
45
  # config.cache_resources_on_index_view = true
46
+
47
+ # Where should the user be redirected when he hits the `/<%= options[:path] %>` url
48
+ # config.home_path = nil
49
+
50
+ ## == Breadcrumbs ==
51
+ # config.display_breadcrumbs = true
52
+ # config.set_initial_breadcrumbs do
53
+ # add_breadcrumb "Home", '/<%= options[:path] %>'
54
+ # end
46
55
  end
@@ -1,10 +1,10 @@
1
1
  <div class="flex flex-col">
2
- <%%= panel title: '<%= human_name %>' do |c| %>
3
- <%% c.with :tools do %>
2
+ <%%= render Avo::PanelComponent.new title: '<%= human_name %>' do |c| %>
3
+ <%% c.tools do %>
4
4
  <div class="text-sm italic">This is the panels tools section.</div>
5
5
  <%% end %>
6
6
 
7
- <%% c.with :body do %>
7
+ <%% c.body do %>
8
8
  <div class="flex flex-col justify-between py-6 min-h-24">
9
9
  <div class="px-6 space-y-4">
10
10
  <h3>What a nice new tool 👋</h3>
@@ -21,9 +21,11 @@ module Generators
21
21
  end
22
22
 
23
23
  # Add controller method
24
- inject_into_class controller_path, 'Avo::ToolsController' do
24
+ inject_into_class controller_path, "Avo::ToolsController" do
25
25
  <<-METHOD
26
26
  def #{file_name}
27
+ @page_title = "#{human_name}"
28
+ add_breadcrumb "#{human_name}"
27
29
  end
28
30
  METHOD
29
31
  end
@@ -32,8 +34,8 @@ module Generators
32
34
  template "tool/view.tt", "app/views/avo/tools/#{file_name}.html.erb"
33
35
 
34
36
  route <<-ROUTE
35
- namespace :#{::Avo.configuration.root_path.gsub('/', '')} do
36
- get "#{file_name}", to: "tools##{file_name}"
37
+ scope :#{::Avo.configuration.namespace} do
38
+ get "#{file_name}", to: "avo/tools##{file_name}"
37
39
  end
38
40
  ROUTE
39
41
  end
@@ -3051,6 +3051,40 @@ svg.tea #steamR {
3051
3051
  color: rgba(255, 255, 255, var(--tw-text-opacity))
3052
3052
  }
3053
3053
 
3054
+ .breadcrumbs {
3055
+
3056
+ position: relative;
3057
+
3058
+ font-size: 0.875rem;
3059
+
3060
+ line-height: 1.25rem;
3061
+
3062
+ font-weight: 700;
3063
+
3064
+ --tw-text-opacity: 1;
3065
+
3066
+ color: rgba(156, 163, 175, var(--tw-text-opacity));
3067
+ }
3068
+
3069
+ .breadcrumbs a, .breadcrumbs span {
3070
+
3071
+ display: inline-block
3072
+ }
3073
+
3074
+ .breadcrumbs a, .breadcrumbs span {
3075
+
3076
+ --tw-text-opacity: 1;
3077
+
3078
+ color: rgba(156, 163, 175, var(--tw-text-opacity))
3079
+ }
3080
+
3081
+ .breadcrumbs a:hover {
3082
+
3083
+ --tw-text-opacity: 1;
3084
+
3085
+ color: rgba(107, 114, 128, var(--tw-text-opacity))
3086
+ }
3087
+
3054
3088
  .spinner {
3055
3089
  position: relative;
3056
3090
  display: inline-block;
@@ -3612,6 +3646,11 @@ span.CodeMirror-selectedtext { background: none; }
3612
3646
  min-height: auto;
3613
3647
  }
3614
3648
 
3649
+ /* overlay CodeMirror fullscreen & Preview on small screens */
3650
+ .CodeMirror-fullscreen, .editor-preview-active-side {
3651
+ z-index: 50;
3652
+ }
3653
+
3615
3654
  .container {
3616
3655
  width: 100%;
3617
3656
  }
@@ -4533,6 +4572,9 @@ span.CodeMirror-selectedtext { background: none; }
4533
4572
  .bottom-0 {
4534
4573
  bottom: 0px
4535
4574
  }
4575
+ .top-\[-1px\] {
4576
+ top: -1px
4577
+ }
4536
4578
  .z-10 {
4537
4579
  z-index: 10
4538
4580
  }
@@ -4595,6 +4637,9 @@ span.CodeMirror-selectedtext { background: none; }
4595
4637
  .mb-0 {
4596
4638
  margin-bottom: 0px
4597
4639
  }
4640
+ .mt-1 {
4641
+ margin-top: 0.25rem
4642
+ }
4598
4643
  .-ml-20 {
4599
4644
  margin-left: -5rem
4600
4645
  }
@@ -4637,9 +4682,6 @@ span.CodeMirror-selectedtext { background: none; }
4637
4682
  .mb-6 {
4638
4683
  margin-bottom: 1.5rem
4639
4684
  }
4640
- .mb-3 {
4641
- margin-bottom: 0.75rem
4642
- }
4643
4685
  .mb-8 {
4644
4686
  margin-bottom: 2rem
4645
4687
  }
@@ -4700,15 +4742,15 @@ span.CodeMirror-selectedtext { background: none; }
4700
4742
  .h-16 {
4701
4743
  height: 4rem
4702
4744
  }
4745
+ .h-3 {
4746
+ height: 0.75rem
4747
+ }
4703
4748
  .h-10 {
4704
4749
  height: 2.5rem
4705
4750
  }
4706
4751
  .h-12 {
4707
4752
  height: 3rem
4708
4753
  }
4709
- .h-3 {
4710
- height: 0.75rem
4711
- }
4712
4754
  .max-h-168 {
4713
4755
  max-height: 42rem
4714
4756
  }
@@ -5869,4 +5911,4 @@ html, body{
5869
5911
  }
5870
5912
 
5871
5913
 
5872
- /*# sourceMappingURL=application-9d115b7e.css.map*/
5914
+ /*# sourceMappingURL=application-b5f285ce.css.map*/