avo 3.0.0.pre13 → 3.0.0.pre14

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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +2 -1
  4. data/app/components/avo/alert_component.html.erb +1 -1
  5. data/app/components/avo/base_component.rb +7 -7
  6. data/app/components/avo/field_wrapper_component.rb +1 -1
  7. data/app/components/avo/fields/area_field/edit_component.html.erb +1 -1
  8. data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +5 -5
  9. data/app/components/avo/fields/belongs_to_field/edit_component.rb +4 -4
  10. data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -0
  11. data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +1 -1
  12. data/app/components/avo/fields/code_field/edit_component.html.erb +1 -0
  13. data/app/components/avo/fields/country_field/edit_component.html.erb +1 -0
  14. data/app/components/avo/fields/file_field/index_component.rb +2 -2
  15. data/app/components/avo/fields/has_one_field/show_component.html.erb +1 -0
  16. data/app/components/avo/fields/index_component.rb +1 -0
  17. data/app/components/avo/fields/location_field/show_component.html.erb +1 -1
  18. data/app/components/avo/fields/markdown_field/edit_component.html.erb +1 -0
  19. data/app/components/avo/fields/number_field/edit_component.html.erb +1 -0
  20. data/app/components/avo/fields/password_field/edit_component.html.erb +1 -0
  21. data/app/components/avo/fields/progress_bar_field/edit_component.html.erb +1 -0
  22. data/app/components/avo/fields/status_field/edit_component.html.erb +1 -1
  23. data/app/components/avo/fields/text_field/edit_component.html.erb +1 -1
  24. data/app/components/avo/fields/textarea_field/edit_component.html.erb +1 -0
  25. data/app/components/avo/fields/trix_field/edit_component.html.erb +2 -1
  26. data/app/components/avo/fields/trix_field/show_component.html.erb +1 -1
  27. data/app/components/avo/index/resource_controls_component.rb +6 -6
  28. data/app/components/avo/item_switcher_component.html.erb +9 -4
  29. data/app/components/avo/item_switcher_component.rb +2 -1
  30. data/app/components/avo/resource_component.rb +5 -3
  31. data/app/components/avo/resource_sidebar_component.rb +1 -1
  32. data/app/components/avo/row_component.html.erb +3 -0
  33. data/app/components/avo/row_component.rb +12 -0
  34. data/app/components/avo/sidebar/link_component.html.erb +2 -0
  35. data/app/components/avo/sidebar/link_component.rb +5 -3
  36. data/app/components/avo/sidebar_component.html.erb +3 -3
  37. data/app/components/avo/sidebar_component.rb +4 -4
  38. data/app/components/avo/sidebar_profile_component.html.erb +3 -3
  39. data/app/components/avo/views/resource_edit_component.rb +1 -1
  40. data/app/components/avo/views/resource_index_component.html.erb +1 -1
  41. data/app/components/avo/views/resource_index_component.rb +8 -8
  42. data/app/controllers/avo/actions_controller.rb +11 -7
  43. data/app/controllers/avo/application_controller.rb +71 -66
  44. data/app/controllers/avo/associations_controller.rb +4 -6
  45. data/app/controllers/avo/attachments_controller.rb +1 -1
  46. data/app/controllers/avo/base_controller.rb +22 -15
  47. data/app/controllers/avo/home_controller.rb +1 -1
  48. data/app/controllers/avo/search_controller.rb +14 -12
  49. data/app/controllers/concerns/avo/initializes_avo.rb +2 -5
  50. data/app/javascript/js/controllers/fields/easy_mde_controller.js +1 -0
  51. data/app/views/avo/associations/new.html.erb +1 -1
  52. data/app/views/avo/debug/status.html.erb +1 -1
  53. data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
  54. data/app/views/avo/partials/_footer.html.erb +1 -1
  55. data/app/views/avo/partials/_javascript.html.erb +1 -1
  56. data/app/views/avo/partials/_navbar.html.erb +1 -1
  57. data/app/views/layouts/avo/application.html.erb +2 -2
  58. data/avo.gemspec +1 -0
  59. data/config/initializers/pagy.rb +12 -10
  60. data/config/routes.rb +3 -3
  61. data/db/factories.rb +2 -1
  62. data/lib/avo/base_action.rb +4 -1
  63. data/lib/avo/base_resource.rb +118 -89
  64. data/lib/avo/concerns/has_item_type.rb +4 -0
  65. data/lib/avo/concerns/has_items.rb +20 -15
  66. data/lib/avo/concerns/model_class_constantized.rb +0 -2
  67. data/lib/avo/current.rb +22 -1
  68. data/lib/avo/dsl/field_parser.rb +1 -1
  69. data/lib/avo/dynamic_router.rb +12 -1
  70. data/lib/avo/engine.rb +4 -7
  71. data/lib/avo/fields/base_field.rb +25 -3
  72. data/lib/avo/fields/belongs_to_field.rb +8 -7
  73. data/lib/avo/fields/concerns/is_searchable.rb +1 -1
  74. data/lib/avo/fields/concerns/use_resource.rb +1 -1
  75. data/lib/avo/fields/field_manager.rb +13 -3
  76. data/lib/avo/fields/has_base_field.rb +4 -4
  77. data/lib/avo/fields/has_one_field.rb +1 -1
  78. data/lib/avo/fields/location_field.rb +18 -1
  79. data/lib/avo/licensing/h_q.rb +11 -6
  80. data/lib/avo/licensing/license.rb +1 -1
  81. data/lib/avo/licensing/license_manager.rb +1 -1
  82. data/lib/avo/licensing/{null_license.rb → nil_license.rb} +1 -1
  83. data/lib/avo/loaders/fields_loader.rb +7 -1
  84. data/lib/avo/plugin_manager.rb +2 -4
  85. data/lib/avo/reloader.rb +1 -1
  86. data/lib/avo/resources/items/holder.rb +5 -1
  87. data/lib/avo/resources/items/item_group.rb +1 -0
  88. data/lib/avo/resources/items/row.rb +54 -0
  89. data/lib/avo/resources/resource_manager.rb +4 -7
  90. data/lib/avo/services/debug_service.rb +6 -6
  91. data/lib/avo/services/telemetry_service.rb +3 -3
  92. data/lib/avo/version.rb +1 -1
  93. data/lib/avo.rb +107 -25
  94. data/lib/generators/avo/action_generator.rb +8 -8
  95. data/lib/generators/avo/card_generator.rb +27 -0
  96. data/lib/generators/avo/filter_generator.rb +8 -8
  97. data/lib/generators/avo/templates/action.tt +3 -3
  98. data/lib/generators/avo/templates/cards/chartkick_card.tt +1 -1
  99. data/lib/generators/avo/templates/cards/chartkick_card_sample.tt +1 -1
  100. data/lib/generators/avo/templates/cards/metric_card.tt +1 -1
  101. data/lib/generators/avo/templates/cards/metric_card_sample.tt +1 -1
  102. data/lib/generators/avo/templates/cards/partial_card.tt +1 -1
  103. data/lib/generators/avo/templates/cards/partial_card_sample.tt +1 -1
  104. data/lib/generators/avo/templates/dashboards/dashboard.tt +1 -1
  105. data/lib/generators/avo/templates/scope.tt +1 -1
  106. data/lib/tasks/avo_tasks.rake +1 -28
  107. data/public/avo-assets/avo.base.css +26 -31
  108. data/public/avo-assets/avo.base.js +281 -280
  109. data/public/avo-assets/avo.base.js.map +3 -3
  110. metadata +21 -8
  111. data/lib/avo/app.rb +0 -170
  112. data/lib/generators/avo/card/chartkick_generator.rb +0 -18
  113. data/lib/generators/avo/card/metric_generator.rb +0 -18
  114. data/lib/generators/avo/card/partial_generator.rb +0 -19
  115. data/lib/generators/avo/templates/standalone_action.tt +0 -15
@@ -5,20 +5,20 @@ module Generators
5
5
  class ActionGenerator < NamedBaseGenerator
6
6
  source_root File.expand_path("templates", __dir__)
7
7
 
8
- class_option :standalone, type: :boolean
8
+ class_option :standalone, type: :boolean, default: false
9
+ class_option :name, type: :string
9
10
 
10
11
  namespace "avo:action"
11
12
 
12
13
  def create_resource_file
13
- type = "resource"
14
+ template "action.tt", "app/avo/actions/#{singular_name}.rb"
15
+ end
14
16
 
15
- type = "standalone" if options[:standalone]
17
+ def configuration_options
18
+ configuration = " self.name = \"#{options[:name] || name.titleize}\""
19
+ configuration += "\n self.standalone = true" if options[:standalone]
16
20
 
17
- if type == "standalone"
18
- template "standalone_action.tt", "app/avo/actions/#{singular_name}.rb"
19
- else
20
- template "action.tt", "app/avo/actions/#{singular_name}.rb"
21
- end
21
+ configuration
22
22
  end
23
23
  end
24
24
  end
@@ -0,0 +1,27 @@
1
+ require_relative "named_base_generator"
2
+
3
+ module Generators
4
+ module Avo
5
+ class Card < NamedBaseGenerator
6
+ namespace "avo:card"
7
+ source_root File.expand_path("templates", __dir__)
8
+ class_option :type, type: :string
9
+
10
+ def handle
11
+ raise "Invalid card type '#{options[:type]}'" unless card_types.include? options[:type]
12
+
13
+ template "cards/#{options[:type]}_card_sample.tt", "app/avo/cards/#{name.underscore}.rb"
14
+
15
+ if options[:type].to_sym == :partial
16
+ template "cards/partial_card_partial.tt", "app/views/avo/cards/_#{name.underscore}.html.erb"
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def card_types
23
+ %w[metric chartkick partial]
24
+ end
25
+ end
26
+ end
27
+ end
@@ -5,20 +5,20 @@ module Generators
5
5
  class FilterGenerator < NamedBaseGenerator
6
6
  source_root File.expand_path("templates", __dir__)
7
7
 
8
- class_option :multiple_select, type: :boolean
9
- class_option :select, type: :boolean
10
- class_option :text, type: :boolean
8
+ class_option :type, type: :string, default: "boolean"
11
9
 
12
10
  namespace "avo:filter"
13
11
 
14
12
  def create_resource_file
15
- type = "boolean"
13
+ raise "Invalid filter type '#{options[:type]}'" unless filter_types.include? options[:type]
16
14
 
17
- type = "multiple_select" if options[:multiple_select]
18
- type = "select" if options[:select]
19
- type = "text" if options[:text]
15
+ template "filters/#{options[:type]}_filter.tt", "app/avo/filters/#{singular_name}.rb"
16
+ end
17
+
18
+ private
20
19
 
21
- template "filters/#{type}_filter.tt", "app/avo/filters/#{singular_name}.rb"
20
+ def filter_types
21
+ %w[boolean select text multiple_select]
22
22
  end
23
23
  end
24
24
  end
@@ -1,5 +1,5 @@
1
1
  class Avo::Actions::<%= class_name.camelize %> < Avo::BaseAction
2
- self.name = "<%= name.underscore.humanize %>"
2
+ <%= configuration_options %>
3
3
  # self.visible = -> do
4
4
  # true
5
5
  # end
@@ -8,8 +8,8 @@ class Avo::Actions::<%= class_name.camelize %> < Avo::BaseAction
8
8
  # # Add Action fields here
9
9
  # end
10
10
 
11
- def handle(records:, fields:, current_user:, resource:)
12
- records.each do |model|
11
+ def handle(records:, fields:, current_user:, resource:, **args)
12
+ records.each do |record|
13
13
  # Do something with your records.
14
14
  end
15
15
  end
@@ -1,4 +1,4 @@
1
- class Avo::Cards::<%= class_name.camelize %> < AvoDashboards::ChartkickCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::ChartkickCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.chart_type = :area_chart
@@ -1,4 +1,4 @@
1
- class Avo::Cards::<%= class_name.camelize %> < AvoDashboards::ChartkickCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::ChartkickCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.chart_type = :area_chart
@@ -1,4 +1,4 @@
1
- class Avo::Cards::<%= class_name.camelize %> < AvoDashboards::MetricCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::MetricCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
 
@@ -1,4 +1,4 @@
1
- class Avo::Cards::<%= class_name.camelize %> < AvoDashboards::MetricCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::MetricCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  # self.description = "Some description"
@@ -1,4 +1,4 @@
1
- class Avo::Cards::<%= class_name.camelize %> < AvoDashboards::PartialCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::PartialCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.partial = "avo/cards/<%= name.underscore %>"
@@ -1,4 +1,4 @@
1
- class Avo::Cards::<%= class_name.camelize %> < AvoDashboards::PartialCard
1
+ class Avo::Cards::<%= class_name.camelize %> < Avo::Dashboards::PartialCard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.label = "<%= name.underscore.humanize %>"
4
4
  self.partial = "avo/cards/<%= name.underscore %>"
@@ -1,4 +1,4 @@
1
- class Avo::Dashboards::<%= class_name.camelize %> < AvoDashboards::BaseDashboard
1
+ class Avo::Dashboards::<%= class_name.camelize %> < Avo::Dashboards::BaseDashboard
2
2
  self.id = "<%= name.underscore %>"
3
3
  self.name = "<%= name.underscore.humanize %>"
4
4
  # self.description = "Tiny dashboard description"
@@ -1,4 +1,4 @@
1
- class Avo::Scopes::<%= class_name.camelize %> < AvoPro::Scopes::BaseScope
1
+ class Avo::Scopes::<%= class_name.camelize %> < Avo::Pro::Scopes::BaseScope
2
2
  self.name = "<%= name.underscore.humanize %>"
3
3
  self.description = "<%= name.underscore.humanize %>"
4
4
  self.scope = -> { query.all }
@@ -5,7 +5,7 @@
5
5
 
6
6
  desc "Runs the update command for all Avo gems."
7
7
  task "avo:update" do
8
- system "bundle update avo avo_pro avo_advanced avo_dashboards avo_filters avo_menu avo_upgrade"
8
+ system "bundle update avo avo-pro avo-advanced avo-dashboards avo_filters avo-menu avo_upgrade"
9
9
  end
10
10
 
11
11
  desc "Installs Avo assets and bundles them for when you want to use the GitHub repo in your app"
@@ -63,30 +63,3 @@ task "avo:gem_paths" do
63
63
  # avo:/Users/adrian/work/avocado/avo-3,avo_filters:/Users/adrian/work/avocado/advanced/avo_filters
64
64
  puts result
65
65
  end
66
-
67
- desc "Symlink registered gems in `./tmp/gems` so their views, etc. can be inspected by Tailwind CSS."
68
- task "avo:link" do
69
- Avo::App.boot
70
- abort Avo.plugin_manager.plugins.inspect
71
- if Dir.exist?("tmp/gems")
72
- puts "Removing previously linked gems."
73
- `rm -f tmp/gems/*`
74
- else
75
- if File.exist?("tmp/gems")
76
- raise "A file named `tmp/gems` already exists? It has to be removed before we can create the required directory."
77
- end
78
-
79
- puts "Creating 'tmp/gems' directory."
80
- `mkdir tmp/gems`
81
- end
82
-
83
- `touch tmp/gems/.keep`
84
-
85
- Avo.plugin_manager.plugins.each do |linked_gem|
86
- target = `bundle show #{linked_gem}`.chomp
87
- if target.present?
88
- puts "Linking '#{linked_gem}' to '#{target}'."
89
- `ln -s #{target} tmp/gems/#{linked_gem}`
90
- end
91
- end
92
- end
@@ -5781,11 +5781,6 @@ progress[value]::-moz-progress-bar{
5781
5781
  background-color:rgb(var(--color-primary-500))
5782
5782
  }
5783
5783
 
5784
- /*
5785
- Trix 1.3.1
5786
- Copyright © 2020 Basecamp, LLC
5787
- http://trix-editor.org/*/
5788
-
5789
5784
  trix-editor {
5790
5785
  border: 1px solid #bbb;
5791
5786
  border-radius: 3px;
@@ -5819,7 +5814,7 @@ trix-toolbar .trix-button-group:not(:first-child) {
5819
5814
  margin-left: 1.5vw;
5820
5815
  }
5821
5816
 
5822
- @media (max-device-width: 768px) {
5817
+ @media (max-width: 768px) {
5823
5818
  trix-toolbar .trix-button-group:not(:first-child) {
5824
5819
  margin-left: 0;
5825
5820
  }
@@ -5829,7 +5824,7 @@ trix-toolbar .trix-button-group-spacer {
5829
5824
  flex-grow: 1;
5830
5825
  }
5831
5826
 
5832
- @media (max-device-width: 768px) {
5827
+ @media (max-width: 768px) {
5833
5828
  trix-toolbar .trix-button-group-spacer {
5834
5829
  display: none;
5835
5830
  }
@@ -5868,7 +5863,7 @@ trix-toolbar .trix-button:disabled {
5868
5863
  color: rgba(0, 0, 0, 0.125);
5869
5864
  }
5870
5865
 
5871
- @media (max-device-width: 768px) {
5866
+ @media (max-width: 768px) {
5872
5867
  trix-toolbar .trix-button {
5873
5868
  letter-spacing: -0.01em;
5874
5869
  padding: 0 0.3em;
@@ -5883,7 +5878,7 @@ trix-toolbar .trix-button--icon {
5883
5878
  text-indent: -9999px;
5884
5879
  }
5885
5880
 
5886
- @media (max-device-width: 768px) {
5881
+ @media (max-width: 768px) {
5887
5882
  trix-toolbar .trix-button--icon {
5888
5883
  height: 2em;
5889
5884
  max-width: calc(0.8em + 3.5vw);
@@ -5904,7 +5899,7 @@ trix-toolbar .trix-button--icon::before {
5904
5899
  background-size: contain;
5905
5900
  }
5906
5901
 
5907
- @media (max-device-width: 768px) {
5902
+ @media (max-width: 768px) {
5908
5903
  trix-toolbar .trix-button--icon::before {
5909
5904
  right: 6%;
5910
5905
  left: 6%;
@@ -5920,61 +5915,61 @@ trix-toolbar .trix-button--icon:disabled::before {
5920
5915
  }
5921
5916
 
5922
5917
  trix-toolbar .trix-button--icon-attach::before {
5923
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M16.5%206v11.5a4%204%200%201%201-8%200V5a2.5%202.5%200%200%201%205%200v10.5a1%201%200%201%201-2%200V6H10v9.5a2.5%202.5%200%200%200%205%200V5a4%204%200%201%200-8%200v12.5a5.5%205.5%200%200%200%2011%200V6h-1.5z%22%2F%3E%3C%2Fsvg%3E);
5918
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M10.5%2018V7.5c0-2.25%203-2.25%203%200V18c0%204.125-6%204.125-6%200V7.5c0-6.375%209-6.375%209%200V18%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-miterlimit%3D%2210%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E");
5924
5919
  top: 8%;
5925
5920
  bottom: 4%;
5926
5921
  }
5927
5922
 
5928
5923
  trix-toolbar .trix-button--icon-bold::before {
5929
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M15.6%2011.8c1-.7%201.6-1.8%201.6-2.8a4%204%200%200%200-4-4H7v14h7c2.1%200%203.7-1.7%203.7-3.8%200-1.5-.8-2.8-2.1-3.4zM10%207.5h3a1.5%201.5%200%201%201%200%203h-3v-3zm3.5%209H10v-3h3.5a1.5%201.5%200%201%201%200%203z%22%2F%3E%3C%2Fsvg%3E);
5924
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6.522%2019.242a.5.5%200%200%201-.5-.5V5.35a.5.5%200%200%201%20.5-.5h5.783c1.347%200%202.46.345%203.24.982.783.64%201.216%201.562%201.216%202.683%200%201.13-.587%202.129-1.476%202.71a.35.35%200%200%200%20.049.613c1.259.56%202.101%201.742%202.101%203.22%200%201.282-.483%202.334-1.363%203.063-.876.726-2.132%201.12-3.66%201.12h-5.89ZM9.27%207.347v3.362h1.97c.766%200%201.347-.17%201.733-.464.38-.291.587-.716.587-1.27%200-.53-.183-.928-.513-1.198-.334-.273-.838-.43-1.505-.43H9.27Zm0%205.606v3.791h2.389c.832%200%201.448-.177%201.853-.497.399-.315.614-.786.614-1.423%200-.62-.22-1.077-.63-1.385-.418-.313-1.053-.486-1.905-.486H9.27Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5930
5925
  }
5931
5926
 
5932
5927
  trix-toolbar .trix-button--icon-italic::before {
5933
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M10%205v3h2.2l-3.4%208H6v3h8v-3h-2.2l3.4-8H18V5h-8z%22%2F%3E%3C%2Fsvg%3E);
5928
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M9%205h6.5v2h-2.23l-2.31%2010H13v2H6v-2h2.461l2.306-10H9V5Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5934
5929
  }
5935
5930
 
5936
5931
  trix-toolbar .trix-button--icon-link::before {
5937
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M9.88%2013.7a4.3%204.3%200%200%201%200-6.07l3.37-3.37a4.26%204.26%200%200%201%206.07%200%204.3%204.3%200%200%201%200%206.06l-1.96%201.72a.91.91%200%201%201-1.3-1.3l1.97-1.71a2.46%202.46%200%200%200-3.48-3.48l-3.38%203.37a2.46%202.46%200%200%200%200%203.48.91.91%200%201%201-1.3%201.3z%22%2F%3E%3Cpath%20d%3D%22M4.25%2019.46a4.3%204.3%200%200%201%200-6.07l1.93-1.9a.91.91%200%201%201%201.3%201.3l-1.93%201.9a2.46%202.46%200%200%200%203.48%203.48l3.37-3.38c.96-.96.96-2.52%200-3.48a.91.91%200%201%201%201.3-1.3%204.3%204.3%200%200%201%200%206.07l-3.38%203.38a4.26%204.26%200%200%201-6.07%200z%22%2F%3E%3C%2Fsvg%3E);
5932
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M18.948%205.258a4.337%204.337%200%200%200-6.108%200L11.217%206.87a.993.993%200%200%200%200%201.41c.392.39%201.027.39%201.418%200l1.623-1.613a2.323%202.323%200%200%201%203.271%200%202.29%202.29%200%200%201%200%203.251l-2.393%202.38a3.021%203.021%200%200%201-4.255%200l-.05-.049a1.007%201.007%200%200%200-1.418%200%20.993.993%200%200%200%200%201.41l.05.049a5.036%205.036%200%200%200%207.091%200l2.394-2.38a4.275%204.275%200%200%200%200-6.072Zm-13.683%2013.6a4.337%204.337%200%200%200%206.108%200l1.262-1.255a.993.993%200%200%200%200-1.41%201.007%201.007%200%200%200-1.418%200L9.954%2017.45a2.323%202.323%200%200%201-3.27%200%202.29%202.29%200%200%201%200-3.251l2.344-2.331a2.579%202.579%200%200%201%203.631%200c.392.39%201.027.39%201.419%200a.993.993%200%200%200%200-1.41%204.593%204.593%200%200%200-6.468%200l-2.345%202.33a4.275%204.275%200%200%200%200%206.072Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5938
5933
  }
5939
5934
 
5940
5935
  trix-toolbar .trix-button--icon-strike::before {
5941
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12.73%2014l.28.14c.26.15.45.3.57.44.12.14.18.3.18.5%200%20.3-.15.56-.44.75-.3.2-.76.3-1.39.3A13.52%2013.52%200%200%201%207%2014.95v3.37a10.64%2010.64%200%200%200%204.84.88c1.26%200%202.35-.19%203.28-.56.93-.37%201.64-.9%202.14-1.57s.74-1.45.74-2.32c0-.26-.02-.51-.06-.75h-5.21zm-5.5-4c-.08-.34-.12-.7-.12-1.1%200-1.29.52-2.3%201.58-3.02%201.05-.72%202.5-1.08%204.34-1.08%201.62%200%203.28.34%204.97%201l-1.3%202.93c-1.47-.6-2.73-.9-3.8-.9-.55%200-.96.08-1.2.26-.26.17-.38.38-.38.64%200%20.27.16.52.48.74.17.12.53.3%201.05.53H7.23zM3%2013h18v-2H3v2z%22%2F%3E%3C%2Fsvg%3E);
5936
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M6%2014.986c.088%202.647%202.246%204.258%205.635%204.258%203.496%200%205.713-1.728%205.713-4.463%200-.275-.02-.536-.062-.781h-3.461c.398.293.573.654.573%201.123%200%201.035-1.074%201.787-2.646%201.787-1.563%200-2.773-.762-2.91-1.924H6ZM6.432%2010h3.763c-.632-.314-.914-.715-.914-1.273%200-1.045.977-1.739%202.432-1.739%201.475%200%202.52.723%202.617%201.914h2.764c-.05-2.548-2.11-4.238-5.39-4.238-3.145%200-5.392%201.719-5.392%204.316%200%20.363.04.703.12%201.02ZM4%2011a1%201%200%201%200%200%202h15a1%201%200%201%200%200-2H4Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5942
5937
  }
5943
5938
 
5944
5939
  trix-toolbar .trix-button--icon-quote::before {
5945
- background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M6%2017h3l2-4V7H5v6h3zm8%200h3l2-4V7h-6v6h3z%22%2F%3E%3C%2Fsvg%3E);
5940
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M4.581%208.471c.44-.5%201.056-.834%201.758-.995C8.074%207.17%209.201%207.822%2010%208.752c1.354%201.578%201.33%203.555.394%205.277-.941%201.731-2.788%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.121-.49.16-.764.294-.286.567-.566.791-.835.222-.266.413-.54.524-.815.113-.28.156-.597.026-.908-.128-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.674-2.7c0-.905.283-1.59.72-2.088Zm9.419%200c.44-.5%201.055-.834%201.758-.995%201.734-.306%202.862.346%203.66%201.276%201.355%201.578%201.33%203.555.395%205.277-.941%201.731-2.789%203.163-4.988%203.56a.622.622%200%200%201-.653-.317c-.113-.205-.122-.49.16-.764.294-.286.567-.566.791-.835.222-.266.412-.54.523-.815.114-.28.157-.597.026-.908-.127-.303-.39-.524-.72-.69a3.02%203.02%200%200%201-1.672-2.701c0-.905.283-1.59.72-2.088Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5946
5941
  }
5947
5942
 
5948
5943
  trix-toolbar .trix-button--icon-heading-1::before {
5949
- background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12%209v3H9v7H6v-7H3V9h9zM8%204h14v3h-6v12h-3V7H8V4z%22%2F%3E%3C%2Fsvg%3E);
5944
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21.5%207.5v-3h-12v3H14v13h3v-13h4.5ZM9%2013.5h3.5v-3h-10v3H6v7h3v-7Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5950
5945
  }
5951
5946
 
5952
5947
  trix-toolbar .trix-button--icon-code::before {
5953
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M18.2%2012L15%2015.2l1.4%201.4L21%2012l-4.6-4.6L15%208.8l3.2%203.2zM5.8%2012L9%208.8%207.6%207.4%203%2012l4.6%204.6L9%2015.2%205.8%2012z%22%2F%3E%3C%2Fsvg%3E);
5948
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3.293%2011.293a1%201%200%200%200%200%201.414l4%204a1%201%200%201%200%201.414-1.414L5.414%2012l3.293-3.293a1%201%200%200%200-1.414-1.414l-4%204Zm13.414%205.414%204-4a1%201%200%200%200%200-1.414l-4-4a1%201%200%201%200-1.414%201.414L18.586%2012l-3.293%203.293a1%201%200%200%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5954
5949
  }
5955
5950
 
5956
5951
  trix-toolbar .trix-button--icon-bullet-list::before {
5957
- background-image: url(data:image/svg+xml,%3Csvg%20version%3D%221%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M4%204a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm0%206a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm0%206a2%202%200%201%200%200%204%202%202%200%200%200%200-4zm4%203h14v-2H8v2zm0-6h14v-2H8v2zm0-8v2h14V5H8z%22%2F%3E%3C%2Fsvg%3E);
5952
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%207.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203ZM8%206a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-2.5-5a1.5%201.5%200%201%201-3%200%201.5%201.5%200%200%201%203%200ZM5%2019.5a1.5%201.5%200%201%200%200-3%201.5%201.5%200%200%200%200%203Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5958
5953
  }
5959
5954
 
5960
5955
  trix-toolbar .trix-button--icon-number-list::before {
5961
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M2%2017h2v.5H3v1h1v.5H2v1h3v-4H2v1zm1-9h1V4H2v1h1v3zm-1%203h1.8L2%2013.1v.9h3v-1H3.2L5%2010.9V10H2v1zm5-6v2h14V5H7zm0%2014h14v-2H7v2zm0-6h14v-2H7v2z%22%2F%3E%3C%2Fsvg%3E);
5956
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%204h2v4H4V5H3V4Zm5%202a1%201%200%200%201%201-1h11a1%201%200%201%201%200%202H9a1%201%200%200%201-1-1Zm1%205a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm0%206a1%201%200%201%200%200%202h11a1%201%200%201%200%200-2H9Zm-3.5-7H6v1l-1.5%202H6v1H3v-1l1.667-2H3v-1h2.5ZM3%2017v-1h3v4H3v-1h2v-.5H4v-1h1V17H3Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5962
5957
  }
5963
5958
 
5964
5959
  trix-toolbar .trix-button--icon-undo::before {
5965
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M12.5%208c-2.6%200-5%201-6.9%202.6L2%207v9h9l-3.6-3.6A8%208%200%200%201%2020%2016l2.4-.8a10.5%2010.5%200%200%200-10-7.2z%22%2F%3E%3C%2Fsvg%3E);
5960
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M3%2014a1%201%200%200%200%201%201h6a1%201%200%201%200%200-2H6.257c2.247-2.764%205.151-3.668%207.579-3.264%202.589.432%204.739%202.356%205.174%205.405a1%201%200%200%200%201.98-.283c-.564-3.95-3.415-6.526-6.825-7.095C11.084%207.25%207.63%208.377%205%2011.39V8a1%201%200%200%200-2%200v6Zm2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5966
5961
  }
5967
5962
 
5968
5963
  trix-toolbar .trix-button--icon-redo::before {
5969
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M18.4%2010.6a10.5%2010.5%200%200%200-16.9%204.6L4%2016a8%208%200%200%201%2012.7-3.6L13%2016h9V7l-3.6%203.6z%22%2F%3E%3C%2Fsvg%3E);
5964
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M21%2014a1%201%200%200%201-1%201h-6a1%201%200%201%201%200-2h3.743c-2.247-2.764-5.151-3.668-7.579-3.264-2.589.432-4.739%202.356-5.174%205.405a1%201%200%200%201-1.98-.283c.564-3.95%203.415-6.526%206.826-7.095%203.08-.513%206.534.614%209.164%203.626V8a1%201%200%201%201%202%200v6Zm-2-1Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5970
5965
  }
5971
5966
 
5972
5967
  trix-toolbar .trix-button--icon-decrease-nesting-level::before {
5973
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M3%2019h19v-2H3v2zm7-6h12v-2H10v2zm-8.3-.3l2.8%202.9L6%2014.2%204%2012l2-2-1.4-1.5L1%2012l.7.7zM3%205v2h19V5H3z%22%2F%3E%3C%2Fsvg%3E);
5968
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-3.707-5.707a1%201%200%200%200%200%201.414l2%202a1%201%200%201%200%201.414-1.414L4.414%2012l1.293-1.293a1%201%200%200%200-1.414-1.414l-2%202Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5974
5969
  }
5975
5970
 
5976
5971
  trix-toolbar .trix-button--icon-increase-nesting-level::before {
5977
- background-image: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2224%22%20height%3D%2224%22%3E%3Cpath%20d%3D%22M3%2019h19v-2H3v2zm7-6h12v-2H10v2zm-6.9-1L1%2014.2l1.4%201.4L6%2012l-.7-.7-2.8-2.8L1%209.9%203.1%2012zM3%205v2h19V5H3z%22%2F%3E%3C%2Fsvg%3E);
5972
+ background-image: url("data:image/svg+xml,%3Csvg%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M5%206a1%201%200%200%201%201-1h12a1%201%200%201%201%200%202H6a1%201%200%200%201-1-1Zm4%205a1%201%200%201%200%200%202h9a1%201%200%201%200%200-2H9Zm-3%206a1%201%200%201%200%200%202h12a1%201%200%201%200%200-2H6Zm-2.293-2.293%202-2a1%201%200%200%200%200-1.414l-2-2a1%201%200%201%200-1.414%201.414L3.586%2012l-1.293%201.293a1%201%200%201%200%201.414%201.414Z%22%20fill%3D%22%23000%22%2F%3E%3C%2Fsvg%3E");
5978
5973
  }
5979
5974
 
5980
5975
  trix-toolbar .trix-dialogs {
@@ -6048,7 +6043,7 @@ trix-editor [data-trix-mutable] ::selection {
6048
6043
  background: none;
6049
6044
  }
6050
6045
 
6051
- trix-editor [data-trix-mutable].attachment__caption-editor:focus::selection {
6046
+ trix-editor .attachment__caption-editor:focus[data-trix-mutable]::selection {
6052
6047
  background: highlight;
6053
6048
  }
6054
6049
 
@@ -6167,7 +6162,7 @@ trix-editor .trix-button--remove::before {
6167
6162
  left: 0;
6168
6163
  opacity: 0.7;
6169
6164
  content: "";
6170
- background-image: url(data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.4L17.6%205%2012%2010.6%206.4%205%205%206.4l5.6%205.6L5%2017.6%206.4%2019l5.6-5.6%205.6%205.6%201.4-1.4-5.6-5.6z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E);
6165
+ background-image: url("data:image/svg+xml,%3Csvg%20height%3D%2224%22%20width%3D%2224%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M19%206.41%2017.59%205%2012%2010.59%206.41%205%205%206.41%2010.59%2012%205%2017.59%206.41%2019%2012%2013.41%2017.59%2019%2019%2017.59%2013.41%2012z%22%2F%3E%3Cpath%20d%3D%22M0%200h24v24H0z%22%20fill%3D%22none%22%2F%3E%3C%2Fsvg%3E");
6171
6166
  background-position: center;
6172
6167
  background-repeat: no-repeat;
6173
6168
  background-size: 90%;
@@ -6287,7 +6282,7 @@ trix-editor .attachment__metadata .attachment__size {
6287
6282
  }
6288
6283
 
6289
6284
  .trix-content .attachment__caption .attachment__name + .attachment__size::before {
6290
- content: ' · ';
6285
+ content: ' \2022 ';
6291
6286
  }
6292
6287
 
6293
6288
  .trix-content .attachment--preview {
@@ -6808,10 +6803,6 @@ trix-toolbar .trix-button-group:not(:first-child){
6808
6803
  margin-bottom:1rem
6809
6804
  }
6810
6805
 
6811
- .me-1{
6812
- margin-inline-end:0.25rem
6813
- }
6814
-
6815
6806
  .ml-1{
6816
6807
  margin-left:0.25rem
6817
6808
  }
@@ -7296,6 +7287,10 @@ trix-toolbar .trix-button-group:not(:first-child){
7296
7287
  flex-grow:0
7297
7288
  }
7298
7289
 
7290
+ .grow{
7291
+ flex-grow:1
7292
+ }
7293
+
7299
7294
  .border-collapse{
7300
7295
  border-collapse:collapse
7301
7296
  }