Files
sure/app/views/layouts/auth.html.erb
Guillem Arias Fauste be707bfba3 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.
2026-06-04 22:18:47 +02:00

41 lines
1.8 KiB
Plaintext

<%= render "layouts/shared/htmldoc" do %>
<div class="flex flex-col h-full overflow-y-auto">
<div class="flex flex-col min-h-full px-6 py-12 bg-surface">
<div class="grow flex flex-col justify-center">
<div class="sm:mx-auto sm:w-full sm:max-w-md">
<div class="flex justify-center mt-2 md:mb-6">
<%= image_tag "logomark.svg", class: "w-16 mb-6" %>
</div>
<div class="space-y-2">
<% 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 #{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 #{!on_sign_in ? 'bg-surface shadow-sm text-primary' : 'text-secondary'}" do %>
<%= t("layouts.auth.sign_up") %>
<% end %>
</div>
</div>
<% end %>
</div>
</div>
<div class="mt-0 md:mt-8 sm:mx-auto sm:w-full sm:max-w-lg">
<%= yield %>
</div>
</div>
<%= render "layouts/shared/footer" %>
</div>
</div>
<% end %>