avo 2.14.2 → 2.14.3.pre.1.branding

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -1
  3. data/app/assets/stylesheets/avo.css +1 -34
  4. data/app/assets/stylesheets/css/fields/progress.css +3 -3
  5. data/app/assets/stylesheets/css/pagination.css +0 -4
  6. data/app/assets/stylesheets/css/search.css +1 -1
  7. data/app/assets/stylesheets/css/sidebar.css +1 -1
  8. data/app/assets/stylesheets/css/tags.css +7 -0
  9. data/app/assets/svgs/failed_to_load.svg +4 -5
  10. data/app/assets/svgs/grid-empty-state.svg +10 -11
  11. data/app/assets/svgs/table-empty-state.svg +11 -12
  12. data/app/components/avo/actions_component.html.erb +2 -2
  13. data/app/components/avo/actions_component.rb +1 -1
  14. data/app/components/avo/button_component.rb +2 -2
  15. data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -1
  16. data/app/components/avo/fields/common/progress_bar_component.html.erb +1 -1
  17. data/app/components/avo/fields/common/progress_bar_component.rb +11 -1
  18. data/app/components/avo/fields/common/single_file_viewer_component.html.erb +1 -1
  19. data/app/components/avo/fields/progress_bar_field/index_component.html.erb +1 -1
  20. data/app/components/avo/fields/progress_bar_field/show_component.html.erb +1 -1
  21. data/app/components/avo/fields/tags_field/edit_component.html.erb +1 -1
  22. data/app/components/avo/index/resource_grid_component.html.erb +2 -1
  23. data/app/components/avo/index/resource_table_component.html.erb +2 -1
  24. data/app/components/avo/profile_item_component.html.erb +1 -1
  25. data/app/components/avo/sidebar_component.html.erb +1 -1
  26. data/app/components/avo/sidebar_profile_component.html.erb +1 -1
  27. data/app/helpers/avo/resources_helper.rb +20 -16
  28. data/app/javascript/avo.js +0 -1
  29. data/app/javascript/js/controllers/fields/trix_field_controller.js +4 -3
  30. data/app/javascript/js/controllers/item_select_all_controller.js +16 -9
  31. data/app/javascript/js/controllers/item_selector_controller.js +1 -1
  32. data/app/views/avo/actions/show.html.erb +2 -2
  33. data/app/views/avo/associations/new.html.erb +2 -2
  34. data/app/views/avo/base/_multiple_select_filter.html.erb +1 -1
  35. data/app/views/avo/base/_text_filter.html.erb +1 -1
  36. data/app/views/avo/partials/_branding.html.erb +5 -0
  37. data/app/views/avo/partials/_header.html.erb +1 -1
  38. data/app/views/avo/partials/_logo.html.erb +2 -2
  39. data/app/views/avo/private/_links_and_buttons.html.erb +1 -1
  40. data/app/views/avo/private/design.html.erb +3 -3
  41. data/app/views/layouts/avo/application.html.erb +1 -0
  42. data/config/master.key +1 -0
  43. data/lib/avo/configuration/branding.rb +70 -0
  44. data/lib/avo/configuration.rb +5 -0
  45. data/lib/avo/dashboards/chartkick_card.rb +1 -1
  46. data/lib/avo/licensing/pro_license.rb +1 -0
  47. data/lib/avo/version.rb +1 -1
  48. data/lib/generators/avo/templates/initializer/avo.tt +15 -0
  49. data/public/avo-assets/avo.css +298 -284
  50. data/public/avo-assets/avo.js +2 -2
  51. data/public/avo-assets/avo.js.map +2 -2
  52. metadata +6 -11
  53. data/app/components/avo/button_component.html.erb +0 -1
  54. data/app/helpers/avo/actions_helper.rb +0 -4
  55. data/app/helpers/avo/attachments_helper.rb +0 -4
  56. data/app/views/kaminari/_first_page.html.erb +0 -3
  57. data/app/views/kaminari/_last_page.html.erb +0 -3
  58. data/app/views/kaminari/_next_page.html.erb +0 -9
  59. data/app/views/kaminari/_page.html.erb +0 -12
  60. data/app/views/kaminari/_prev_page.html.erb +0 -9
@@ -12,7 +12,7 @@
12
12
  'data-multiple-select-filter-target': 'selector'
13
13
  %>
14
14
  <div class="flex justify-end">
15
- <%= a_button class: 'mt-4', color: :blue, size: :xs, data: { action: "multiple-select-filter#changeFilter" } do %>
15
+ <%= a_button class: 'mt-4', color: :primary, size: :xs, data: { action: "multiple-select-filter#changeFilter" } do %>
16
16
  Filter by <%=filter.name %>
17
17
  <% end %>
18
18
  </div>
@@ -13,7 +13,7 @@
13
13
  'data-action': 'keypress->text-filter#tryToSubmit'
14
14
  %>
15
15
  <div class="flex justify-end">
16
- <%= a_button class: 'mt-4', color: :blue, data: { action: "text-filter#changeFilter" }, size: :xs do %>
16
+ <%= a_button class: 'mt-4', color: :primary, data: { action: "text-filter#changeFilter" }, size: :xs do %>
17
17
  <%= filter.button_label || "Filter by #{filter.name}" %>
18
18
  <% end %>
19
19
  </div>
@@ -0,0 +1,5 @@
1
+ <style>
2
+ :root {
3
+ <%= Avo.configuration.branding.css_colors %>
4
+ }
5
+ </style>
@@ -1 +1 @@
1
- <%= link_to Avo.configuration.app_name, '/', class: 'text-blue-500 font-semibold', target: :_blank %>
1
+ <%= link_to Avo.configuration.app_name, '/', class: 'text-primary-500 font-semibold', target: :_blank %>
@@ -1,4 +1,4 @@
1
1
  <%= link_to root_path, class: 'logo-placeholder h-full w-full flex justify-start' do %>
2
- <%= image_tag '/avo-assets/logo.png', class: 'hidden sm:block object-contain', title: 'Avo' %>
3
- <%= image_tag '/avo-assets/logomark.png', class: 'sm:hidden object-contain', title: 'Avo' %>
2
+ <%= image_tag Avo.configuration.branding.logo, class: 'hidden sm:block object-contain', title: 'Avo' %>
3
+ <%= image_tag Avo.configuration.branding.logomark, class: 'sm:hidden object-contain', title: 'Avo' %>
4
4
  <% end %>
@@ -2,7 +2,7 @@
2
2
  entities = [:button, :link]
3
3
  sizes = [:xl, :lg, :md, :sm, :xs].reverse
4
4
  styles = [:primary, :outline, :text]
5
- colors = [:primary, :gray, :red, :orange, :green]
5
+ colors = [:primary, :blue, :gray, :red, :orange, :green]
6
6
  states = [:regular, :hover, :disabled, :active]
7
7
  %>
8
8
  <div class="px-6 space-y-4">
@@ -6,15 +6,15 @@
6
6
  <% end %>
7
7
 
8
8
  <%= a_link('/admin', icon: 'arrow-left', style: :outline, is_link: true) do %>
9
- Secondary
9
+ Outline
10
10
  <% end %>
11
11
 
12
12
  <%= a_link('/admin', icon: 'arrow-left', style: :outline, color: :red, is_link: true) do %>
13
13
  Red
14
14
  <% end %>
15
15
 
16
- <%= a_link('/admin', icon: 'arrow-left', style: :outline, color: :orange, is_link: true) do %>
17
- Red
16
+ <%= a_link('/admin', icon: 'arrow-left', style: :text, color: :orange, is_link: true) do %>
17
+ Text
18
18
  <% end %>
19
19
  <% end %>
20
20
 
@@ -7,6 +7,7 @@
7
7
  <%= csp_meta_tag %>
8
8
  <%= render partial: 'avo/partials/javascript' %>
9
9
  <%= render partial: 'avo/partials/head' %>
10
+ <%= render partial: 'avo/partials/branding' %>
10
11
  <% if Avo::PACKED %>
11
12
  <%= javascript_include_tag "/avo-assets/avo", "data-turbo-track": "reload", defer: true %>
12
13
  <%= stylesheet_link_tag "/avo-assets/avo", "data-turbo-track": "reload", defer: true %>
data/config/master.key ADDED
@@ -0,0 +1 @@
1
+ 2aeb23d82b909d9c6b5abb62f7058c2a
@@ -0,0 +1,70 @@
1
+ class Avo::Configuration::Branding
2
+ def initialize(colors: nil, chart_colors: nil, logo: nil, logomark: nil)
3
+ @colors = colors
4
+ @chart_colors = chart_colors
5
+ @logo = logo
6
+ @logomark = logomark
7
+
8
+ @default_colors = {
9
+ background: "#F6F6F7",
10
+ 100 => "206 231 248",
11
+ 400 => "57 158 229",
12
+ 500 => "8 134 222",
13
+ 600 => "6 107 178"
14
+ }
15
+ @default_chart_colors = ["#0B8AE2", "#34C683", "#2AB1EE", "#34C6A8"]
16
+ @default_logo = "/avo-assets/logo.png"
17
+ @default_logomark = "/avo-assets/logomark.png"
18
+ end
19
+
20
+ def css_colors
21
+ rgb_colors.map do |color, value|
22
+ if color == :background
23
+ "--color-application-#{color}: #{value};"
24
+ else
25
+ "--color-primary-#{color}: #{value};"
26
+ end
27
+ end.join("\n")
28
+ end
29
+
30
+ def logo
31
+ return @default_logo if Avo::App.license.lacks_with_trial(:branding)
32
+
33
+ @logo || @default_logo
34
+ end
35
+
36
+ def logomark
37
+ return @default_logomark if Avo::App.license.lacks_with_trial(:branding)
38
+
39
+ @logomark || @default_logomark
40
+ end
41
+
42
+ def chart_colors
43
+ return @default_chart_colors if Avo::App.license.lacks_with_trial(:branding)
44
+
45
+ @chart_colors || @default_chart_colors
46
+ end
47
+
48
+ private
49
+
50
+ def colors
51
+ return @default_colors if Avo::App.license.lacks_with_trial(:branding)
52
+
53
+ @default_colors.merge(@colors) || @default_colors
54
+ end
55
+
56
+ def rgb_colors
57
+ colors.map do |key, value|
58
+ rgb_value = is_hex?(value) ? hex_to_rgb(value) : value
59
+ [key, rgb_value]
60
+ end.to_h
61
+ end
62
+
63
+ def is_hex?(value)
64
+ value.include? "#"
65
+ end
66
+
67
+ def hex_to_rgb(value)
68
+ value.to_s.match(/^#(..)(..)(..)$/).captures.map(&:hex).join(" ")
69
+ end
70
+ end
@@ -35,6 +35,7 @@ module Avo
35
35
  attr_accessor :main_menu
36
36
  attr_accessor :profile_menu
37
37
  attr_accessor :tabs_style
38
+ attr_writer :branding
38
39
 
39
40
  def initialize
40
41
  @root_path = "/avo"
@@ -123,6 +124,10 @@ module Avo
123
124
  def feature_enabled?(feature)
124
125
  !@disabled_features.map(&:to_sym).include?(feature.to_sym)
125
126
  end
127
+
128
+ def branding
129
+ Avo::Configuration::Branding.new(**@branding || {})
130
+ end
126
131
  end
127
132
 
128
133
  def self.configuration
@@ -29,7 +29,7 @@ module Avo
29
29
  default = {
30
30
  # figure our the available height for the chart
31
31
  height: "#{(rows * card_height) - card_heading}px",
32
- colors: %w[#0B8AE2 #34C683 #2AB1EE #34C6A8],
32
+ colors: ::Avo.configuration.branding.chart_colors,
33
33
  library: {
34
34
  discrete: false,
35
35
  points: false,
@@ -16,6 +16,7 @@ module Avo
16
16
  :menu_editor,
17
17
  :stimulus_js_integration,
18
18
  :resource_show_controls,
19
+ :branding,
19
20
  :advanced_fields
20
21
  ]
21
22
  end
data/lib/avo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Avo
2
- VERSION = "2.14.2" unless const_defined?(:VERSION)
2
+ VERSION = "2.14.3.pre.1.branding" unless const_defined?(:VERSION)
3
3
  end
@@ -53,6 +53,21 @@ Avo.configure do |config|
53
53
  # config.disabled_features = []
54
54
  # config.resource_controls = :right
55
55
  # config.tabs_style = :tabs # can be :tabs or :pills
56
+ # config.buttons_on_form_footers = true
57
+
58
+ ## == Branding ==
59
+ # config.branding = {
60
+ # colors: {
61
+ # background: "248 246 242",
62
+ # 100 => "#CEE7F8",
63
+ # 400 => "#399EE5",
64
+ # 500 => "#0886DE",
65
+ # 600 => "#066BB2",
66
+ # },
67
+ # chart_colors: ["#0B8AE2", "#34C683", "#2AB1EE", "#34C6A8"],
68
+ # logo: "/avo-assets/logo.png"
69
+ # logomark: "/avo-assets/logomark.png",
70
+ # }
56
71
 
57
72
 
58
73
  ## == Breadcrumbs ==