Most pages outside the storefront are navigational dead ends #52

Closed
opened 2026-08-18 12:52:43 -05:00 by bermudalamb · 1 comment
Owner

Found while reviewing the UI architecture for #51. The account page was not an isolated case — it was the general pattern.

Updated after #51 and #50 landed. Most of the original list is now fixed; what remains is smaller and more specific than when this was written.

Current state

Page Site header Way back to the storefront
/ storefront yes n/a
/cart yes yes
/account modal over the page behind fixed in #51
/login modal over the page behind fixed in #50
/register modal over the page behind fixed in #50
/forgot-password modal over the page behind fixed in #50
/reset-password modal over the page behind fixed in #50
/privacy no none at all
/verify-email no only /account
/admin own header no link back to the storefront

What is left

Three pages, and they do not share a single answer:

  • /privacy — still the worst of them, and still a bare card. It is linked from the registration form and from the storefront footer. #50 made the registration case less damaging by opening it in a new tab, so a part-filled signup form is no longer discarded, but reaching it from the footer is still a dead end.
  • /verify-email — reached from an email, and the customer may not be signed in. Its only link is to /account, which is useless to someone who is signed out.
  • /admin — deliberately separate, with its own header. Whether it should offer a way back to the storefront at all is a judgement call rather than a defect.

Root cause, revised

The original diagnosis was that the site header is written twice, in App.tsx and again in cart/Cart.tsx, so nothing makes a new page inherit it. That is still true and is still why the problem kept recurring.

What has changed is that the fix for most pages turned out not to be a shared layout. #51 and #50 established a different mechanism: AppRoutes in main.tsx renders the route table against a backdrop location, so a route in MODAL_ROUTES displays as a modal over the page the customer was already on — or over the storefront when they arrived by bookmark or email link. Those pages inherit navigation by being rendered over something that already has it, rather than by being wrapped in a shared header.

So the remaining question is narrower than "extract a layout":

  • Should /privacy and /verify-email join MODAL_ROUTES, or do they genuinely want to be pages with chrome? A privacy policy is a long document and arguably wants to be a real page; a modal is a poor place to read one. /verify-email is a short confirmation and would suit a modal well.
  • If either stays a page, the header still has to come from somewhere, and it is still written twice. Extracting it remains worthwhile for that case — and for /admin if it is ever given a link home.

Still worth deciding

  • Whether /admin gains a link back to the storefront, or is deliberately kept separate.
  • Whether the duplicated header in App.tsx and cart/Cart.tsx should be extracted regardless, purely to stop the two drifting.
Found while reviewing the UI architecture for #51. The account page was not an isolated case — it was the general pattern. **Updated after #51 and #50 landed.** Most of the original list is now fixed; what remains is smaller and more specific than when this was written. ## Current state | Page | Site header | Way back to the storefront | | --- | --- | --- | | `/` storefront | yes | n/a | | `/cart` | yes | yes | | `/account` | modal over the page behind | **fixed** in #51 | | `/login` | modal over the page behind | **fixed** in #50 | | `/register` | modal over the page behind | **fixed** in #50 | | `/forgot-password` | modal over the page behind | **fixed** in #50 | | `/reset-password` | modal over the page behind | **fixed** in #50 | | `/privacy` | **no** | **none at all** | | `/verify-email` | **no** | only `/account` | | `/admin` | own header | no link back to the storefront | ## What is left Three pages, and they do not share a single answer: - **`/privacy`** — still the worst of them, and still a bare card. It is linked from the registration form and from the storefront footer. #50 made the registration case less damaging by opening it in a **new tab**, so a part-filled signup form is no longer discarded, but reaching it from the footer is still a dead end. - **`/verify-email`** — reached from an email, and the customer may not be signed in. Its only link is to `/account`, which is useless to someone who is signed out. - **`/admin`** — deliberately separate, with its own header. Whether it should offer a way back to the storefront at all is a judgement call rather than a defect. ## Root cause, revised The original diagnosis was that the site header is written twice, in `App.tsx` and again in `cart/Cart.tsx`, so nothing makes a new page inherit it. That is still true and is still why the problem kept recurring. What has changed is that the fix for most pages turned out **not** to be a shared layout. #51 and #50 established a different mechanism: `AppRoutes` in `main.tsx` renders the route table against a *backdrop* location, so a route in `MODAL_ROUTES` displays as a modal over the page the customer was already on — or over the storefront when they arrived by bookmark or email link. Those pages inherit navigation by being rendered over something that already has it, rather than by being wrapped in a shared header. So the remaining question is narrower than "extract a layout": - Should `/privacy` and `/verify-email` join `MODAL_ROUTES`, or do they genuinely want to be pages with chrome? A privacy policy is a long document and arguably wants to be a real page; a modal is a poor place to read one. `/verify-email` is a short confirmation and would suit a modal well. - If either stays a page, the header still has to come from somewhere, and it is still written twice. Extracting it remains worthwhile for that case — and for `/admin` if it is ever given a link home. ## Still worth deciding - Whether `/admin` gains a link back to the storefront, or is deliberately kept separate. - Whether the duplicated header in `App.tsx` and `cart/Cart.tsx` should be extracted regardless, purely to stop the two drifting.
bermudalamb self-assigned this 2026-08-18 16:37:47 -05:00
bermudalamb added this to the Initial Build project 2026-08-18 17:28:45 -05:00
Author
Owner

Double check the items supposedly fixed with #50. They appear to be broken still. For example, /login and /register are not displaying in a modal. Those UIs are duplicated when clicking on the Favorite icon for an unknown customer.

Double check the items supposedly fixed with [#50](https://gitea.bermudalamb.synology.me/bermudalamb/redefined-designs/issues/50). They appear to be broken still. For example, `/login` and `/register` are not displaying in a modal. Those UIs are duplicated when clicking on the Favorite icon for an unknown customer.
bermudalamb moved this to Ready for Review in Initial Build on 2026-08-19 10:41:37 -05:00
bermudalamb moved this to Ready for Release in Initial Build on 2026-08-19 10:41:46 -05:00
bermudalamb moved this to Released in Initial Build on 2026-08-19 10:42:13 -05:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bermudalamb/redefined-designs#52