+
<%= form_with url: registration_scholarship_decline_path(@event_registration.slug), method: :post, class: "mt-3 w-full max-w-md" do %>
diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb
index d6b97dafc..2f3af0f12 100644
--- a/app/views/events/show.html.erb
+++ b/app/views/events/show.html.erb
@@ -12,7 +12,7 @@
<% if @preview %>
Preview — unsaved changes
-
+
<% else %>
@@ -110,7 +110,7 @@
<%= link_to Form::BULK_PAYMENT_PUBLIC_NAME,
new_event_bulk_payment_path(@event),
- class: "btn btn-success px-10 py-2 text-2xl uppercase",
+ class: button_classes(:success, size: nil, extra: "px-10 py-2 text-2xl uppercase"),
style: "font-family: 'Telefon Bold', sans-serif;" %>
<% end %>
@@ -131,6 +131,6 @@
<% if @preview %>
Preview — unsaved changes
-
+
<% end %>
diff --git a/spec/helpers/button_helper_spec.rb b/spec/helpers/button_helper_spec.rb
new file mode 100644
index 000000000..e48709442
--- /dev/null
+++ b/spec/helpers/button_helper_spec.rb
@@ -0,0 +1,39 @@
+require "rails_helper"
+
+RSpec.describe ButtonHelper, type: :helper do
+ describe "#button_classes" do
+ it "combines the base, default size, and the requested variant" do
+ result = helper.button_classes(:primary)
+
+ expect(result).to include("inline-flex", "rounded-lg", "shadow-sm")
+ expect(result).to include("px-4", "py-2", "text-sm")
+ expect(result).to include("bg-primary", "hover:text-primary")
+ end
+
+ it "defaults to the primary variant" do
+ expect(helper.button_classes).to eq(helper.button_classes(:primary))
+ end
+
+ it "swaps in the compact size" do
+ result = helper.button_classes(:secondary_outline, size: :sm)
+
+ expect(result).to include("px-3", "py-1", "text-xs")
+ expect(result).not_to include("px-4", "py-2", "text-sm")
+ end
+
+ it "omits size utilities when size is nil so a call site can supply its own" do
+ result = helper.button_classes(:success, size: nil, extra: "px-10 py-2 text-2xl")
+
+ expect(result).not_to include("px-4", "text-sm")
+ expect(result).to include("px-10", "text-2xl")
+ end
+
+ it "appends extra classes" do
+ expect(helper.button_classes(:primary, extra: "whitespace-nowrap")).to include("whitespace-nowrap")
+ end
+
+ it "raises for an unknown variant so typos fail loudly" do
+ expect { helper.button_classes(:nope) }.to raise_error(KeyError)
+ end
+ end
+end