diff --git a/app/components/admin/stats/budget_supporting_component.html.erb b/app/components/admin/stats/budget_supporting_component.html.erb
index 2d74625d9..c946d73bf 100644
--- a/app/components/admin/stats/budget_supporting_component.html.erb
+++ b/app/components/admin/stats/budget_supporting_component.html.erb
@@ -30,7 +30,7 @@
-<%= render "admin/stats/graph", name: "user_supported_budgets", event: "", count: user_count %>
+<%= render Admin::Stats::ChartComponent.new(name: "user_supported_budgets", event: "", count: user_count) %>
diff --git a/app/views/admin/stats/_graph.html.erb b/app/components/admin/stats/chart_component.html.erb
similarity index 100%
rename from app/views/admin/stats/_graph.html.erb
rename to app/components/admin/stats/chart_component.html.erb
diff --git a/app/components/admin/stats/chart_component.rb b/app/components/admin/stats/chart_component.rb
new file mode 100644
index 000000000..ac94fa4cf
--- /dev/null
+++ b/app/components/admin/stats/chart_component.rb
@@ -0,0 +1,27 @@
+class Admin::Stats::ChartComponent < ApplicationComponent
+ attr_reader :name, :event, :count
+
+ def initialize(name:, event:, count:)
+ @name = name
+ @event = event
+ @count = count
+ end
+
+ private
+
+ def chart_tag(opt = {})
+ opt[:data] ||= {}
+ opt[:data][:graph] = admin_api_stats_path(chart_data(opt))
+ tag.div(**opt)
+ end
+
+ def chart_data(opt = {})
+ data = nil
+ if opt[:id].present?
+ data = { opt[:id] => true }
+ elsif opt[:event].present?
+ data = { event: opt[:event] }
+ end
+ data
+ end
+end
diff --git a/app/helpers/stats_helper.rb b/app/helpers/stats_helper.rb
index 711804d5f..30facd211 100644
--- a/app/helpers/stats_helper.rb
+++ b/app/helpers/stats_helper.rb
@@ -1,20 +1,4 @@
module StatsHelper
- def chart_tag(opt = {})
- opt[:data] ||= {}
- opt[:data][:graph] = admin_api_stats_path(chart_data(opt))
- tag.div(**opt)
- end
-
- def chart_data(opt = {})
- data = nil
- if opt[:id].present?
- data = { opt[:id] => true }
- elsif opt[:event].present?
- data = { event: opt[:event] }
- end
- data
- end
-
def budget_investments_chart_tag(opt = {})
opt[:data] ||= {}
opt[:data][:graph] = admin_api_stats_path(budget_investments: true)
diff --git a/app/views/admin/stats/graph.html.erb b/app/views/admin/stats/graph.html.erb
index 04435660c..85c8395de 100644
--- a/app/views/admin/stats/graph.html.erb
+++ b/app/views/admin/stats/graph.html.erb
@@ -4,4 +4,4 @@
<%= back_link_to admin_stats_path %>
-<%= render "graph", name: @name, event: @event, count: @count %>
+<%= render Admin::Stats::ChartComponent.new(name: @name, event: @event, count: @count) %>