From f5469ea7749e763e2eaa73d7e491dbd16762f0f1 Mon Sep 17 00:00:00 2001
From: Mark Hendriksen
Date: Sun, 15 Feb 2026 23:33:41 +0100
Subject: [PATCH] Replace text-tertiary with text-subdued in views (#999)
* Replace text-tertiary with text-subdued in views
Replace usages of the text-tertiary utility with text-subdued across several view partials to standardize subdued text styling because text-tertiary does not exist in the design system (reports, doorkeeper auth, simplefin items). Also adjust the net worth empty-liabilities markup to use a grid layout for consistent spacing, and update the related controller test selector to match the new CSS class.
* Standardize empty net worth message markup
Replace inconsistent markup and classes for empty asset/liability sections in the net worth partial. Swap text-secondary/p-2/text-center for text-subdued with unified padding (py-3 px-4 lg:px-6), and simplify the liabilities block from a grid/div to a single paragraph for consistent styling and spacing.
---
app/views/doorkeeper/authorizations/new.html.erb | 2 +-
app/views/reports/_budget_performance.html.erb | 16 ++++++++--------
app/views/reports/_category_row.html.erb | 2 +-
app/views/reports/_empty_state.html.erb | 2 +-
app/views/reports/_net_worth.html.erb | 8 ++++----
app/views/reports/_summary_dashboard.html.erb | 10 +++++-----
app/views/reports/_trends_insights.html.erb | 4 ++--
.../simplefin_items/_simplefin_item.html.erb | 6 +++---
test/controllers/reports_controller_test.rb | 2 +-
9 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/app/views/doorkeeper/authorizations/new.html.erb b/app/views/doorkeeper/authorizations/new.html.erb
index c925ec722..e228dcae8 100644
--- a/app/views/doorkeeper/authorizations/new.html.erb
+++ b/app/views/doorkeeper/authorizations/new.html.erb
@@ -70,7 +70,7 @@
<% end %>
-
+
By authorizing, you allow this app to access your <%= product_name %> data according to the permissions above.
diff --git a/app/views/reports/_budget_performance.html.erb b/app/views/reports/_budget_performance.html.erb
index 06477b638..a66a50a89 100644
--- a/app/views/reports/_budget_performance.html.erb
+++ b/app/views/reports/_budget_performance.html.erb
@@ -3,7 +3,7 @@
<%= t("reports.budget_performance.title") %>
-
+
<%= start_date.strftime("%B %Y") %>
@@ -62,13 +62,13 @@
- <%= t("reports.budget_performance.spent") %>:
+ <%= t("reports.budget_performance.spent") %>:
<%= Money.new(budget_item[:actual], Current.family.currency).format %>
-
<%= t("reports.budget_performance.budgeted") %>:
+
<%= t("reports.budget_performance.budgeted") %>:
<%= Money.new(budget_item[:budgeted], Current.family.currency).format %>
@@ -77,12 +77,12 @@
<% if budget_item[:remaining] >= 0 %>
-
<%= t("reports.budget_performance.remaining") %>:
+
<%= t("reports.budget_performance.remaining") %>:
<%= Money.new(budget_item[:remaining], Current.family.currency).format %>
<% else %>
-
<%= t("reports.budget_performance.over_by") %>:
+
<%= t("reports.budget_performance.over_by") %>:
<%= Money.new(budget_item[:remaining].abs, Current.family.currency).format %>
@@ -95,7 +95,7 @@
<% days_remaining = (start_date.end_of_month - Date.current).to_i + 1 %>
<% if days_remaining > 0 %>
-
+
<%= t("reports.budget_performance.suggested_daily",
amount: Money.new((budget_item[:remaining] / days_remaining), Current.family.currency).format,
days: days_remaining) %>
@@ -108,8 +108,8 @@
<% else %>
- <%= icon("gauge", class: "w-12 h-12 text-tertiary mx-auto mb-4") %>
-
+ <%= icon("gauge", class: "w-12 h-12 text-subdued mx-auto mb-4") %>
+
<%= t("reports.budget_performance.no_budgets") %>
diff --git a/app/views/reports/_category_row.html.erb b/app/views/reports/_category_row.html.erb
index 449cac8bb..ac37dafe6 100644
--- a/app/views/reports/_category_row.html.erb
+++ b/app/views/reports/_category_row.html.erb
@@ -31,7 +31,7 @@
<%= item[:category_name] %>
-
+
(<%= t("reports.transactions_breakdown.table.entries", count: item[:count]) %>)
diff --git a/app/views/reports/_empty_state.html.erb b/app/views/reports/_empty_state.html.erb
index 774bc56eb..d5556baa6 100644
--- a/app/views/reports/_empty_state.html.erb
+++ b/app/views/reports/_empty_state.html.erb
@@ -1,5 +1,5 @@
- <%= icon("chart-bar", class: "w-16 h-16 text-tertiary mx-auto mb-6") %>
+ <%= icon("chart-bar", class: "w-16 h-16 text-subdued mx-auto mb-6") %>
<%= t("reports.empty_state.title") %>
diff --git a/app/views/reports/_net_worth.html.erb b/app/views/reports/_net_worth.html.erb
index f809d08b8..e3c8f01df 100644
--- a/app/views/reports/_net_worth.html.erb
+++ b/app/views/reports/_net_worth.html.erb
@@ -21,7 +21,7 @@
<%= trend.value >= 0 ? "+" : "" %><%= trend.percent_formatted %>
<% else %>
-
--
+
--
<% end %>
@@ -30,7 +30,7 @@
<%= t("reports.net_worth.assets_vs_liabilities") %>
<%= net_worth_metrics[:total_assets].format %>
- -
+ -
<%= net_worth_metrics[:total_liabilities].format %>
@@ -54,7 +54,7 @@
<% end %>
<% end %>
<% if net_worth_metrics[:asset_groups].empty? %>
-
<%= t("reports.net_worth.no_assets") %>
+
<%= t("reports.net_worth.no_assets") %>
<% end %>
@@ -75,7 +75,7 @@
<% end %>
<% end %>
<% if net_worth_metrics[:liability_groups].empty? %>
- <%= t("reports.net_worth.no_liabilities") %>
+ <%= t("reports.net_worth.no_liabilities") %>
<% end %>
diff --git a/app/views/reports/_summary_dashboard.html.erb b/app/views/reports/_summary_dashboard.html.erb
index bc0436174..7ad7ffb8e 100644
--- a/app/views/reports/_summary_dashboard.html.erb
+++ b/app/views/reports/_summary_dashboard.html.erb
@@ -28,7 +28,7 @@
<%= metrics[:income_change] %>%
<% end %>
-
+
<%= t("reports.summary.vs_previous") %>
@@ -65,7 +65,7 @@
<%= metrics[:expense_change] %>%
<% end %>
-
+
<%= t("reports.summary.vs_previous") %>
@@ -89,7 +89,7 @@
<%= metrics[:net_savings].format %>
-
+
<%= t("reports.summary.income_minus_expenses") %>
@@ -118,12 +118,12 @@
style="width: <%= [metrics[:budget_percent], 100].min %>%">
-
+
<%= t("reports.summary.of_budget_used") %>
<% else %>
-
+
<%= t("reports.summary.no_budget_data") %>
<% end %>
diff --git a/app/views/reports/_trends_insights.html.erb b/app/views/reports/_trends_insights.html.erb
index 66c2475ba..397de8ed1 100644
--- a/app/views/reports/_trends_insights.html.erb
+++ b/app/views/reports/_trends_insights.html.erb
@@ -21,7 +21,7 @@
">
<%= trend[:month] %>
<% if trend[:is_current_month] %>
- (<%= t("reports.trends.current") %>)
+ (<%= t("reports.trends.current") %>)
<% end %>
@@ -74,7 +74,7 @@
<% else %>
-
+
<%= t("reports.trends.no_data") %>
<% end %>
diff --git a/app/views/simplefin_items/_simplefin_item.html.erb b/app/views/simplefin_items/_simplefin_item.html.erb
index cf6c8da35..b9f6ea48d 100644
--- a/app/views/simplefin_items/_simplefin_item.html.erb
+++ b/app/views/simplefin_items/_simplefin_item.html.erb
@@ -98,10 +98,10 @@
<%= icon "clock", size: "sm", color: "secondary" %>
<%= tag.span pending_status[:message], class: "text-sm" %>
- <%= t(".stale_pending_note") %>
+ <%= t(".stale_pending_note") %>
<% if pending_status[:accounts]&.any? %>
-
+
<%= t(".stale_pending_accounts", accounts: pending_status[:accounts].join(", ")) %>
<% end %>
@@ -110,7 +110,7 @@
<%= icon "check-circle", size: "sm", color: "success" %>
<%= tag.span reconciled_status[:message], class: "text-sm" %>
- <%= t(".reconciled_details_note") %>
+ <%= t(".reconciled_details_note") %>
<% elsif simplefin_item.rate_limited_message.present? %>
diff --git a/test/controllers/reports_controller_test.rb b/test/controllers/reports_controller_test.rb
index afc81abd3..1c7e7bbd2 100644
--- a/test/controllers/reports_controller_test.rb
+++ b/test/controllers/reports_controller_test.rb
@@ -158,7 +158,7 @@ class ReportsControllerTest < ActionDispatch::IntegrationTest
assert_response :ok
# Verify spending patterns shows data (not the "no data" message)
- assert_select ".text-center.py-8.text-tertiary", { text: /No spending data/, count: 0 }, "Should not show 'No spending data' message when transactions exist"
+ assert_select ".text-center.py-8.text-subdued", { text: /No spending data/, count: 0 }, "Should not show 'No spending data' message when transactions exist"
end
test "export transactions with API key authentication" do