Skip to content

refactor(wishlist): route owner detail page through the unified layout - #406

Merged
catomean merged 2 commits into
mainfrom
refactor/wishlist-unified-detail
Jul 22, 2026
Merged

refactor(wishlist): route owner detail page through the unified layout#406
catomean merged 2 commits into
mainfrom
refactor/wishlist-unified-detail

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

What & why

The owner dashboard wishlist page was the last marketplace entity still on the legacy EntityDetailLayout — a flat label→value grid showing Status / Created / Visibility as content, exactly what the entity-detail-redesign spec deletes. Every other entity's owner view already renders through PublicEntityDetailPage (the buyers' intent-driven layout + a manage bar). Wishlist now joins them, finishing the redesign rollout.

Changes

  • New SSOT src/components/public/detail-configs/wishlist.tsxbuildWishlistDetailConfig(items) + WISHLIST_ITEM_COLUMNS. The public and owner routes previously duplicated the item-list rendering; now they share one builder (layout, funding math, copy live in one place).
  • renderDetails is now owner-aware — added an isOwner arg to EntityDetailConfig.renderDetails (backward-compatible; existing configs ignore it). Wishlist uses it to keep the owner's management affordances (Add Item + per-item edit links) while visitors see the same items read-only.
  • Owner page → thin wrapper: fetch items → PublicEntityDetailPage. Deletes the flat _components.tsx grid + sidebar.

Behavior preserved

  • Owner keeps Edit (manage bar editHrefcreate?edit=<id>, same target as the old button), Share, and item management.
  • Drafts / inactive wishlists still show only to their owner via the existing owner-preview path.
  • No Status: / Created / Visibility rendered as primary content (spec acceptance criteria).

Verification

  • type-check (non-incremental) clean · lint clean · production build green (both /wishlists/[id] and /dashboard/wishlists/[id] compile as dynamic server routes).
  • Live rendering not driven from here (sandbox can't reach the prod DB); the layout component itself is already battle-tested across the other 10 entity types.

🤖 Generated with Claude Code

catomean and others added 2 commits July 19, 2026 07:52
Settled money on a FleetCrown-linked OC project is the one ground-truth
signal the capability layer can't derive itself. Fire-and-forget HMAC
POST to FC /api/orangecat/events (same shared secret as entitlement);
the receiver drops events for unlinked entities. Inert until the secret
is set.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The owner dashboard wishlist page was the last marketplace entity still on the
legacy EntityDetailLayout — a flat label→value grid showing Status/Created/
Visibility as content, exactly what the detail-redesign spec deletes. Every
other entity's owner view is already PublicEntityDetailPage (buyers' layout +
manage bar); wishlist now joins them.

- Extract buildWishlistDetailConfig(items) + WISHLIST_ITEM_COLUMNS into a
  shared detail-config module — SSOT for both the public and owner routes
  (they previously duplicated the item-list rendering).
- Make EntityDetailConfig.renderDetails owner-aware (adds an `isOwner` arg,
  backward-compatible — existing configs ignore it). Wishlist uses it to keep
  the owner's management affordances (Add Item + per-item edit links) while
  visitors see the same items read-only.
- Owner page becomes a thin wrapper: fetch items → PublicEntityDetailPage.
  Deletes the flat _components.tsx grid + sidebar.

Owner keeps Edit (via the manage bar's editHref → create?edit=id), Share, and
item management; drafts/inactive wishlists still show only to their owner via
the existing owner-preview path. Type-check + lint clean; production build green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@catomean
catomean merged commit 2c2ed4d into main Jul 22, 2026
5 of 6 checks passed
@catomean
catomean deleted the refactor/wishlist-unified-detail branch July 22, 2026 10:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant