mirror of
https://github.com/we-promise/sure.git
synced 2026-06-05 10:49:01 +00:00
fix(ds): cross-viewport lock — consistent auth mode-switch (#2149)
* fix(ds): cross-viewport lock — consistent auth mode-switch (#2137) The auth sign-in/sign-up mode switch rendered as a segmented pill toggle on mobile (md:hidden) but a plain text link on desktop (hidden md:block) — the audit's cross-viewport inconsistency. Lock to the segmented switch at all widths and drop the now-redundant desktop text links. Verified on /sessions/new at desktop width: the Sign in / Create account segmented toggle now shows (was a text link). Note: the switch still uses the bespoke bg-surface-inset track; migrating it to DS::SegmentedControl (#2145) would also fix its dark-mode contrast — a follow-up once that lands. The account-new icon glyph-vs-chip case the audit grouped here did not reproduce (account_type + method_selector already use consistent DS::FilledIcon / chip icons). * fix(auth): keep the sign-in/up switch after a failed submit A failed sign-in/up POST re-renders :new from the #create action, so the switch (gated on action_name == "new") disappeared and the active tab was derived from current_page?, which breaks on the POST URL. Render the switch on both new and create, and derive the active tab from controller_name. Addresses Codex review on #2149.
This commit is contained in:
committed by
GitHub
parent
52b9b47f8c
commit
be707bfba3
@@ -7,29 +7,25 @@
|
||||
<%= image_tag "logomark.svg", class: "w-16 mb-6" %>
|
||||
</div>
|
||||
<div class="space-y-2">
|
||||
<% if (controller_name == "sessions" && action_name == "new") || (controller_name == "registrations" && action_name == "new") %>
|
||||
<div class="space-y-3 md:hidden w-full my-4">
|
||||
<% if controller_name.in?(%w[sessions registrations]) && action_name.in?(%w[new create]) %>
|
||||
<%# Determine the active tab from the controller, not current_page?:
|
||||
a failed POST re-renders :new from #create, where the request
|
||||
path is the form target (not /sessions/new), so current_page?
|
||||
would mis-highlight the switch. %>
|
||||
<% on_sign_in = controller_name == "sessions" %>
|
||||
<div class="space-y-3 w-full my-4">
|
||||
<div class="bg-surface-inset rounded-lg p-1 flex">
|
||||
<%= link_to new_session_path,
|
||||
class: "w-1/2 px-2 py-1 rounded-md text-sm text-center font-medium #{current_page?(new_session_path) ? 'bg-surface shadow-sm text-primary' : 'text-secondary'}" do %>
|
||||
class: "w-1/2 px-2 py-1 rounded-md text-sm text-center font-medium #{on_sign_in ? 'bg-surface shadow-sm text-primary' : 'text-secondary'}" do %>
|
||||
<%= t("layouts.auth.sign_in") %>
|
||||
<% end %>
|
||||
<%= link_to new_registration_path,
|
||||
class: "w-1/2 px-2 py-1 rounded-md text-sm text-center font-medium #{!current_page?(new_session_path) ? 'bg-surface shadow-sm text-primary' : 'text-secondary'}" do %>
|
||||
class: "w-1/2 px-2 py-1 rounded-md text-sm text-center font-medium #{!on_sign_in ? 'bg-surface shadow-sm text-primary' : 'text-secondary'}" do %>
|
||||
<%= t("layouts.auth.sign_up") %>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
<% if controller_name == "sessions" %>
|
||||
<p class="text-sm text-center hidden md:block">
|
||||
<%= tag.span t("layouts.auth.no_account", product_name: product_name), class: "text-secondary" %> <%= link_to t("layouts.auth.sign_up"), new_registration_path, class: "font-medium text-primary hover:underline transition" %>
|
||||
</p>
|
||||
<% elsif controller_name == "registrations" %>
|
||||
<p class="text-sm text-center text-secondary hidden md:block">
|
||||
<%= t("layouts.auth.existing_account") %> <%= link_to t("layouts.auth.sign_in"), new_session_path, class: "font-medium text-primary hover:underline transition" %>
|
||||
</p>
|
||||
<% end %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user