avo 1.0.4 → 1.2.3

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +5 -1
  3. data/Gemfile.lock +11 -3
  4. data/README.md +3 -1
  5. data/app/components/avo/edit/fields/belongs_to_field_component.html.erb +0 -1
  6. data/app/components/avo/edit/fields/belongs_to_field_component.rb +7 -0
  7. data/app/components/avo/index/grid_cover_empty_state_component.html.erb +3 -0
  8. data/app/components/avo/index/grid_cover_empty_state_component.rb +4 -0
  9. data/app/components/avo/index/grid_item_component.html.erb +4 -4
  10. data/app/components/avo/modal_component.rb +2 -1
  11. data/app/components/avo/panel_component.html.erb +7 -2
  12. data/app/components/avo/panel_component.rb +4 -1
  13. data/app/components/avo/show/fields/has_one_field_component.html.erb +3 -3
  14. data/app/components/avo/views/resource_edit_component.html.erb +3 -3
  15. data/app/components/avo/views/resource_index_component.html.erb +4 -4
  16. data/app/components/avo/views/resource_new_component.html.erb +3 -3
  17. data/app/components/avo/views/resource_show_component.html.erb +2 -2
  18. data/app/controllers/avo/application_controller.rb +12 -8
  19. data/app/controllers/avo/base_controller.rb +16 -0
  20. data/app/controllers/avo/home_controller.rb +2 -0
  21. data/app/helpers/avo/application_helper.rb +0 -30
  22. data/app/packs/entrypoints/application.css +1 -0
  23. data/app/packs/stylesheets/breadcrumbs.css +12 -0
  24. data/app/packs/svgs/chevron-right.svg +3 -0
  25. data/app/views/avo/actions/show.html.erb +2 -2
  26. data/app/views/avo/home/index.html.erb +3 -3
  27. data/{lib/generators/avo/templates → app/views/avo}/partials/_scripts.html.erb +0 -0
  28. data/app/views/avo/relations/new.html.erb +2 -2
  29. data/app/views/avo/sidebar/_sidebar.html.erb +12 -3
  30. data/app/views/layouts/avo/application.html.erb +5 -4
  31. data/avo.gemspec +2 -0
  32. data/lib/avo/app.rb +28 -9
  33. data/lib/avo/base_resource.rb +12 -12
  34. data/lib/avo/configuration.rb +11 -1
  35. data/lib/avo/fields/belongs_to_field.rb +0 -2
  36. data/lib/avo/grid_collector.rb +1 -1
  37. data/lib/avo/version.rb +1 -1
  38. data/lib/generators/avo/eject_generator.rb +55 -0
  39. data/lib/generators/avo/templates/tool/controller.tt +2 -0
  40. data/lib/generators/avo/templates/tool/sidebar_item.tt +1 -0
  41. data/lib/generators/avo/templates/tool/view.tt +27 -0
  42. data/lib/generators/avo/tool_generator.rb +62 -0
  43. data/public/avo-packs/css/{application-9d115b7e.css → application-13cc02fb.css} +41 -7
  44. data/public/avo-packs/css/application-13cc02fb.css.br +0 -0
  45. data/public/avo-packs/css/application-13cc02fb.css.gz +0 -0
  46. data/public/avo-packs/css/application-13cc02fb.css.map +1 -0
  47. data/public/avo-packs/css/application-13cc02fb.css.map.br +0 -0
  48. data/public/avo-packs/css/application-13cc02fb.css.map.gz +0 -0
  49. data/public/avo-packs/manifest.json +7 -7
  50. metadata +46 -13
  51. data/lib/generators/avo/partials_generator.rb +0 -14
  52. data/lib/generators/avo/templates/partials/_footer.html.erb +0 -3
  53. data/lib/generators/avo/templates/partials/_header.html.erb +0 -1
  54. data/lib/generators/avo/templates/partials/_logo.html.erb +0 -1
  55. data/public/avo-packs/css/application-9d115b7e.css.br +0 -0
  56. data/public/avo-packs/css/application-9d115b7e.css.gz +0 -0
  57. data/public/avo-packs/css/application-9d115b7e.css.map +0 -1
  58. data/public/avo-packs/css/application-9d115b7e.css.map.br +0 -0
  59. data/public/avo-packs/css/application-9d115b7e.css.map.gz +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f9541820f46494f3f993a870b717fb817ecaa83f4bd8cc6aa8b9e80d586a0cb
4
- data.tar.gz: f9bd42e6372e23153ac57aefb13373cdb9662f74bf410ee82e25f7d482c64626
3
+ metadata.gz: 3cf214fa4a6587a8dadc863a17557bce0aba6d6b24f6ef045ecce5c199c050d3
4
+ data.tar.gz: d50f86169f19c37801f8c530bbcab973fc36da1e8125e1de6d1b3e1ceb3fd733
5
5
  SHA512:
6
- metadata.gz: 49d6e0faa8b0ac9386702b11cf7301f993211c89bb4f8368b8c6fefaa09167c492d9f5bc6f55cf622854d1c56231924dfa4fd78b9664cab49bd09cb0a56d33da
7
- data.tar.gz: ba3295cd86157590af2b60bd364089210aa8e8b516b22b7cd4e8ddf09b6b9ca4e700216d099cf2722973e6125aa876c3f349b56c17ecfc00ae4457e5f3d42d2e
6
+ metadata.gz: 11d5c22e4ba0dbe68b911a1ae57151196ee18a928461d474eea8492705f84d00b7899ab5663e0e808f2bfdddd0b5fce08a440851537ee81df48bc7e46a757d4d
7
+ data.tar.gz: 4d24083c622caa053ae75ed27cf2ae9b18b96273171034aee5a73892ace499b83286fa6bcf51062796f915f16a34a8bf8c228b970c30278d24b46193c9f04643
data/Gemfile CHANGED
@@ -52,7 +52,7 @@ gem "byebug", platforms: [:mri, :mingw, :x64_mingw]
52
52
  gem "dotenv-rails"
53
53
  # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
54
54
  gem "web-console", ">= 3.3.0"
55
- gem "listen", ">= 3.3.0"
55
+ gem "listen", ">= 3.5.1"
56
56
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
57
57
  gem "spring"
58
58
 
@@ -119,3 +119,7 @@ gem "view_component", require: "view_component/engine"
119
119
  gem "addressable"
120
120
 
121
121
  gem "appraisal"
122
+
123
+ gem 'meta-tags'
124
+
125
+ gem 'breadcrumbs_on_rails'
data/Gemfile.lock CHANGED
@@ -1,13 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- avo (1.0.4)
4
+ avo (1.2.3)
5
5
  active_link_to
6
6
  addressable
7
+ breadcrumbs_on_rails
7
8
  countries
8
9
  hotwire-rails
9
10
  httparty
10
11
  image_processing
12
+ meta-tags
11
13
  pagy
12
14
  pundit
13
15
  rails (>= 6.0)
@@ -87,6 +89,8 @@ GEM
87
89
  bindex (0.8.1)
88
90
  bootsnap (1.4.8)
89
91
  msgpack (~> 1.0)
92
+ breadcrumbs_on_rails (4.0.0)
93
+ rails (>= 5.0)
90
94
  builder (3.2.4)
91
95
  bump (0.9.0)
92
96
  byebug (11.1.3)
@@ -161,6 +165,8 @@ GEM
161
165
  mail (2.7.1)
162
166
  mini_mime (>= 0.1.1)
163
167
  marcel (1.0.0)
168
+ meta-tags (2.14.0)
169
+ actionpack (>= 3.2.0, < 6.2)
164
170
  method_source (1.0.0)
165
171
  mime-types (3.3.1)
166
172
  mime-types-data (~> 3.2015)
@@ -356,6 +362,7 @@ DEPENDENCIES
356
362
  appraisal
357
363
  avo!
358
364
  bootsnap (>= 1.4.2)
365
+ breadcrumbs_on_rails
359
366
  bump
360
367
  byebug
361
368
  capybara (>= 2.15)
@@ -372,7 +379,8 @@ DEPENDENCIES
372
379
  image_processing (~> 1.2)
373
380
  iso
374
381
  jbuilder (~> 2.7)
375
- listen (>= 3.3.0)
382
+ listen (>= 3.5.1)
383
+ meta-tags
376
384
  pg (>= 0.18, < 2.0)
377
385
  puma (~> 4.3.5)
378
386
  pundit
@@ -397,4 +405,4 @@ DEPENDENCIES
397
405
  zeitwerk (~> 2.3)
398
406
 
399
407
  BUNDLED WITH
400
- 2.2.15
408
+ 2.2.5
data/README.md CHANGED
@@ -15,10 +15,12 @@ Avo is a beautiful next-generation framework that empowers you, the developer, t
15
15
  **Documentation**: [docs.avohq.io](https://docs.avohq.io)\
16
16
  **Twitter**: [avo_hq](https://twitter.com/avo_hq)\
17
17
  **Community chat**: [discord](https://discord.gg/pkTF6y8)\
18
- **Issue tracker**: [GitHub issues](http://github.com/avo-hq/avo/issues)
18
+ **Issue tracker**: [GitHub issues](http://github.com/avo-hq/avo/issues)\
19
+ **Discussions and feature requests**: [GitHub issues](http://github.com/avo-hq/avo/discussions)
19
20
 
20
21
  ## Features
21
22
 
23
+ - **Powered by Hotwire** - Rails ❤️ Hotwire
22
24
  - **Code driven configuration** - Configure your Rails dashboard entirely by writing Ruby code.
23
25
  - **Resource Management** - Create a CRUD interface for Active Record from one command. No more copy-pasting view and controller files around.
24
26
  - **Active Storage support** - Amazingly easy, **one-line**, single or multi-file integration with **ActiveStorage**.
@@ -1,5 +1,4 @@
1
1
  <%= edit_field_wrapper field: @field, index: @index, form: @form, resource: @resource, displayed_in_modal: @displayed_in_modal do %>
2
- <% disabled = @field.readonly || params[:via_resource_id] %>
3
2
  <%= @form.select @field.foreign_key, @field.options.map { |o| [o[:label], o[:value]] },
4
3
  {
5
4
  include_blank: @field.placeholder,
@@ -1,4 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Avo::Edit::Fields::BelongsToFieldComponent < Avo::Edit::Fields::FieldComponent
4
+ def disabled
5
+ return true if @field.readonly
6
+ return true if @field.target_resource.model_class.name == params[:via_resource_class]
7
+ return true if @field.id.to_s == params[:via_relation].to_s
8
+
9
+ false
10
+ end
4
11
  end
@@ -0,0 +1,3 @@
1
+ <div class="absolute bg-gray-100 w-full h-full">
2
+ <%= helpers.svg 'avocado', class: 'relative transform -translate-x-1/2 -translate-y-1/2 h-20 text-gray-400 inset-auto top-1/2 left-1/2' %>
3
+ </div>
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Avo::Index::GridCoverEmptyStateComponent < ViewComponent::Base
4
+ end
@@ -4,7 +4,9 @@
4
4
  <div class="relative w-full pb-3/4 rounded-t-xl overflow-hidden">
5
5
  <%== item_selector_input floating: true, size: :lg %>
6
6
 
7
- <% if cover.respond_to? :to_image %>
7
+ <% if cover.blank? %>
8
+ <%= render Avo::Index::GridCoverEmptyStateComponent.new %>
9
+ <% elsif cover.respond_to? :to_image %>
8
10
  <%= link_to_if cover.link_to_resource, image_tag(cover.to_image, class: 'absolute h-full w-full object-cover'), helpers.resource_path(@resource.model), class: 'absolute h-full w-full object-cover', title: title.value %>
9
11
  <% elsif cover.type == 'file' %>
10
12
  <% if cover.value.attached? && cover.value.representable? %>
@@ -18,9 +20,7 @@
18
20
  <% if cover.value.present? %>
19
21
  <%= link_to_if cover.link_to_resource, image_tag(cover.value, class: 'absolute h-full w-full object-cover'), helpers.resource_path(@resource.model), class: 'absolute h-full w-full object-cover', title: title.value %>
20
22
  <% else %>
21
- <div class="absolute bg-gray-100 w-full h-full">
22
- <%= helpers.svg 'avocado', class: 'relative transform -translate-x-1/2 -translate-y-1/2 h-20 text-gray-400 inset-auto top-1/2 left-1/2' %>
23
- </div>
23
+ <%= render Avo::Index::GridCoverEmptyStateComponent.new %>
24
24
  <% end %>
25
25
  <% end %>
26
26
  </div>
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Avo::ModalComponent < ViewComponent::Base
4
- with_content_areas :heading, :controls
4
+ renders_one :heading
5
+ renders_one :controls
5
6
  end
@@ -1,7 +1,12 @@
1
1
  <div <%== data_attributes %>>
2
2
  <div class="mb-6">
3
- <div class="text-2xl tracking-normal font-bold text-gray-800 truncate mb-3">
4
- <%= @title %>
3
+ <div>
4
+ <div class="breadcrumbs">
5
+ <%= helpers.render_breadcrumbs(separator: helpers.svg('chevron-right', class: 'inline-block h-3 stroke-current relative top-[-1px] ml-1' )) if Avo.configuration.display_breadcrumbs %>
6
+ </div>
7
+ <div class="text-2xl tracking-normal font-bold text-gray-800 truncate">
8
+ <%= @title %>
9
+ </div>
5
10
  </div>
6
11
 
7
12
  <div>
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class Avo::PanelComponent < ViewComponent::Base
4
- with_content_areas :tools, :body, :bare_content, :footer
4
+ renders_one :tools
5
+ renders_one :body
6
+ renders_one :bare_content
7
+ renders_one :footer
5
8
 
6
9
  def initialize(title: nil, body_classes: nil, data: {})
7
10
  @title = title
@@ -3,14 +3,14 @@
3
3
  <%= render(Avo::LoadingComponent.new(title: @field.name)) %>
4
4
  </turbo-frame>
5
5
  <% else %>
6
- <%= panel(title: @field.id.capitalize) do |c| %>
7
- <% c.with :tools do %>
6
+ <%= render Avo::PanelComponent.new(title: @field.id.capitalize) do |c| %>
7
+ <% c.tools do %>
8
8
  <%= a_link helpers.resource_attach_path(@resource.model.model_name.route_key, @resource.model.id, @field.id), color: 'indigo', 'data-turbo-frame': 'attach_modal' do %>
9
9
  <%= svg 'view-grid-add' %> <%= t('avo.attach_item', item: @field.id).capitalize %>
10
10
  <% end %>
11
11
  <% end %>
12
12
 
13
- <% c.with :body do %>
13
+ <% c.body do %>
14
14
  <div class="py-8 flex justify-center items-center">
15
15
  <%= empty_state @field.id %>
16
16
  </div>
@@ -3,8 +3,8 @@
3
3
  <%= form_with model: @resource.model, url: helpers.resource_path(@resource.model), method: :put, multipart: true do |form| %>
4
4
  <%= hidden_field_tag :referrer, back_path if params[:via_resource_class] %>
5
5
 
6
- <%= panel(title: resource_panel[:name]) do |component| %>
7
- <% component.with :tools do %>
6
+ <%= render Avo::PanelComponent.new(title: resource_panel[:name]) do |c| %>
7
+ <% c.tools do %>
8
8
  <div class="flex justify-end space-x-2">
9
9
  <%= a_link back_path do %>
10
10
  <%= helpers.svg 'arrow-left' %> <%= t('avo.cancel').capitalize %>
@@ -18,7 +18,7 @@
18
18
  </div>
19
19
  <% end %>
20
20
 
21
- <% component.with :body do %>
21
+ <% c.body do %>
22
22
  <% @resource.get_fields.each_with_index do |field, index| %>
23
23
  <%= edit_field field, index, @resource, form unless field.computed %>
24
24
  <% end %>
@@ -1,5 +1,5 @@
1
- <%= panel title: title, body_classes: 'py-4', data: { component: 'resources-index' } do |c| %>
2
- <% c.with :tools do %>
1
+ <%= render Avo::PanelComponent.new title: title, body_classes: 'py-4', data: { component: 'resources-index' } do |c| %>
2
+ <% c.tools do %>
3
3
  <%= render 'actions' if @actions.present? %>
4
4
 
5
5
  <% if can_create? %>
@@ -21,7 +21,7 @@
21
21
  <% end %>
22
22
  <% end %>
23
23
 
24
- <% c.with :body do %>
24
+ <% c.body do %>
25
25
  <div class="flex justify-between py-6 min-h-24"
26
26
  data-selected-resources-name="<%= @resource.plural_name.downcase %>"
27
27
  data-selected-resources="[]"
@@ -51,7 +51,7 @@
51
51
  <% end %>
52
52
 
53
53
  <% if view_type.to_sym == :grid %>
54
- <% c.with :bare_content do %>
54
+ <% c.bare_content do %>
55
55
  <%= render Avo::Index::ResourceGridComponent.new(resources: @resources, resource: @resource, reflection: @reflection, parent_model: @parent_model) %>
56
56
 
57
57
  <div class="bg-white rounded-xl shadow-xl mt-8 py-6">
@@ -1,8 +1,8 @@
1
1
  <div>
2
2
  <% @resource.panels.each do |resource_panel| %>
3
3
  <%= form_with model: @resource.model, url: helpers.resources_path(@resource.model, via_relation_class: params[:via_relation_class], via_resource_id: params[:via_resource_id]), local: true, multipart: true do |form| %>
4
- <%= panel(title: resource_panel[:name]) do |component| %>
5
- <% component.with :tools do %>
4
+ <%= render Avo::PanelComponent.new(title: resource_panel[:name]) do |c| %>
5
+ <% c.tools do %>
6
6
  <div class="flex justify-end space-x-2">
7
7
  <%= a_link back_path do %>
8
8
  <%= svg 'arrow-left' %> <%= t('avo.cancel').capitalize %>
@@ -14,7 +14,7 @@
14
14
  </div>
15
15
  <% end %>
16
16
 
17
- <% component.with :body do %>
17
+ <% c.body do %>
18
18
  <% @resource.get_fields.each_with_index do |field, index| %>
19
19
  <%= edit_field field, index, @resource, form unless field.computed %>
20
20
  <% end %>
@@ -4,7 +4,7 @@
4
4
  >
5
5
  <% @resource.panels.each do |resource_panel| %>
6
6
  <%= render(Avo::PanelComponent.new(title: resource_panel[:name])) do |c| %>
7
- <% c.with :tools do %>
7
+ <% c.tools do %>
8
8
  <% if resource_panel[:name] == @resource.default_panel_name %>
9
9
  <%= render 'actions' %>
10
10
 
@@ -44,7 +44,7 @@
44
44
  <% end %>
45
45
  <% end %>
46
46
 
47
- <% c.with :body do %>
47
+ <% c.body do %>
48
48
  <% if fields_by_panel[resource_panel[:name]].present? %>
49
49
  <% fields_by_panel[resource_panel[:name]].each_with_index do |field, index| %>
50
50
  <%= show_field field, index, @resource %>
@@ -7,6 +7,7 @@ module Avo
7
7
  before_action :set_authorization
8
8
  before_action :_authenticate!
9
9
  before_action :set_container_classes
10
+ before_action :add_initial_breadcrumbs
10
11
 
11
12
  rescue_from Pundit::NotAuthorizedError, with: :render_unauthorized
12
13
  rescue_from ActiveRecord::RecordInvalid, with: :exception_logger
@@ -51,7 +52,7 @@ module Avo
51
52
  existing_params = Addressable::URI.parse(request.fullpath).query_values.symbolize_keys
52
53
  end
53
54
  rescue; end
54
- send :"resources_#{model.model_name.route_key}_path", **existing_params, **args
55
+ avo.send :"resources_#{model.model_name.route_key}_path", **existing_params, **args
55
56
  end
56
57
 
57
58
  def related_resources_path(parent_model, model, keep_query_params: false, **args)
@@ -70,9 +71,9 @@ module Avo
70
71
  end
71
72
 
72
73
  def resource_path(model = nil, resource_id: nil, keep_query_params: false, **args)
73
- return send :"resources_#{model.model_name.route_key.singularize}_path", resource_id, **args if resource_id.present?
74
+ return avo.send :"resources_#{model.model_name.route_key.singularize}_path", resource_id, **args if resource_id.present?
74
75
 
75
- send :"resources_#{model.model_name.route_key.singularize}_path", model, **args
76
+ avo.send :"resources_#{model.model_name.route_key.singularize}_path", model, **args
76
77
  end
77
78
 
78
79
  def resource_attach_path(model_name, model_id, related_name, related_id = nil)
@@ -92,11 +93,11 @@ module Avo
92
93
  end
93
94
 
94
95
  def new_resource_path(model, **args)
95
- send :"new_resources_#{model.model_name.route_key.singularize}_path", **args
96
+ avo.send :"new_resources_#{model.model_name.route_key.singularize}_path", **args
96
97
  end
97
98
 
98
99
  def edit_resource_path(model, **args)
99
- send :"edit_resources_#{model.model_name.route_key.singularize}_path", model, **args
100
+ avo.send :"edit_resources_#{model.model_name.route_key.singularize}_path", model, **args
100
101
  end
101
102
 
102
103
  private
@@ -110,6 +111,8 @@ module Avo
110
111
  end
111
112
 
112
113
  def set_resource
114
+ raise ActionController::RoutingError.new "No route matches" if resource.nil?
115
+
113
116
  @resource = resource.hydrate(params: params)
114
117
  end
115
118
 
@@ -182,8 +185,6 @@ module Avo
182
185
  def eager_load_files(resource, query)
183
186
  if resource.attached_file_fields.present?
184
187
  resource.attached_file_fields.map do |field|
185
- # abort "#{field.pluralize}".inspect
186
- # abort field.class.inspect
187
188
  attachment = case field.class.to_s
188
189
  when "Avo::Fields::FileField"
189
190
  "attachment"
@@ -194,7 +195,6 @@ module Avo
194
195
  end
195
196
 
196
197
  return query.eager_load "#{field.id}_#{attachment}": :blob
197
- # return query.send :"with_attached_#{field}"
198
198
  end
199
199
  end
200
200
 
@@ -241,5 +241,9 @@ module Avo
241
241
 
242
242
  @container_classes = contain ? "2xl:container 2xl:mx-auto" : ""
243
243
  end
244
+
245
+ def add_initial_breadcrumbs
246
+ instance_eval(&Avo.configuration.initial_breadcrumbs) if Avo.configuration.initial_breadcrumbs.present?
247
+ end
244
248
  end
245
249
  end
@@ -9,6 +9,9 @@ module Avo
9
9
  before_action :set_model, only: [:show, :edit, :destroy, :update]
10
10
 
11
11
  def index
12
+ @page_title = resource_name.humanize
13
+ add_breadcrumb resource_name.humanize
14
+
12
15
  set_index_params
13
16
  set_filters
14
17
  set_actions
@@ -48,15 +51,28 @@ module Avo
48
51
  set_actions
49
52
 
50
53
  @resource = @resource.hydrate(model: @model, view: :show, user: _current_user, params: params)
54
+
55
+ @page_title = @resource.default_panel_name
56
+ add_breadcrumb resource_name.humanize, resources_path(@resource.model_class)
57
+ add_breadcrumb @resource.model_title
51
58
  end
52
59
 
53
60
  def new
54
61
  @model = @resource.model_class.new
55
62
  @resource = @resource.hydrate(model: @model, view: :new, user: _current_user)
63
+
64
+ @page_title = @resource.default_panel_name
65
+ add_breadcrumb resource_name.humanize, resources_path(@resource.model_class)
66
+ add_breadcrumb t("avo.new").humanize
56
67
  end
57
68
 
58
69
  def edit
59
70
  @resource = @resource.hydrate(model: @model, view: :edit, user: _current_user)
71
+
72
+ @page_title = @resource.default_panel_name
73
+ add_breadcrumb resource_name.humanize, resources_path(@resource.model_class)
74
+ add_breadcrumb @resource.model_title, resource_path(@resource.model)
75
+ add_breadcrumb t("avo.edit").humanize
60
76
  end
61
77
 
62
78
  def create
@@ -3,6 +3,8 @@ require_dependency "avo/application_controller"
3
3
  module Avo
4
4
  class HomeController < ApplicationController
5
5
  def index
6
+ @page_title = "Get started"
7
+
6
8
  unless Rails.env.development?
7
9
  redirect_to resources_path Avo::App.get_resources.min_by { |resource| resource.route_key }.model_class
8
10
  end
@@ -7,30 +7,6 @@ module Avo
7
7
  Avo.webpacker
8
8
  end
9
9
 
10
- def render_logo
11
- render partial: "vendor/avo/partials/logo"
12
- rescue
13
- render partial: "avo/partials/logo"
14
- end
15
-
16
- def render_header
17
- render partial: "vendor/avo/partials/header"
18
- rescue
19
- render partial: "avo/partials/header"
20
- end
21
-
22
- def render_footer
23
- render partial: "vendor/avo/partials/footer"
24
- rescue
25
- render partial: "avo/partials/footer"
26
- end
27
-
28
- def render_scripts
29
- render partial: "vendor/avo/partials/scripts"
30
- rescue
31
- ""
32
- end
33
-
34
10
  def render_license_warnings
35
11
  render partial: "avo/sidebar/license_warnings", locals: {
36
12
  license: Avo::App.license.properties
@@ -45,12 +21,6 @@ module Avo
45
21
  }
46
22
  end
47
23
 
48
- def panel(**args, &block)
49
- render(Avo::PanelComponent.new(**args)) do |component|
50
- capture(component, &block)
51
- end
52
- end
53
-
54
24
  def empty_state(resource_name)
55
25
  render partial: "avo/partials/empty_state", locals: {resource_name: resource_name}
56
26
  end