<%# Renders a breakdown table for income or expense groups %> <%# Local variables: groups, total, type (:income or :expense), amount_sort_params, current_sort_by, current_sort_direction %> <% color_class = type == :income ? "text-success" : "text-destructive" icon_name = type == :income ? "trending-up" : "trending-down" title_key = type == :income ? "reports.transactions_breakdown.table.income" : "reports.transactions_breakdown.table.expense" %>
<%= icon(icon_name, class: "w-5 h-5") %> <%= t(title_key) %>: <%= Money.new(total, Current.family.currency).format %>
<%= t("reports.transactions_breakdown.table.category") %>
<%= link_to reports_path(amount_sort_params), class: "inline-flex items-center gap-1 hover:text-primary" do %> <%= t("reports.transactions_breakdown.table.amount") %> <% if current_sort_by == "amount" %> <%= icon(current_sort_direction == "desc" ? "chevron-down" : "chevron-up", class: "w-3 h-3") %> <% end %> <% end %>
<%= t("reports.transactions_breakdown.table.percentage") %>
<% groups.each_with_index do |group, idx| %> <%= render "reports/category_row", item: group, total: total, color_class: color_class, level: :category %> <% if idx < group.size - 1 %> <%= render "shared/ruler", classes: "mx-3 lg:mx-4" %> <% end %> <%# Render subcategories if present %> <% if group[:subcategories].present? && group[:subcategories].any? %> <% group[:subcategories].each_with_index do |subcategory, idx| %> <%= render "reports/category_row", item: subcategory, total: total, color_class: color_class, level: :subcategory %> <% end %> <% if idx < group.size - 1 %> <%= render "shared/ruler", classes: "mx-3 lg:mx-4" %> <% end %> <% end %> <% end %>