mirror of
https://github.com/we-promise/sure.git
synced 2026-06-01 00:39:01 +00:00
ux(goals/show): catch-up CTA pre-fills + secondary "Adjust your target" link
The "Add $1,531.25" CTA used to open the contribution modal with an empty amount field — label was a hint, not a default. Now passes the catch-up amount via ?amount= and the contributions controller seeds @contribution.amount from params. One click brings the user to the modal already populated. Adds a secondary text link below the primary CTA: "Or adjust your target" → opens the edit modal (Turbo frame). Behavioural-econ choice architecture: gives the rebaseline path explicitly so users who can't realistically catch up don't feel forced into the contribution. Trade-off: lets the alert respect autonomy — commit or recalibrate, both fine. Action paralysis kept low by visual hierarchy (primary button vs muted text link).
This commit is contained in:
@@ -7,7 +7,8 @@ class GoalContributionsController < ApplicationController
|
||||
@contribution = @goal.goal_contributions.new(
|
||||
contributed_at: Date.current,
|
||||
currency: @goal.currency,
|
||||
source: "manual"
|
||||
source: "manual",
|
||||
amount: params[:amount].presence
|
||||
)
|
||||
end
|
||||
|
||||
|
||||
@@ -146,15 +146,19 @@
|
||||
<%= t("goals.show.catch_up.body", avg: catch_up_avg_money.format, delta: catch_up_delta_money.format) %>
|
||||
<% end %>
|
||||
</p>
|
||||
<div class="mt-2">
|
||||
<div class="mt-2 flex items-center gap-3 flex-wrap">
|
||||
<%= render DS::Link.new(
|
||||
text: t("goals.show.catch_up.cta", amount: catch_up_money.format),
|
||||
variant: "primary",
|
||||
size: "sm",
|
||||
href: new_goal_contribution_path(@goal),
|
||||
href: new_goal_contribution_path(@goal, amount: @goal.monthly_target_amount.to_f),
|
||||
icon: "plus",
|
||||
frame: :modal
|
||||
) %>
|
||||
<%= link_to t("goals.show.catch_up.adjust_target_cta"),
|
||||
edit_goal_path(@goal),
|
||||
data: { turbo_frame: :modal },
|
||||
class: "text-xs text-secondary hover:text-primary underline-offset-2 hover:underline" %>
|
||||
</div>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
@@ -127,6 +127,7 @@ en:
|
||||
body_with_date: "Your current pace is %{avg}/mo. You need an extra %{delta}/mo to finish by %{date}."
|
||||
body: "Your current pace is %{avg}/mo. You need an extra %{delta}/mo to hit the required rate."
|
||||
cta: "Add %{amount}"
|
||||
adjust_target_cta: Or adjust your target
|
||||
confirm_complete_title: Mark this goal complete?
|
||||
confirm_complete_body: It leaves the Ongoing list. You can still archive or restore it later.
|
||||
confirm_complete_cta: Mark complete
|
||||
|
||||
Reference in New Issue
Block a user