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.
- checksums.yaml +4 -4
- data/Gemfile +5 -1
- data/Gemfile.lock +10 -2
- data/app/components/avo/index/grid_cover_empty_state_component.html.erb +3 -0
- data/app/components/avo/index/grid_cover_empty_state_component.rb +4 -0
- data/app/components/avo/index/grid_item_component.html.erb +4 -4
- data/app/components/avo/modal_component.rb +2 -1
- data/app/components/avo/panel_component.html.erb +7 -2
- data/app/components/avo/panel_component.rb +4 -1
- data/app/components/avo/show/fields/has_one_field_component.html.erb +3 -3
- data/app/components/avo/views/resource_edit_component.html.erb +3 -3
- data/app/components/avo/views/resource_index_component.html.erb +4 -4
- data/app/components/avo/views/resource_new_component.html.erb +3 -3
- data/app/components/avo/views/resource_show_component.html.erb +2 -2
- data/app/controllers/avo/application_controller.rb +20 -0
- data/app/controllers/avo/base_controller.rb +16 -0
- data/app/controllers/avo/home_controller.rb +5 -1
- data/app/helpers/avo/application_helper.rb +0 -6
- data/app/packs/entrypoints/application.css +1 -0
- data/app/packs/stylesheets/breadcrumbs.css +12 -0
- data/app/packs/stylesheets/components/code.css +5 -0
- data/app/packs/svgs/chevron-right.svg +3 -0
- data/app/views/avo/actions/show.html.erb +2 -2
- data/app/views/avo/home/_actions.html.erb +5 -5
- data/app/views/avo/home/_docs.html.erb +1 -1
- data/app/views/avo/home/_filters.html.erb +4 -4
- data/app/views/avo/home/_resources.html.erb +15 -2
- data/app/views/avo/home/index.html.erb +4 -4
- data/app/views/avo/relations/new.html.erb +2 -2
- data/app/views/avo/sidebar/_sidebar.html.erb +2 -1
- data/app/views/layouts/avo/application.html.erb +3 -2
- data/avo.gemspec +2 -0
- data/lib/avo.rb +4 -0
- data/lib/avo/app.rb +21 -11
- data/lib/avo/base_resource.rb +1 -0
- data/lib/avo/configuration.rb +17 -1
- data/lib/avo/grid_collector.rb +1 -1
- data/lib/avo/licensing/h_q.rb +3 -3
- data/lib/avo/licensing/license.rb +2 -0
- data/lib/avo/licensing/pro_license.rb +2 -1
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/templates/initializer/avo.tt +10 -1
- data/lib/generators/avo/templates/tool/view.tt +3 -3
- data/lib/generators/avo/tool_generator.rb +5 -3
- data/public/avo-packs/css/{application-9d115b7e.css → application-b5f285ce.css} +49 -7
- data/public/avo-packs/css/application-b5f285ce.css.br +0 -0
- data/public/avo-packs/css/application-b5f285ce.css.gz +0 -0
- data/public/avo-packs/css/application-b5f285ce.css.map +1 -0
- data/public/avo-packs/css/application-b5f285ce.css.map.br +0 -0
- data/public/avo-packs/css/application-b5f285ce.css.map.gz +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map +1 -1
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map.br +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map.gz +0 -0
- data/public/avo-packs/manifest.json +7 -7
- metadata +42 -10
- data/public/avo-packs/css/application-9d115b7e.css.br +0 -0
- data/public/avo-packs/css/application-9d115b7e.css.gz +0 -0
- data/public/avo-packs/css/application-9d115b7e.css.map +0 -1
- data/public/avo-packs/css/application-9d115b7e.css.map.br +0 -0
- 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
|
-
<
|
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 =
|
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
|
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
|
-
<%=
|
3
|
-
<% c.
|
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.
|
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"
|
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.
|
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.
|
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:
|
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
|
-
|
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/
|
47
|
+
<%= render partial: "avo/partials/scripts" %>
|
48
|
+
<!-- Avo version: <%= Avo::VERSION %> -->
|
48
49
|
</body>
|
49
50
|
</html>
|
data/avo.gemspec
CHANGED
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
|
-
|
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.
|
162
|
-
|
163
|
-
|
164
|
-
|
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
|
data/lib/avo/base_resource.rb
CHANGED
data/lib/avo/configuration.rb
CHANGED
@@ -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
|
data/lib/avo/grid_collector.rb
CHANGED
@@ -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
|
30
|
+
body_field.hydrate(model: model, view: view, resource: resource) if body_field.present?
|
31
31
|
|
32
32
|
self
|
33
33
|
end
|
data/lib/avo/licensing/h_q.rb
CHANGED
@@ -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
|
-
|
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?
|
data/lib/avo/version.rb
CHANGED
@@ -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
|
-
<%%=
|
3
|
-
<%% c.
|
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.
|
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,
|
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
|
-
|
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-
|
5914
|
+
/*# sourceMappingURL=application-b5f285ce.css.map*/
|