From 571257e5c39059d38f1ac000f64bdaa121a58c45 Mon Sep 17 00:00:00 2001 From: Igor Bubelov Date: Sat, 26 Sep 2026 13:33:42 +0700 Subject: [PATCH] fix(mobile): stop detail-page grids from overflowing horizontally MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The spot page (and the other detail pages) used `grid lg:grid-cols-3` with no explicit mobile column. Below the `lg` breakpoint the grid falls back to a single implicit `auto` track, whose minimum is the min-content of its items. A long mapper name ("Tip the Mapper" card) gave the sidebar a ~559px min-content, so the whole grid widened past the viewport and was clipped by the global `html, body { overflow-x: hidden }` — content cut off on the right with no way to scroll to it. Fixes: - Add `grid-cols-1` to detail-page grids so the mobile track is `minmax(0, 1fr)` and can never exceed the container. Applied to Spot, Shop, Event, NIP-19, Crew and Coach detail pages. - Add `min-w-0` to their sidebar/main columns so long content can shrink and truncate instead of forcing the track wider. - Make the Spot Chat header wrap (`flex-wrap` + `gap-y`) so the trust filter and channel badge no longer get clipped on narrow phones. --- src/components/SpotChat.tsx | 6 +++--- src/pages/CoachDetailPage.tsx | 10 +++++----- src/pages/CrewDetailPage.tsx | 10 +++++----- src/pages/EventDetailPage.tsx | 12 ++++++------ src/pages/NIP19Page.tsx | 2 +- src/pages/ShopDetailPage.tsx | 12 ++++++------ src/pages/SpotDetailPage.tsx | 8 ++++---- 7 files changed, 30 insertions(+), 30 deletions(-) diff --git a/src/components/SpotChat.tsx b/src/components/SpotChat.tsx index 0a840b9..0f36cbc 100644 --- a/src/components/SpotChat.tsx +++ b/src/components/SpotChat.tsx @@ -206,8 +206,8 @@ export function SpotChat({ return ( -
- +
+ Spot Chat -
+
#{channel} diff --git a/src/pages/CoachDetailPage.tsx b/src/pages/CoachDetailPage.tsx index 0f053f8..6048fcd 100644 --- a/src/pages/CoachDetailPage.tsx +++ b/src/pages/CoachDetailPage.tsx @@ -56,8 +56,8 @@ function CoachDetailSkeleton() {
-
-
+
+
@@ -220,9 +220,9 @@ export default function CoachDetailPage() { Back to The Lab -
+
{/* Main Content */} -
+
{/* Confirm-membership prompt (only for listed pending members) */} {isCollective && ( {/* Sidebar */} -
+
{/* Contact Card */} diff --git a/src/pages/CrewDetailPage.tsx b/src/pages/CrewDetailPage.tsx index 3cd7bd4..1417a59 100644 --- a/src/pages/CrewDetailPage.tsx +++ b/src/pages/CrewDetailPage.tsx @@ -230,8 +230,8 @@ export default function CrewDetailPage() {
-
-
+
+
@@ -256,9 +256,9 @@ export default function CrewDetailPage() { Back to Crews -
+
{/* Main */} -
+
{/* Confirm membership prompt (listed pending members only) */} {hasMembers && ( {/* Sidebar — ordered: leadership → who → support → band → connections → founder */} -
+
{/* Leadership — team leader (founder) + captains (admins) */} diff --git a/src/pages/EventDetailPage.tsx b/src/pages/EventDetailPage.tsx index a915f2c..6bef82f 100644 --- a/src/pages/EventDetailPage.tsx +++ b/src/pages/EventDetailPage.tsx @@ -56,8 +56,8 @@ function EventDetailSkeleton() { return (
-
-
+
+
@@ -69,7 +69,7 @@ function EventDetailSkeleton() {
-
+
@@ -321,9 +321,9 @@ export default function EventDetailPage() {
)} -
+
{/* Main Content */} -
+
{/* ── Immersive hero ── */}
{/* Cover */} @@ -504,7 +504,7 @@ export default function EventDetailPage() {
{/* Sidebar */} -
+
{/* Date Card */} diff --git a/src/pages/NIP19Page.tsx b/src/pages/NIP19Page.tsx index 62defdd..25967b5 100644 --- a/src/pages/NIP19Page.tsx +++ b/src/pages/NIP19Page.tsx @@ -399,7 +399,7 @@ function ProfilePage({ pubkey }: { pubkey: string }) { )} {/* Profile Info */} -
+
{/* Main Content */}
{/* About */} diff --git a/src/pages/ShopDetailPage.tsx b/src/pages/ShopDetailPage.tsx index 0cbc630..3ddae23 100644 --- a/src/pages/ShopDetailPage.tsx +++ b/src/pages/ShopDetailPage.tsx @@ -58,8 +58,8 @@ function ShopDetailSkeleton() { return (
-
-
+
+
@@ -67,7 +67,7 @@ function ShopDetailSkeleton() {
-
+
@@ -210,9 +210,9 @@ export default function ShopDetailPage() { Back to Map -
+
{/* Main Content */} -
+
{/* Image Gallery */} {shop.images.length > 0 ? (
@@ -364,7 +364,7 @@ export default function ShopDetailPage() {
{/* Sidebar */} -
+
{/* Contact Card */} {(shop.phone || shop.email || shop.website || shop.instagram) && ( diff --git a/src/pages/SpotDetailPage.tsx b/src/pages/SpotDetailPage.tsx index 576237c..03d7355 100644 --- a/src/pages/SpotDetailPage.tsx +++ b/src/pages/SpotDetailPage.tsx @@ -95,7 +95,7 @@ function SpotDetailSkeleton() { return (
-
+
@@ -245,7 +245,7 @@ export default function SpotDetailPage() { Back to Map -
+
{/* Main Content */}
{/* Image Gallery - Combines owner photos + community photos */} @@ -756,7 +756,7 @@ export default function SpotDetailPage() {
{/* Sidebar */} -
+
{/* Who's Skating - Only show for regular spots, not shops */} {!isShop && (