diff --git a/app/components/button_component.html.erb b/app/components/button_component.html.erb
index 87268248..75f3853e 100644
--- a/app/components/button_component.html.erb
+++ b/app/components/button_component.html.erb
@@ -1,6 +1,6 @@
<%= container do %>
<% if icon && (icon_position != :right) %>
- <%= lucide_icon(icon, class: icon_classes) %>
+ <%= helpers.icon(icon, size: size, color: icon_color) %>
<% end %>
<% unless icon_only? %>
@@ -8,6 +8,6 @@
<% end %>
<% if icon && icon_position == :right %>
- <%= lucide_icon(icon, class: icon_classes) %>
+ <%= helpers.icon(icon, size: size, color: icon_color) %>
<% end %>
<% end %>
diff --git a/app/components/buttonish_component.rb b/app/components/buttonish_component.rb
index 4743616e..89e3afda 100644
--- a/app/components/buttonish_component.rb
+++ b/app/components/buttonish_component.rb
@@ -39,22 +39,19 @@ class ButtonishComponent < ViewComponent::Base
container_classes: "px-2 py-1",
icon_container_classes: "inline-flex items-center justify-center w-8 h-8",
radius_classes: "rounded-md",
- text_classes: "text-sm",
- icon_classes: "w-4 h-4"
+ text_classes: "text-sm"
},
md: {
container_classes: "px-3 py-2",
icon_container_classes: "inline-flex items-center justify-center w-9 h-9",
radius_classes: "rounded-lg",
- text_classes: "text-sm",
- icon_classes: "w-5 h-5"
+ text_classes: "text-sm"
},
lg: {
container_classes: "px-4 py-3",
icon_container_classes: "inline-flex items-center justify-center w-10 h-10",
radius_classes: "rounded-xl",
- text_classes: "text-base",
- icon_classes: "w-6 h-6"
+ text_classes: "text-base"
}
}.freeze
@@ -92,9 +89,20 @@ class ButtonishComponent < ViewComponent::Base
icon_only? ? size_data.dig(:icon_container_classes) : size_data.dig(:container_classes)
end
+ def icon_color
+ # Map variant to icon color for the icon helper
+ case variant
+ when :primary, :icon_inverse
+ :white
+ when :destructive, :outline_destructive
+ :destructive
+ else
+ :default
+ end
+ end
+
def icon_classes
class_names(
- size_data.dig(:icon_classes),
variant_data.dig(:icon_classes)
)
end
diff --git a/app/components/disclosure_component.html.erb b/app/components/disclosure_component.html.erb
index 554342d1..38db2d7f 100644
--- a/app/components/disclosure_component.html.erb
+++ b/app/components/disclosure_component.html.erb
@@ -4,7 +4,7 @@
) do %>
<% if align == :left %>
- <%= lucide_icon "chevron-right", class: "fg-gray w-5 h-5 group-open:transform group-open:rotate-90" %>
+ <%= helpers.icon "chevron-right", class: "group-open:transform group-open:rotate-90" %>
<% end %>
<%= tag.span class: class_names("font-medium", align == :left ? "text-sm text-primary" : "text-xs uppercase text-secondary") do %>
@@ -13,7 +13,7 @@
<% if align == :right %>
- <%= lucide_icon "chevron-down", class: "fg-gray w-5 h-5 group-open:transform group-open:rotate-180" %>
+ <%= helpers.icon "chevron-down", class: "group-open:transform group-open:rotate-180" %>
<% elsif summary_content? %>
<%= summary_content %>
<% end %>
diff --git a/app/components/link_component.html.erb b/app/components/link_component.html.erb
index 707c3d9f..c22e873a 100644
--- a/app/components/link_component.html.erb
+++ b/app/components/link_component.html.erb
@@ -1,6 +1,7 @@
<%= link_to href, **merged_opts do %>
<% if icon && (icon_position != "right") %>
- <%= lucide_icon(icon, class: icon_classes) %>
+ <%= helpers.icon(icon, size: size, color: icon_color) %>
+
<% end %>
<% unless icon_only? %>
@@ -8,6 +9,7 @@
<% end %>
<% if icon && icon_position == "right" %>
- <%= lucide_icon(icon, class: icon_classes) %>
+ <%= helpers.icon(icon, size: size, color: icon_color) %>
+
<% end %>
<% end %>
diff --git a/app/components/menu_item_component.html.erb b/app/components/menu_item_component.html.erb
index bd62bad7..273c4551 100644
--- a/app/components/menu_item_component.html.erb
+++ b/app/components/menu_item_component.html.erb
@@ -4,7 +4,7 @@
<%= wrapper do %>
<% if icon %>
- <%= lucide_icon(icon, class: destructive? ? "text-destructive" : "fg-gray") %>
+ <%= helpers.icon(icon, color: destructive? ? :destructive : :default) %>
<% end %>
<%= tag.span(text, class: text_classes) %>
<% end %>
diff --git a/app/views/transactions/searches/filters/_badge.html.erb b/app/views/transactions/searches/filters/_badge.html.erb
index 6f9c919e..e71bf9ee 100644
--- a/app/views/transactions/searches/filters/_badge.html.erb
+++ b/app/views/transactions/searches/filters/_badge.html.erb
@@ -2,7 +2,7 @@
<% if param_key == "start_date" || param_key == "end_date" %>
- <%= lucide_icon "calendar", class: "w-5 h-5 text-secondary" %>
+ <%= icon "calendar" %>
<% if param_key == "start_date" %>
<%= t(".on_or_after", date: param_value) %>
@@ -13,7 +13,7 @@
<% elsif param_key == "search" %>
- <%= lucide_icon "text", class: "w-5 h-5 text-secondary" %>
+ <%= icon "text" %>
<%= "\"#{param_value}\"".truncate(20) %>
<% elsif param_key == "accounts" %>
@@ -23,7 +23,7 @@
<% elsif param_key == "amount" %>
- <%= lucide_icon "hash", class: "w-5 h-5 text-secondary" %>
+ <%= icon "hash" %>
<%= param_value %>
<% elsif param_key == "types" %>
@@ -45,6 +45,6 @@
method: :delete,
data: { turbo: false },
class: "flex items-center cursor-pointer" do %>
- <%= lucide_icon "x", class: "w-4 h-4 text-secondary hover:text-primary" %>
+ <%= icon "x", size: "sm", class: "hover:text-primary" %>
<% end %>