avo 1.3.0.pre.1 → 1.3.0

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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +12 -8
  4. data/README.md +3 -2
  5. data/app/controllers/avo/application_controller.rb +27 -0
  6. data/app/controllers/avo/home_controller.rb +4 -3
  7. data/app/helpers/avo/application_helper.rb +8 -2
  8. data/app/packs/entrypoints/application.js +10 -14
  9. data/app/packs/js/controllers/fields/code_field_controller.js +4 -1
  10. data/app/packs/stylesheets/components/code.css +5 -0
  11. data/app/views/avo/home/_actions.html.erb +5 -5
  12. data/app/views/avo/home/_docs.html.erb +1 -1
  13. data/app/views/avo/home/_filters.html.erb +4 -4
  14. data/app/views/avo/home/_resources.html.erb +15 -2
  15. data/app/views/avo/home/index.html.erb +1 -1
  16. data/app/views/avo/partials/_custom_tools_alert.html.erb +6 -0
  17. data/app/views/avo/partials/_head.html.erb +0 -0
  18. data/app/views/avo/partials/_logo.html.erb +1 -1
  19. data/app/views/avo/sidebar/_license_warning.html.erb +3 -7
  20. data/app/views/avo/sidebar/_sidebar.html.erb +2 -1
  21. data/app/views/layouts/avo/application.html.erb +9 -4
  22. data/avo.gemspec +1 -1
  23. data/bin/helpers.rb +1 -1
  24. data/bin/spring +5 -5
  25. data/config/webpacker.yml +1 -1
  26. data/lib/avo.rb +13 -0
  27. data/lib/avo/app.rb +7 -3
  28. data/lib/avo/configuration.rb +6 -0
  29. data/lib/avo/fields/key_value_field.rb +1 -24
  30. data/lib/avo/licensing/h_q.rb +3 -3
  31. data/lib/avo/licensing/license.rb +2 -0
  32. data/lib/avo/licensing/pro_license.rb +2 -1
  33. data/lib/avo/version.rb +1 -1
  34. data/lib/generators/avo/eject_generator.rb +5 -4
  35. data/lib/generators/avo/filter_generator.rb +1 -1
  36. data/lib/generators/avo/resource_generator.rb +1 -4
  37. data/lib/generators/avo/templates/initializer/avo.tt +10 -1
  38. data/lib/generators/avo/tool_generator.rb +2 -2
  39. data/public/avo-packs/css/{application-5af67922.css → application-af3e670d.css} +40 -103
  40. data/public/avo-packs/css/application-af3e670d.css.br +0 -0
  41. data/public/avo-packs/css/application-af3e670d.css.gz +0 -0
  42. data/public/avo-packs/css/application-af3e670d.css.map +1 -0
  43. data/public/avo-packs/css/application-af3e670d.css.map.br +0 -0
  44. data/public/avo-packs/css/application-af3e670d.css.map.gz +0 -0
  45. data/public/avo-packs/js/application-274069794e43352bbda8.js +26 -0
  46. data/public/avo-packs/js/{application-a48a99244065c8d7a1d1.js.LICENSE.txt → application-274069794e43352bbda8.js.LICENSE.txt} +0 -0
  47. data/public/avo-packs/js/application-274069794e43352bbda8.js.br +0 -0
  48. data/public/avo-packs/js/application-274069794e43352bbda8.js.gz +0 -0
  49. data/public/avo-packs/js/application-274069794e43352bbda8.js.map +1 -0
  50. data/public/avo-packs/js/application-274069794e43352bbda8.js.map.br +0 -0
  51. data/public/avo-packs/js/application-274069794e43352bbda8.js.map.gz +0 -0
  52. data/public/avo-packs/manifest.json +15 -15
  53. metadata +30 -35
  54. data/app/components/avo/common/key_value_component.html.erb +0 -53
  55. data/app/components/avo/common/key_value_component.rb +0 -11
  56. data/app/components/avo/edit/fields/key_value_field_component.html.erb +0 -3
  57. data/app/components/avo/edit/fields/key_value_field_component.rb +0 -4
  58. data/app/components/avo/show/fields/key_value_field_component.html.erb +0 -3
  59. data/app/components/avo/show/fields/key_value_field_component.rb +0 -4
  60. data/app/packs/js/controllers/fields/key_value_controller.js +0 -132
  61. data/public/avo-packs/css/application-5af67922.css.br +0 -0
  62. data/public/avo-packs/css/application-5af67922.css.gz +0 -0
  63. data/public/avo-packs/css/application-5af67922.css.map +0 -1
  64. data/public/avo-packs/css/application-5af67922.css.map.br +0 -0
  65. data/public/avo-packs/css/application-5af67922.css.map.gz +0 -0
  66. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js +0 -26
  67. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.br +0 -0
  68. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.gz +0 -0
  69. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map +0 -1
  70. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.br +0 -0
  71. data/public/avo-packs/js/application-a48a99244065c8d7a1d1.js.map.gz +0 -0
data/bin/spring CHANGED
@@ -4,14 +4,14 @@
4
4
  # It gets overwritten when you run the `spring binstub` command.
5
5
 
6
6
  unless defined?(Spring)
7
- require 'rubygems'
8
- require 'bundler'
7
+ require "rubygems"
8
+ require "bundler"
9
9
 
10
10
  lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read)
11
- spring = lockfile.specs.detect { |spec| spec.name == 'spring' }
11
+ spring = lockfile.specs.detect { |spec| spec.name == "spring" }
12
12
  if spring
13
13
  Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path
14
- gem 'spring', spring.version
15
- require 'spring/binstub'
14
+ gem "spring", spring.version
15
+ require "spring/binstub"
16
16
  end
17
17
  end
data/config/webpacker.yml CHANGED
@@ -13,7 +13,7 @@ default: &default
13
13
 
14
14
  # Additional paths webpack should lookup modules
15
15
  # ['app/assets', 'engine/foo/app/assets']
16
- additional_paths_paths: []
16
+ additional_paths: []
17
17
 
18
18
  # Reload manifest.json on all requests so we reload latest compiled packs
19
19
  cache_manifest: false
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 LicenseVerificationTemperedError < StandardError; end
14
+
15
+ class LicenseInvalidError < StandardError; end
16
+
13
17
  class << self
14
18
  def webpacker
15
19
  @webpacker ||= ::Webpacker::Instance.new(
@@ -17,6 +21,15 @@ module Avo
17
21
  config_path: ROOT_PATH.join("config/webpacker.yml")
18
22
  )
19
23
  end
24
+
25
+ def manifester
26
+ @manifester ||= ::Manifester::Instance.new(
27
+ root_path: ROOT_PATH,
28
+ public_output_dir: "avo-packs",
29
+ cache_manifest: Rails.env.production?,
30
+ fallback_to_webpacker: -> { Avo::IN_DEVELOPMENT || Rails.env.test?}
31
+ )
32
+ end
20
33
  end
21
34
  end
22
35
 
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
@@ -21,6 +21,7 @@ module Avo
21
21
  attr_accessor :context
22
22
  attr_accessor :display_breadcrumbs
23
23
  attr_accessor :initial_breadcrumbs
24
+ attr_accessor :home_path
24
25
 
25
26
  def initialize
26
27
  @root_path = "/avo"
@@ -54,6 +55,7 @@ module Avo
54
55
  add_breadcrumb I18n.t("avo.home").humanize, avo.root_path
55
56
  }
56
57
  @display_breadcrumbs = true
58
+ @home_path = nil
57
59
  end
58
60
 
59
61
  def locale_tag
@@ -81,6 +83,10 @@ module Avo
81
83
  def set_initial_breadcrumbs(&block)
82
84
  @initial_breadcrumbs = block if block.present?
83
85
  end
86
+
87
+ def namespace
88
+ root_path.delete "/"
89
+ end
84
90
  end
85
91
 
86
92
  def self.configuration
@@ -3,11 +3,6 @@ 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
-
11
6
  def initialize(name, **args, &block)
12
7
  @defaults = {
13
8
  partial_name: "key-value-field"
@@ -38,13 +33,7 @@ module Avo
38
33
  [:"#{id}", "#{id}": {}]
39
34
  end
40
35
 
41
- def parsed_value
42
- value.to_json
43
- rescue
44
- {}
45
- end
46
-
47
- def options
36
+ def hydrate_field(fields, model, resource, view)
48
37
  {
49
38
  key_label: @key_label,
50
39
  value_label: @value_label,
@@ -55,18 +44,6 @@ module Avo
55
44
  disable_deleting_rows: @disable_deleting_rows
56
45
  }
57
46
  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
70
47
  end
71
48
  end
72
49
  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.3.0.pre.1"
2
+ VERSION = "1.3.0"
3
3
  end
@@ -12,10 +12,11 @@ module Generators
12
12
 
13
13
  TEMPLATES = {
14
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"
15
+ logo: "app/views/avo/partials/_logo.html.erb",
16
+ head: "app/views/avo/partials/_head.html.erb",
17
+ header: "app/views/avo/partials/_header.html.erb",
18
+ footer: "app/views/avo/partials/_footer.html.erb",
19
+ scripts: "app/views/avo/partials/_scripts.html.erb"
19
20
  }
20
21
 
21
22
  def handle
@@ -13,7 +13,7 @@ module Generators
13
13
 
14
14
  type = "select" if options[:select]
15
15
 
16
- template "filters/#{type}_filter.rb", "app/services/avo/filters/#{singular_name}.rb"
16
+ template "filters/#{type}_filter.tt", "app/services/avo/filters/#{singular_name}.rb"
17
17
  end
18
18
  end
19
19
  end
@@ -10,9 +10,6 @@ module Generators
10
10
  def create
11
11
  template "resource/resource.tt", "app/avo/resources/#{resource_name}.rb"
12
12
  template "resource/controller.tt", "app/controllers/avo/#{controller_name}.rb"
13
-
14
- # Show a warning if the model doesn't exists
15
- say("We couldn't find the #{class_name} model in your codebase. You should have one present for Avo to display the resource.", :yellow) unless current_models.include? class_name
16
13
  end
17
14
 
18
15
  def resource_class
@@ -20,7 +17,7 @@ module Generators
20
17
  end
21
18
 
22
19
  def controller_class
23
- "Avo::#{plural_name.humanize}Controller"
20
+ "Avo::#{class_name.camelize.pluralize}Controller"
24
21
  end
25
22
 
26
23
  def resource_name
@@ -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
@@ -34,8 +34,8 @@ module Generators
34
34
  template "tool/view.tt", "app/views/avo/tools/#{file_name}.html.erb"
35
35
 
36
36
  route <<-ROUTE
37
- namespace :#{::Avo.configuration.root_path.gsub('/', '')} do
38
- get "#{file_name}", to: "tools##{file_name}"
37
+ scope :#{::Avo.configuration.namespace} do
38
+ get "#{file_name}", to: "avo/tools##{file_name}"
39
39
  end
40
40
  ROUTE
41
41
  end
@@ -1388,7 +1388,7 @@ span.flatpickr-weekday {
1388
1388
  }
1389
1389
  }
1390
1390
 
1391
- /*! tailwindcss v2.1.1 | MIT License | https://tailwindcss.com *//*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
1391
+ /*! tailwindcss v2.0.4 | 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 intrinsic aspect ratio.
1918
+ * their instrinsic aspect ratio.
1919
1919
  *
1920
1920
  * https://github.com/mozdevs/cssremedy/issues/14
1921
1921
  */
@@ -2329,10 +2329,6 @@ select {
2329
2329
  z-index: 10;
2330
2330
  }
2331
2331
 
2332
- .focus\:border-none:focus {
2333
- border-style: none;
2334
- }
2335
-
2336
2332
  .focus\:border-blue-300:focus {
2337
2333
  --tw-border-opacity: 1;
2338
2334
  border-color: rgba(147, 197, 253, var(--tw-border-opacity));
@@ -2343,11 +2339,6 @@ select {
2343
2339
  border-color: rgba(148, 163, 184, var(--tw-border-opacity));
2344
2340
  }
2345
2341
 
2346
- .focus\:border-gray-700:focus {
2347
- --tw-border-opacity: 1;
2348
- border-color: rgba(55, 65, 81, var(--tw-border-opacity));
2349
- }
2350
-
2351
2342
  .focus\:bg-white:focus {
2352
2343
  --tw-bg-opacity: 1;
2353
2344
  background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
@@ -3655,6 +3646,11 @@ span.CodeMirror-selectedtext { background: none; }
3655
3646
  min-height: auto;
3656
3647
  }
3657
3648
 
3649
+ /* overlay CodeMirror fullscreen & Preview on small screens */
3650
+ .CodeMirror-fullscreen, .editor-preview-active-side {
3651
+ z-index: 50;
3652
+ }
3653
+
3658
3654
  .container {
3659
3655
  width: 100%;
3660
3656
  }
@@ -4316,9 +4312,6 @@ span.CodeMirror-selectedtext { background: none; }
4316
4312
  .focus\:z-10:focus {
4317
4313
  z-index: 10;
4318
4314
  }
4319
- .focus\:border-none:focus {
4320
- border-style: none;
4321
- }
4322
4315
  .focus\:border-blue-300:focus {
4323
4316
  --tw-border-opacity: 1;
4324
4317
  border-color: rgba(147, 197, 253, var(--tw-border-opacity));
@@ -4327,10 +4320,6 @@ span.CodeMirror-selectedtext { background: none; }
4327
4320
  --tw-border-opacity: 1;
4328
4321
  border-color: rgba(148, 163, 184, var(--tw-border-opacity));
4329
4322
  }
4330
- .focus\:border-gray-700:focus {
4331
- --tw-border-opacity: 1;
4332
- border-color: rgba(55, 65, 81, var(--tw-border-opacity));
4333
- }
4334
4323
  .focus\:bg-white:focus {
4335
4324
  --tw-bg-opacity: 1;
4336
4325
  background-color: rgba(255, 255, 255, var(--tw-bg-opacity));
@@ -4538,9 +4527,6 @@ span.CodeMirror-selectedtext { background: none; }
4538
4527
  }
4539
4528
  }
4540
4529
 
4541
- .pointer-events-none {
4542
- pointer-events: none
4543
- }
4544
4530
  .visible {
4545
4531
  visibility: visible
4546
4532
  }
@@ -4577,15 +4563,15 @@ span.CodeMirror-selectedtext { background: none; }
4577
4563
  .top-full {
4578
4564
  top: 100%
4579
4565
  }
4566
+ .bottom-0 {
4567
+ bottom: 0px
4568
+ }
4580
4569
  .left-1\/2 {
4581
4570
  left: 50%
4582
4571
  }
4583
4572
  .top-1\/2 {
4584
4573
  top: 50%
4585
4574
  }
4586
- .bottom-0 {
4587
- bottom: 0px
4588
- }
4589
4575
  .top-\[-1px\] {
4590
4576
  top: -1px
4591
4577
  }
@@ -4651,6 +4637,12 @@ span.CodeMirror-selectedtext { background: none; }
4651
4637
  .mb-0 {
4652
4638
  margin-bottom: 0px
4653
4639
  }
4640
+ .mt-1 {
4641
+ margin-top: 0.25rem
4642
+ }
4643
+ .mb-4 {
4644
+ margin-bottom: 1rem
4645
+ }
4654
4646
  .-ml-20 {
4655
4647
  margin-left: -5rem
4656
4648
  }
@@ -4699,33 +4691,30 @@ span.CodeMirror-selectedtext { background: none; }
4699
4691
  .mb-2 {
4700
4692
  margin-bottom: 0.5rem
4701
4693
  }
4702
- .mb-4 {
4703
- margin-bottom: 1rem
4704
- }
4705
4694
  .ml-2 {
4706
4695
  margin-left: 0.5rem
4707
4696
  }
4708
4697
  .block {
4709
4698
  display: block
4710
4699
  }
4711
- .inline-block {
4712
- display: inline-block
4700
+ .inline-flex {
4701
+ display: inline-flex
4702
+ }
4703
+ .flex {
4704
+ display: flex
4713
4705
  }
4714
4706
  .inline {
4715
4707
  display: inline
4716
4708
  }
4717
- .flex {
4718
- display: flex
4709
+ .grid {
4710
+ display: grid
4719
4711
  }
4720
- .inline-flex {
4721
- display: inline-flex
4712
+ .inline-block {
4713
+ display: inline-block
4722
4714
  }
4723
4715
  .table {
4724
4716
  display: table
4725
4717
  }
4726
- .grid {
4727
- display: grid
4728
- }
4729
4718
  .hidden {
4730
4719
  display: none
4731
4720
  }
@@ -4735,6 +4724,9 @@ span.CodeMirror-selectedtext { background: none; }
4735
4724
  .h-5 {
4736
4725
  height: 1.25rem
4737
4726
  }
4727
+ .h-6 {
4728
+ height: 1.5rem
4729
+ }
4738
4730
  .h-64 {
4739
4731
  height: 16rem
4740
4732
  }
@@ -4747,9 +4739,6 @@ span.CodeMirror-selectedtext { background: none; }
4747
4739
  .h-full {
4748
4740
  height: 100%
4749
4741
  }
4750
- .h-6 {
4751
- height: 1.5rem
4752
- }
4753
4742
  .h-16 {
4754
4743
  height: 4rem
4755
4744
  }
@@ -4813,9 +4802,6 @@ span.CodeMirror-selectedtext { background: none; }
4813
4802
  .w-64 {
4814
4803
  width: 16rem
4815
4804
  }
4816
- .w-1\/2 {
4817
- width: 50%
4818
- }
4819
4805
  .w-11\/12 {
4820
4806
  width: 91.666667%
4821
4807
  }
@@ -4880,9 +4866,6 @@ span.CodeMirror-selectedtext { background: none; }
4880
4866
  .cursor-wait {
4881
4867
  cursor: wait
4882
4868
  }
4883
- .cursor-not-allowed {
4884
- cursor: not-allowed
4885
- }
4886
4869
  .appearance-none {
4887
4870
  -webkit-appearance: none;
4888
4871
  appearance: none
@@ -5012,9 +4995,6 @@ span.CodeMirror-selectedtext { background: none; }
5012
4995
  .rounded {
5013
4996
  border-radius: 0.25rem
5014
4997
  }
5015
- .rounded-none {
5016
- border-radius: 0px
5017
- }
5018
4998
  .rounded-full {
5019
4999
  border-radius: 9999px
5020
5000
  }
@@ -5042,18 +5022,6 @@ span.CodeMirror-selectedtext { background: none; }
5042
5022
  .border-r {
5043
5023
  border-right-width: 1px
5044
5024
  }
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
- }
5057
5025
  .border-pink-600 {
5058
5026
  --tw-border-opacity: 1;
5059
5027
  border-color: rgba(219, 39, 119, var(--tw-border-opacity))
@@ -5166,9 +5134,9 @@ span.CodeMirror-selectedtext { background: none; }
5166
5134
  --tw-bg-opacity: 1;
5167
5135
  background-color: rgba(243, 244, 246, var(--tw-bg-opacity))
5168
5136
  }
5169
- .bg-teal-700 {
5137
+ .bg-green-700 {
5170
5138
  --tw-bg-opacity: 1;
5171
- background-color: rgba(15, 118, 110, var(--tw-bg-opacity))
5139
+ background-color: rgba(4, 120, 87, var(--tw-bg-opacity))
5172
5140
  }
5173
5141
  .bg-blue-gray-200 {
5174
5142
  --tw-bg-opacity: 1;
@@ -5261,14 +5229,14 @@ span.CodeMirror-selectedtext { background: none; }
5261
5229
  padding-top: 1px;
5262
5230
  padding-bottom: 1px
5263
5231
  }
5264
- .py-3 {
5265
- padding-top: 0.75rem;
5266
- padding-bottom: 0.75rem
5267
- }
5268
5232
  .py-0 {
5269
5233
  padding-top: 0px;
5270
5234
  padding-bottom: 0px
5271
5235
  }
5236
+ .py-3 {
5237
+ padding-top: 0.75rem;
5238
+ padding-bottom: 0.75rem
5239
+ }
5272
5240
  .py-8 {
5273
5241
  padding-top: 2rem;
5274
5242
  padding-bottom: 2rem
@@ -5437,6 +5405,9 @@ span.CodeMirror-selectedtext { background: none; }
5437
5405
  --tw-text-opacity: 1;
5438
5406
  color: rgba(185, 28, 28, var(--tw-text-opacity))
5439
5407
  }
5408
+ .opacity-75 {
5409
+ opacity: 0.75
5410
+ }
5440
5411
  .opacity-50 {
5441
5412
  opacity: 0.5
5442
5413
  }
@@ -5452,37 +5423,12 @@ span.CodeMirror-selectedtext { background: none; }
5452
5423
  --tw-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
5453
5424
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow)
5454
5425
  }
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
- }
5463
5426
  .outline-none {
5464
5427
  outline: 2px solid transparent;
5465
5428
  outline-offset: 2px
5466
5429
  }
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
- }
5482
5430
  .transition {
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;
5431
+ transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
5486
5432
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
5487
5433
  transition-duration: 150ms
5488
5434
  }
@@ -5677,9 +5623,6 @@ span.CodeMirror-selectedtext { background: none; }
5677
5623
  .focus\:z-10:focus {
5678
5624
  z-index: 10
5679
5625
  }
5680
- .focus\:border-none:focus {
5681
- border-style: none
5682
- }
5683
5626
  .focus\:border-blue-300:focus {
5684
5627
  --tw-border-opacity: 1;
5685
5628
  border-color: rgba(147, 197, 253, var(--tw-border-opacity))
@@ -5688,10 +5631,6 @@ span.CodeMirror-selectedtext { background: none; }
5688
5631
  --tw-border-opacity: 1;
5689
5632
  border-color: rgba(148, 163, 184, var(--tw-border-opacity))
5690
5633
  }
5691
- .focus\:border-gray-700:focus {
5692
- --tw-border-opacity: 1;
5693
- border-color: rgba(55, 65, 81, var(--tw-border-opacity))
5694
- }
5695
5634
  .focus\:bg-white:focus {
5696
5635
  --tw-bg-opacity: 1;
5697
5636
  background-color: rgba(255, 255, 255, var(--tw-bg-opacity))
@@ -5925,9 +5864,7 @@ html, body{
5925
5864
  --tw-scale-x: 1;
5926
5865
  --tw-scale-y: 1;
5927
5866
  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));
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;
5867
+ transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;
5931
5868
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
5932
5869
  transition-duration: 150ms;
5933
5870
  transition-duration: 150ms;
@@ -5977,4 +5914,4 @@ html, body{
5977
5914
  }
5978
5915
 
5979
5916
 
5980
- /*# sourceMappingURL=application-5af67922.css.map*/
5917
+ /*# sourceMappingURL=application-af3e670d.css.map*/