SkateSpots/src/pages
SkateSpots 5d1a0e0fb0 feat(marketplace): listing detail page + shared trade/escrow actions
- New '/listing/:pubkey/:identifier' page: large gallery + lightbox, full
  description, details, seller trust + trade reputation card, and full actions
  (shared) for buyers and owners (mark sold/relist/delete)
- Extract ListingTradeActions (confirm/escrow request/ask-to-confirm/refund/
  contact + escrow dialog) and use it in BOTH the grid card and the detail page
  so there is one implementation
- useMarketplaceItem(pubkey, identifier) fetch hook
- Cards link their image + title to the detail page
- Smoke test covers /listing/:pubkey/:identifier

Gate: 101 tests, 0 errors/warnings, boot smoke green.
2026-09-26 22:30:43 +07:00
..
AboutPage.tsx fix(a11y): Batch E part 1 — labels, valid nesting, touch targets 2026-09-26 18:46:51 +07:00
AmberCallbackPage.tsx ux: migrate more empty states + fill in missing page titles (U1/U2) 2026-09-24 18:50:25 +07:00
BecomeBuilderPage.tsx Add tour countdown badges + fix/standardize NIP-05 provider prompts 2026-09-09 22:31:44 +07:00
BecomeCoachPage.tsx Add tour countdown badges + fix/standardize NIP-05 provider prompts 2026-09-09 22:31:44 +07:00
BecomeEditorPage.tsx The Lab: warn before a "Become a …" form silently overwrites an existing profile (1.2.28) 2026-09-07 22:06:49 +07:00
BecomeFilmerPage.tsx Add tour countdown badges + fix/standardize NIP-05 provider prompts 2026-09-09 22:31:44 +07:00
BecomePhotographerPage.tsx Add tour countdown badges + fix/standardize NIP-05 provider prompts 2026-09-09 22:31:44 +07:00
BecomeRolePage.tsx refactor: consolidate become-* routes + migrate empty states to shared component 2026-09-24 18:44:53 +07:00
BecomeSkaterPage.tsx Skater profile: browse real map spots for home spot + always use kind-0 profile pic 2026-09-02 21:44:12 +07:00
BountyLeaderboardPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
CoachDetailPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
CollectionDetailPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
CommunityStatsPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
ContactsPage.tsx feat(ui): PageHeader/PageContainer foundation (piloted on Contacts); profile info-first on mobile 2026-09-26 19:17:55 +07:00
ConversationPage.tsx feat(marketplace): wire Cashu escrow into the trade flow (native) 2026-09-26 21:08:36 +07:00
CreateCrewPage.tsx Redesign create-crew into a guided, idiotproof wizard 2026-09-03 00:44:59 +07:00
CreateEventPage.tsx feat(events): crowdfunding funding goals via zaps 2026-09-26 17:24:42 +07:00
CreateListingPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
CreateShopPage.tsx Shops: preserve unmanaged tags on edit + drop debug log (1.2.31) 2026-09-07 22:29:51 +07:00
CreateSpotPage.tsx Add spot "Shelter" (weather protection) field 2026-09-10 11:38:43 +07:00
CreateTourPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
CrewDetailPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
CrewsPage.tsx refactor: consolidate become-* routes + migrate empty states to shared component 2026-09-24 18:44:53 +07:00
DirectMessagesPage.tsx feat(dm): group DMs (NIP-17) — inbox list + group thread 2026-09-26 19:52:33 +07:00
EditCrewPage.tsx Step 3: Crews — map-anchored collective feature (kind 35006) 2026-07-24 13:59:50 +07:00
EditEventPage.tsx EditEventPage: stop stripping unmanaged tags on edit (linked spots/crews, entry fee, Pro listing) (1.2.29) 2026-09-07 22:10:34 +07:00
EditShopPage.tsx Shops: preserve unmanaged tags on edit + drop debug log (1.2.31) 2026-09-07 22:29:51 +07:00
EditSpotPage.tsx Add spot "Shelter" (weather protection) field 2026-09-10 11:38:43 +07:00
EditTourPage.tsx ux: migrate more empty states + fill in missing page titles (U1/U2) 2026-09-24 18:50:25 +07:00
EventDetailPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
EventsPage.tsx chore(lint): clear all react-hooks/exhaustive-deps warnings 2026-09-26 22:09:43 +07:00
FAQPage.tsx fix(ux): Batch F part 2 — shop gallery lightbox; real FAQ content 2026-09-26 18:52:05 +07:00
FoodPage.tsx Audit fixes: harden Amber signEvent response handling, fix web AmberSigner signEvent naming, add Blossom upload fallbacks, sanitize untrusted URLs in FoodPage/CreateTourPage 2026-09-03 20:20:08 +07:00
GearSwapPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
GlossaryPage.tsx Glossary: drop difficulty levels, expand & correct tricks 2026-07-29 23:08:37 +07:00
GroupConversationPage.tsx feat(dm): group DMs (NIP-17) — inbox list + group thread 2026-09-26 19:52:33 +07:00
Index.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
LabPage.tsx chore(lint): clear all react-hooks/exhaustive-deps warnings 2026-09-26 22:09:43 +07:00
LicensePage.tsx Fix ESLint gate: scope ignores to app source (exclude android/.agents/cvm-server/public html/scripts), add index.html title, downgrade unused-vars & no-explicit-any to warnings, fix real lint errors (SkateGlobe unused-expr, EventsPage prefer-const, LicensePage Infinity shadow, useless-escape in SasquatchGuide/RiderCardPage, stale eslint-disable directives) 2026-09-03 21:30:56 +07:00
ListingDetailPage.tsx feat(marketplace): listing detail page + shared trade/escrow actions 2026-09-26 22:30:43 +07:00
MapPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
MarketplacePage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
MintsPage.tsx feat(mints): Cashu mint directory (MintRadar) + same-origin proxy 2026-09-26 21:20:19 +07:00
NewsletterPage.tsx chore(lint): reach zero warnings (react-refresh) 2026-09-26 22:23:45 +07:00
NIP19Page.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
NotFound.tsx New project created with Shakespeare 2026-06-15 19:49:07 +07:00
OnboardingPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
PrivacyPage.tsx Fix 78 pre-existing TypeScript errors surfaced by npm test 2026-09-03 21:18:02 +07:00
PyramidPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
RiderCardPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
SettingsPage.tsx chore(lint): clear all no-unused-vars warnings (position-precise) 2026-09-26 22:20:21 +07:00
ShopDetailPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
SignersPage.tsx chore(lint): remove safely-detectable unused locals 2026-09-26 21:58:03 +07:00
SkatersPage.tsx refactor: consolidate become-* routes + migrate empty states to shared component 2026-09-24 18:44:53 +07:00
SpotCollectionsPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
SpotDetailPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
StashPage.tsx chore(lint): remove all explicit any + sweep dead imports 2026-09-26 21:40:42 +07:00
SupportersPage.tsx Refine onboarding: collapse "Why bother?" for a lighter first view; update Suan Luang Backyard tagline 2026-09-16 10:25:47 +07:00
TourDetailPage.tsx fix(ux): Batch A part 1 — dead flows 2026-09-26 17:43:19 +07:00
WalletPage.tsx feat(marketplace): wire Cashu escrow into the trade flow (native) 2026-09-26 21:08:36 +07:00
ZapLeaderboardPage.tsx fix(ux): Batch B — errors no longer masquerade as empty/404 2026-09-26 17:51:30 +07:00