avo 1.0.4 → 1.3.0.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 +11 -3
- data/README.md +3 -1
- data/app/components/avo/common/key_value_component.html.erb +53 -0
- data/app/components/avo/common/key_value_component.rb +11 -0
- data/app/components/avo/edit/fields/belongs_to_field_component.html.erb +0 -1
- data/app/components/avo/edit/fields/belongs_to_field_component.rb +7 -0
- data/app/components/avo/edit/fields/key_value_field_component.html.erb +3 -0
- data/app/components/avo/edit/fields/key_value_field_component.rb +4 -0
- 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/show/fields/key_value_field_component.html.erb +3 -0
- data/app/components/avo/show/fields/key_value_field_component.rb +4 -0
- 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 +12 -8
- data/app/controllers/avo/base_controller.rb +16 -0
- data/app/controllers/avo/home_controller.rb +2 -0
- data/app/helpers/avo/application_helper.rb +0 -30
- data/app/packs/entrypoints/application.css +1 -0
- data/app/packs/entrypoints/application.js +14 -10
- data/app/packs/js/controllers/fields/key_value_controller.js +132 -0
- data/app/packs/stylesheets/breadcrumbs.css +12 -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/index.html.erb +3 -3
- data/{lib/generators/avo/templates → app/views/avo}/partials/_scripts.html.erb +0 -0
- data/app/views/avo/relations/new.html.erb +2 -2
- data/app/views/avo/sidebar/_sidebar.html.erb +11 -2
- data/app/views/layouts/avo/application.html.erb +5 -4
- data/avo.gemspec +2 -0
- data/lib/avo/app.rb +28 -9
- data/lib/avo/base_resource.rb +12 -12
- data/lib/avo/configuration.rb +11 -1
- data/lib/avo/fields/belongs_to_field.rb +0 -2
- data/lib/avo/fields/key_value_field.rb +24 -1
- data/lib/avo/grid_collector.rb +1 -1
- data/lib/avo/version.rb +1 -1
- data/lib/generators/avo/eject_generator.rb +55 -0
- data/lib/generators/avo/templates/tool/controller.tt +2 -0
- data/lib/generators/avo/templates/tool/sidebar_item.tt +1 -0
- data/lib/generators/avo/templates/tool/view.tt +27 -0
- data/lib/generators/avo/tool_generator.rb +62 -0
- data/public/avo-packs/css/{application-9d115b7e.css → application-5af67922.css} +132 -24
- data/public/avo-packs/css/application-5af67922.css.br +0 -0
- data/public/avo-packs/css/application-5af67922.css.gz +0 -0
- data/public/avo-packs/css/application-5af67922.css.map +1 -0
- data/public/avo-packs/css/application-5af67922.css.map.br +0 -0
- data/public/avo-packs/css/application-5af67922.css.map.gz +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js +26 -0
- data/public/avo-packs/js/{application-e351ef988a3cb9687542.js.LICENSE.txt → application-a48a99244065c8d7a1d1.js.LICENSE.txt} +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.br +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.gz +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map +1 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.br +0 -0
- data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.gz +0 -0
- data/public/avo-packs/manifest.json +15 -15
- metadata +62 -22
- data/lib/generators/avo/partials_generator.rb +0 -14
- data/lib/generators/avo/templates/partials/_footer.html.erb +0 -3
- data/lib/generators/avo/templates/partials/_header.html.erb +0 -1
- data/lib/generators/avo/templates/partials/_logo.html.erb +0 -1
- 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
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js +0 -26
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.br +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.gz +0 -0
- data/public/avo-packs/js/application-e351ef988a3cb9687542.js.map +0 -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/lib/avo/base_resource.rb
CHANGED
@@ -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)
|
@@ -260,28 +261,27 @@ module Avo
|
|
260
261
|
end
|
261
262
|
end
|
262
263
|
|
263
|
-
# For :new views we're hydrating the model with the values from the resource's default attribute.
|
264
264
|
# We will not overwrite any attributes that come pre-filled in the model.
|
265
265
|
def hydrate_model_with_default_values
|
266
266
|
default_values = get_fields.select do |field|
|
267
267
|
!field.computed
|
268
268
|
end
|
269
269
|
.map do |field|
|
270
|
-
|
271
|
-
|
270
|
+
id = field.id
|
271
|
+
value = field.value
|
272
272
|
|
273
|
-
|
274
|
-
|
273
|
+
if field.respond_to? :foreign_key
|
274
|
+
id = field.foreign_key.to_sym
|
275
275
|
|
276
|
-
|
276
|
+
reflection = @model._reflections[@params[:via_relation]]
|
277
277
|
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
278
|
+
if reflection.present? && reflection.foreign_key.present? && field.id.to_s == @params[:via_relation].to_s
|
279
|
+
value = @params[:via_resource_id]
|
280
|
+
end
|
281
|
+
end
|
282
282
|
|
283
|
-
|
284
|
-
|
283
|
+
[id, value]
|
284
|
+
end
|
285
285
|
.to_h
|
286
286
|
.select do |id, value|
|
287
287
|
value.present?
|
data/lib/avo/configuration.rb
CHANGED
@@ -19,10 +19,12 @@ 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
|
22
24
|
|
23
25
|
def initialize
|
24
26
|
@root_path = "/avo"
|
25
|
-
@app_name = Rails.application.class.to_s.split("::").first.underscore.humanize(keep_id_suffix: true)
|
27
|
+
@app_name = ::Rails.application.class.to_s.split("::").first.underscore.humanize(keep_id_suffix: true)
|
26
28
|
@timezone = "UTC"
|
27
29
|
@per_page = 24
|
28
30
|
@per_page_steps = [12, 24, 48, 72]
|
@@ -48,6 +50,10 @@ module Avo
|
|
48
50
|
@full_width_index_view = false
|
49
51
|
@cache_resources_on_index_view = Avo::PACKED
|
50
52
|
@context = proc {}
|
53
|
+
@initial_breadcrumbs = proc {
|
54
|
+
add_breadcrumb I18n.t("avo.home").humanize, avo.root_path
|
55
|
+
}
|
56
|
+
@display_breadcrumbs = true
|
51
57
|
end
|
52
58
|
|
53
59
|
def locale_tag
|
@@ -71,6 +77,10 @@ module Avo
|
|
71
77
|
def set_context(&block)
|
72
78
|
@context = block if block.present?
|
73
79
|
end
|
80
|
+
|
81
|
+
def set_initial_breadcrumbs(&block)
|
82
|
+
@initial_breadcrumbs = block if block.present?
|
83
|
+
end
|
74
84
|
end
|
75
85
|
|
76
86
|
def self.configuration
|
@@ -3,6 +3,11 @@ require "json"
|
|
3
3
|
module Avo
|
4
4
|
module Fields
|
5
5
|
class KeyValueField < BaseField
|
6
|
+
attr_reader :key_label
|
7
|
+
attr_reader :value_label
|
8
|
+
attr_reader :action_text
|
9
|
+
attr_reader :disable_adding_rows
|
10
|
+
|
6
11
|
def initialize(name, **args, &block)
|
7
12
|
@defaults = {
|
8
13
|
partial_name: "key-value-field"
|
@@ -33,7 +38,13 @@ module Avo
|
|
33
38
|
[:"#{id}", "#{id}": {}]
|
34
39
|
end
|
35
40
|
|
36
|
-
def
|
41
|
+
def parsed_value
|
42
|
+
value.to_json
|
43
|
+
rescue
|
44
|
+
{}
|
45
|
+
end
|
46
|
+
|
47
|
+
def options
|
37
48
|
{
|
38
49
|
key_label: @key_label,
|
39
50
|
value_label: @value_label,
|
@@ -44,6 +55,18 @@ module Avo
|
|
44
55
|
disable_deleting_rows: @disable_deleting_rows
|
45
56
|
}
|
46
57
|
end
|
58
|
+
|
59
|
+
def fill_field(model, key, value)
|
60
|
+
begin
|
61
|
+
new_value = JSON.parse(value)
|
62
|
+
rescue
|
63
|
+
new_value = {}
|
64
|
+
end
|
65
|
+
|
66
|
+
model[key] = new_value
|
67
|
+
|
68
|
+
model
|
69
|
+
end
|
47
70
|
end
|
48
71
|
end
|
49
72
|
end
|
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/version.rb
CHANGED
@@ -0,0 +1,55 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
require "fileutils"
|
3
|
+
|
4
|
+
module Generators
|
5
|
+
module Avo
|
6
|
+
class EjectGenerator < ::Rails::Generators::Base
|
7
|
+
argument :filename, type: :string, required: true
|
8
|
+
|
9
|
+
source_root ::Avo::Engine.root
|
10
|
+
|
11
|
+
namespace "avo:eject"
|
12
|
+
|
13
|
+
TEMPLATES = {
|
14
|
+
sidebar: "app/views/avo/sidebar/_sidebar.html.erb",
|
15
|
+
logo: "app/views/avo/partials/logo.html.erb",
|
16
|
+
header: "app/views/avo/partials/header.html.erb",
|
17
|
+
footer: "app/views/avo/partials/footer.html.erb",
|
18
|
+
scripts: "app/views/avo/partials/scripts.html.erb"
|
19
|
+
}
|
20
|
+
|
21
|
+
def handle
|
22
|
+
if @filename.starts_with?(":")
|
23
|
+
template_id = path_to_sym @filename
|
24
|
+
template_path = TEMPLATES[template_id]
|
25
|
+
|
26
|
+
if path_exists? template_path
|
27
|
+
eject template_path
|
28
|
+
else
|
29
|
+
say("Failed to find the `#{template_id.to_sym}` template.", :yellow)
|
30
|
+
end
|
31
|
+
elsif path_exists? @filename
|
32
|
+
eject @filename
|
33
|
+
else
|
34
|
+
say("Failed to find the `#{@filename}` template.", :yellow)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
no_tasks do
|
39
|
+
def path_to_sym(filename)
|
40
|
+
template_id = filename.dup
|
41
|
+
template_id[0] = ""
|
42
|
+
template_id.to_sym
|
43
|
+
end
|
44
|
+
|
45
|
+
def path_exists?(path)
|
46
|
+
path.present? && File.file?(::Avo::Engine.root.join(path))
|
47
|
+
end
|
48
|
+
|
49
|
+
def eject(path)
|
50
|
+
copy_file ::Avo::Engine.root.join(path), ::Rails.root.join(path)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
<%%= render Avo::NavigationLinkComponent.new label: '<%= human_name %>', path: '/avo/<%= file_name %>' %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<div class="flex flex-col">
|
2
|
+
<%%= render Avo::PanelComponent.new title: '<%= human_name %>' do |c| %>
|
3
|
+
<%% c.tools do %>
|
4
|
+
<div class="text-sm italic">This is the panels tools section.</div>
|
5
|
+
<%% end %>
|
6
|
+
|
7
|
+
<%% c.body do %>
|
8
|
+
<div class="flex flex-col justify-between py-6 min-h-24">
|
9
|
+
<div class="px-6 space-y-4">
|
10
|
+
<h3>What a nice new tool 👋</h3>
|
11
|
+
|
12
|
+
<p>
|
13
|
+
You can edit this file here <%= in_code "app/views/avo/tools/#{file_name}.html.erb" %>.
|
14
|
+
</p>
|
15
|
+
|
16
|
+
<p>
|
17
|
+
For this tool we created the <%= in_code file_name %> method in the <%= in_code "Avo::ToolsController" %>. You may delete it or move it to your own controller.
|
18
|
+
</p>
|
19
|
+
|
20
|
+
<p>
|
21
|
+
A new <%= in_code human_name %> item should have been added to the sidebar. Edit it in <%= in_code "app/views/avo/sidebar/items/_#{file_name}.html.erb" %>
|
22
|
+
</p>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<%% end %>
|
26
|
+
<%% end %>
|
27
|
+
</div>
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
require "fileutils"
|
3
|
+
|
4
|
+
module Generators
|
5
|
+
module Avo
|
6
|
+
class ToolGenerator < ::Rails::Generators::Base
|
7
|
+
argument :name, type: :string, required: true
|
8
|
+
|
9
|
+
source_root File.expand_path("templates", __dir__)
|
10
|
+
|
11
|
+
namespace "avo:tool"
|
12
|
+
|
13
|
+
def handle
|
14
|
+
# Sidebar items
|
15
|
+
template "tool/sidebar_item.tt", "app/views/avo/sidebar/items/_#{file_name}.html.erb"
|
16
|
+
|
17
|
+
# Add controller if it doesn't exist
|
18
|
+
controller_path = "app/controllers/avo/tools_controller.rb"
|
19
|
+
unless File.file?(Rails.root.join(controller_path))
|
20
|
+
template "tool/controller.tt", controller_path
|
21
|
+
end
|
22
|
+
|
23
|
+
# Add controller method
|
24
|
+
inject_into_class controller_path, "Avo::ToolsController" do
|
25
|
+
<<-METHOD
|
26
|
+
def #{file_name}
|
27
|
+
@page_title = "#{human_name}"
|
28
|
+
add_breadcrumb "#{human_name}"
|
29
|
+
end
|
30
|
+
METHOD
|
31
|
+
end
|
32
|
+
|
33
|
+
# Add view file
|
34
|
+
template "tool/view.tt", "app/views/avo/tools/#{file_name}.html.erb"
|
35
|
+
|
36
|
+
route <<-ROUTE
|
37
|
+
namespace :#{::Avo.configuration.root_path.gsub('/', '')} do
|
38
|
+
get "#{file_name}", to: "tools##{file_name}"
|
39
|
+
end
|
40
|
+
ROUTE
|
41
|
+
end
|
42
|
+
|
43
|
+
no_tasks do
|
44
|
+
def file_name
|
45
|
+
name.to_s.underscore
|
46
|
+
end
|
47
|
+
|
48
|
+
def controller_name
|
49
|
+
file_name.to_s
|
50
|
+
end
|
51
|
+
|
52
|
+
def human_name
|
53
|
+
file_name.humanize
|
54
|
+
end
|
55
|
+
|
56
|
+
def in_code(text)
|
57
|
+
"<code class='p-1 rounded bg-gray-500 text-white text-sm'>#{text}</code>"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -1388,7 +1388,7 @@ span.flatpickr-weekday {
|
|
1388
1388
|
}
|
1389
1389
|
}
|
1390
1390
|
|
1391
|
-
/*! tailwindcss v2.
|
1391
|
+
/*! tailwindcss v2.1.1 | MIT License | https://tailwindcss.com *//*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
1392
1392
|
|
1393
1393
|
/*
|
1394
1394
|
Document
|
@@ -1915,7 +1915,7 @@ object {
|
|
1915
1915
|
|
1916
1916
|
/**
|
1917
1917
|
* Constrain images and videos to the parent width and preserve
|
1918
|
-
* their
|
1918
|
+
* their intrinsic aspect ratio.
|
1919
1919
|
*
|
1920
1920
|
* https://github.com/mozdevs/cssremedy/issues/14
|
1921
1921
|
*/
|
@@ -2329,6 +2329,10 @@ select {
|
|
2329
2329
|
z-index: 10;
|
2330
2330
|
}
|
2331
2331
|
|
2332
|
+
.focus\:border-none:focus {
|
2333
|
+
border-style: none;
|
2334
|
+
}
|
2335
|
+
|
2332
2336
|
.focus\:border-blue-300:focus {
|
2333
2337
|
--tw-border-opacity: 1;
|
2334
2338
|
border-color: rgba(147, 197, 253, var(--tw-border-opacity));
|
@@ -2339,6 +2343,11 @@ select {
|
|
2339
2343
|
border-color: rgba(148, 163, 184, var(--tw-border-opacity));
|
2340
2344
|
}
|
2341
2345
|
|
2346
|
+
.focus\:border-gray-700:focus {
|
2347
|
+
--tw-border-opacity: 1;
|
2348
|
+
border-color: rgba(55, 65, 81, var(--tw-border-opacity));
|
2349
|
+
}
|
2350
|
+
|
2342
2351
|
.focus\:bg-white:focus {
|
2343
2352
|
--tw-bg-opacity: 1;
|
2344
2353
|
background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
|
@@ -3051,6 +3060,40 @@ svg.tea #steamR {
|
|
3051
3060
|
color: rgba(255, 255, 255, var(--tw-text-opacity))
|
3052
3061
|
}
|
3053
3062
|
|
3063
|
+
.breadcrumbs {
|
3064
|
+
|
3065
|
+
position: relative;
|
3066
|
+
|
3067
|
+
font-size: 0.875rem;
|
3068
|
+
|
3069
|
+
line-height: 1.25rem;
|
3070
|
+
|
3071
|
+
font-weight: 700;
|
3072
|
+
|
3073
|
+
--tw-text-opacity: 1;
|
3074
|
+
|
3075
|
+
color: rgba(156, 163, 175, var(--tw-text-opacity));
|
3076
|
+
}
|
3077
|
+
|
3078
|
+
.breadcrumbs a, .breadcrumbs span {
|
3079
|
+
|
3080
|
+
display: inline-block
|
3081
|
+
}
|
3082
|
+
|
3083
|
+
.breadcrumbs a, .breadcrumbs span {
|
3084
|
+
|
3085
|
+
--tw-text-opacity: 1;
|
3086
|
+
|
3087
|
+
color: rgba(156, 163, 175, var(--tw-text-opacity))
|
3088
|
+
}
|
3089
|
+
|
3090
|
+
.breadcrumbs a:hover {
|
3091
|
+
|
3092
|
+
--tw-text-opacity: 1;
|
3093
|
+
|
3094
|
+
color: rgba(107, 114, 128, var(--tw-text-opacity))
|
3095
|
+
}
|
3096
|
+
|
3054
3097
|
.spinner {
|
3055
3098
|
position: relative;
|
3056
3099
|
display: inline-block;
|
@@ -4273,6 +4316,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4273
4316
|
.focus\:z-10:focus {
|
4274
4317
|
z-index: 10;
|
4275
4318
|
}
|
4319
|
+
.focus\:border-none:focus {
|
4320
|
+
border-style: none;
|
4321
|
+
}
|
4276
4322
|
.focus\:border-blue-300:focus {
|
4277
4323
|
--tw-border-opacity: 1;
|
4278
4324
|
border-color: rgba(147, 197, 253, var(--tw-border-opacity));
|
@@ -4281,6 +4327,10 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4281
4327
|
--tw-border-opacity: 1;
|
4282
4328
|
border-color: rgba(148, 163, 184, var(--tw-border-opacity));
|
4283
4329
|
}
|
4330
|
+
.focus\:border-gray-700:focus {
|
4331
|
+
--tw-border-opacity: 1;
|
4332
|
+
border-color: rgba(55, 65, 81, var(--tw-border-opacity));
|
4333
|
+
}
|
4284
4334
|
.focus\:bg-white:focus {
|
4285
4335
|
--tw-bg-opacity: 1;
|
4286
4336
|
background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
|
@@ -4488,6 +4538,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4488
4538
|
}
|
4489
4539
|
}
|
4490
4540
|
|
4541
|
+
.pointer-events-none {
|
4542
|
+
pointer-events: none
|
4543
|
+
}
|
4491
4544
|
.visible {
|
4492
4545
|
visibility: visible
|
4493
4546
|
}
|
@@ -4533,6 +4586,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4533
4586
|
.bottom-0 {
|
4534
4587
|
bottom: 0px
|
4535
4588
|
}
|
4589
|
+
.top-\[-1px\] {
|
4590
|
+
top: -1px
|
4591
|
+
}
|
4536
4592
|
.z-10 {
|
4537
4593
|
z-index: 10
|
4538
4594
|
}
|
@@ -4637,9 +4693,6 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4637
4693
|
.mb-6 {
|
4638
4694
|
margin-bottom: 1.5rem
|
4639
4695
|
}
|
4640
|
-
.mb-3 {
|
4641
|
-
margin-bottom: 0.75rem
|
4642
|
-
}
|
4643
4696
|
.mb-8 {
|
4644
4697
|
margin-bottom: 2rem
|
4645
4698
|
}
|
@@ -4655,24 +4708,24 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4655
4708
|
.block {
|
4656
4709
|
display: block
|
4657
4710
|
}
|
4658
|
-
.inline-
|
4659
|
-
display: inline-
|
4660
|
-
}
|
4661
|
-
.flex {
|
4662
|
-
display: flex
|
4711
|
+
.inline-block {
|
4712
|
+
display: inline-block
|
4663
4713
|
}
|
4664
4714
|
.inline {
|
4665
4715
|
display: inline
|
4666
4716
|
}
|
4667
|
-
.
|
4668
|
-
display:
|
4717
|
+
.flex {
|
4718
|
+
display: flex
|
4669
4719
|
}
|
4670
|
-
.inline-
|
4671
|
-
display: inline-
|
4720
|
+
.inline-flex {
|
4721
|
+
display: inline-flex
|
4672
4722
|
}
|
4673
4723
|
.table {
|
4674
4724
|
display: table
|
4675
4725
|
}
|
4726
|
+
.grid {
|
4727
|
+
display: grid
|
4728
|
+
}
|
4676
4729
|
.hidden {
|
4677
4730
|
display: none
|
4678
4731
|
}
|
@@ -4700,15 +4753,15 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4700
4753
|
.h-16 {
|
4701
4754
|
height: 4rem
|
4702
4755
|
}
|
4756
|
+
.h-3 {
|
4757
|
+
height: 0.75rem
|
4758
|
+
}
|
4703
4759
|
.h-10 {
|
4704
4760
|
height: 2.5rem
|
4705
4761
|
}
|
4706
4762
|
.h-12 {
|
4707
4763
|
height: 3rem
|
4708
4764
|
}
|
4709
|
-
.h-3 {
|
4710
|
-
height: 0.75rem
|
4711
|
-
}
|
4712
4765
|
.max-h-168 {
|
4713
4766
|
max-height: 42rem
|
4714
4767
|
}
|
@@ -4760,6 +4813,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4760
4813
|
.w-64 {
|
4761
4814
|
width: 16rem
|
4762
4815
|
}
|
4816
|
+
.w-1\/2 {
|
4817
|
+
width: 50%
|
4818
|
+
}
|
4763
4819
|
.w-11\/12 {
|
4764
4820
|
width: 91.666667%
|
4765
4821
|
}
|
@@ -4824,6 +4880,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4824
4880
|
.cursor-wait {
|
4825
4881
|
cursor: wait
|
4826
4882
|
}
|
4883
|
+
.cursor-not-allowed {
|
4884
|
+
cursor: not-allowed
|
4885
|
+
}
|
4827
4886
|
.appearance-none {
|
4828
4887
|
-webkit-appearance: none;
|
4829
4888
|
appearance: none
|
@@ -4953,6 +5012,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4953
5012
|
.rounded {
|
4954
5013
|
border-radius: 0.25rem
|
4955
5014
|
}
|
5015
|
+
.rounded-none {
|
5016
|
+
border-radius: 0px
|
5017
|
+
}
|
4956
5018
|
.rounded-full {
|
4957
5019
|
border-radius: 9999px
|
4958
5020
|
}
|
@@ -4980,6 +5042,18 @@ span.CodeMirror-selectedtext { background: none; }
|
|
4980
5042
|
.border-r {
|
4981
5043
|
border-right-width: 1px
|
4982
5044
|
}
|
5045
|
+
.border-l-0 {
|
5046
|
+
border-left-width: 0px
|
5047
|
+
}
|
5048
|
+
.border-b-0 {
|
5049
|
+
border-bottom-width: 0px
|
5050
|
+
}
|
5051
|
+
.border-t-0 {
|
5052
|
+
border-top-width: 0px
|
5053
|
+
}
|
5054
|
+
.border-l {
|
5055
|
+
border-left-width: 1px
|
5056
|
+
}
|
4983
5057
|
.border-pink-600 {
|
4984
5058
|
--tw-border-opacity: 1;
|
4985
5059
|
border-color: rgba(219, 39, 119, var(--tw-border-opacity))
|
@@ -5187,14 +5261,14 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5187
5261
|
padding-top: 1px;
|
5188
5262
|
padding-bottom: 1px
|
5189
5263
|
}
|
5190
|
-
.py-0 {
|
5191
|
-
padding-top: 0px;
|
5192
|
-
padding-bottom: 0px
|
5193
|
-
}
|
5194
5264
|
.py-3 {
|
5195
5265
|
padding-top: 0.75rem;
|
5196
5266
|
padding-bottom: 0.75rem
|
5197
5267
|
}
|
5268
|
+
.py-0 {
|
5269
|
+
padding-top: 0px;
|
5270
|
+
padding-bottom: 0px
|
5271
|
+
}
|
5198
5272
|
.py-8 {
|
5199
5273
|
padding-top: 2rem;
|
5200
5274
|
padding-bottom: 2rem
|
@@ -5378,12 +5452,37 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5378
5452
|
--tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
5379
5453
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
5380
5454
|
}
|
5455
|
+
.shadow-lg {
|
5456
|
+
--tw-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
|
5457
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
5458
|
+
}
|
5459
|
+
.shadow {
|
5460
|
+
--tw-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
5461
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
|
5462
|
+
}
|
5381
5463
|
.outline-none {
|
5382
5464
|
outline: 2px solid transparent;
|
5383
5465
|
outline-offset: 2px
|
5384
5466
|
}
|
5467
|
+
.filter {
|
5468
|
+
--tw-blur: var(--tw-empty,/*!*/ /*!*/);
|
5469
|
+
--tw-brightness: var(--tw-empty,/*!*/ /*!*/);
|
5470
|
+
--tw-contrast: var(--tw-empty,/*!*/ /*!*/);
|
5471
|
+
--tw-grayscale: var(--tw-empty,/*!*/ /*!*/);
|
5472
|
+
--tw-hue-rotate: var(--tw-empty,/*!*/ /*!*/);
|
5473
|
+
--tw-invert: var(--tw-empty,/*!*/ /*!*/);
|
5474
|
+
--tw-saturate: var(--tw-empty,/*!*/ /*!*/);
|
5475
|
+
--tw-sepia: var(--tw-empty,/*!*/ /*!*/);
|
5476
|
+
--tw-drop-shadow: var(--tw-empty,/*!*/ /*!*/);
|
5477
|
+
filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)
|
5478
|
+
}
|
5479
|
+
.invert {
|
5480
|
+
--tw-invert: invert(100%)
|
5481
|
+
}
|
5385
5482
|
.transition {
|
5386
|
-
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
|
5483
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
|
5484
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
5485
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
|
5387
5486
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
5388
5487
|
transition-duration: 150ms
|
5389
5488
|
}
|
@@ -5578,6 +5677,9 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5578
5677
|
.focus\:z-10:focus {
|
5579
5678
|
z-index: 10
|
5580
5679
|
}
|
5680
|
+
.focus\:border-none:focus {
|
5681
|
+
border-style: none
|
5682
|
+
}
|
5581
5683
|
.focus\:border-blue-300:focus {
|
5582
5684
|
--tw-border-opacity: 1;
|
5583
5685
|
border-color: rgba(147, 197, 253, var(--tw-border-opacity))
|
@@ -5586,6 +5688,10 @@ span.CodeMirror-selectedtext { background: none; }
|
|
5586
5688
|
--tw-border-opacity: 1;
|
5587
5689
|
border-color: rgba(148, 163, 184, var(--tw-border-opacity))
|
5588
5690
|
}
|
5691
|
+
.focus\:border-gray-700:focus {
|
5692
|
+
--tw-border-opacity: 1;
|
5693
|
+
border-color: rgba(55, 65, 81, var(--tw-border-opacity))
|
5694
|
+
}
|
5589
5695
|
.focus\:bg-white:focus {
|
5590
5696
|
--tw-bg-opacity: 1;
|
5591
5697
|
background-color: rgba(255, 255, 255, var(--tw-bg-opacity))
|
@@ -5819,7 +5925,9 @@ html, body{
|
|
5819
5925
|
--tw-scale-x: 1;
|
5820
5926
|
--tw-scale-y: 1;
|
5821
5927
|
transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
5822
|
-
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
|
5928
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
|
5929
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
5930
|
+
transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
|
5823
5931
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
5824
5932
|
transition-duration: 150ms;
|
5825
5933
|
transition-duration: 150ms;
|
@@ -5869,4 +5977,4 @@ html, body{
|
|
5869
5977
|
}
|
5870
5978
|
|
5871
5979
|
|
5872
|
-
/*# sourceMappingURL=application-
|
5980
|
+
/*# sourceMappingURL=application-5af67922.css.map*/
|