From ea16d0e09019197acd1d4c33e0dd84256966ada9 Mon Sep 17 00:00:00 2001 From: Cho Young-Hwi Date: Fri, 3 Apr 2026 19:51:31 +0100 Subject: [PATCH 1/2] [#820] Restore mobile layout + fix desktop spacing Stats grid and CTA render in two responsive positions: - Desktop (sm+): inside flex-1 column next to cover (hidden on mobile) - Mobile: full-width below cover+info row (hidden on desktop) Also: sm:gap-6 between cover and info, mt-6 between info rows and stats on desktop for more breathing room. Fixes #820 Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/story/[storylineId]/page.tsx | 118 +++++++++++++++------------ 1 file changed, 65 insertions(+), 53 deletions(-) diff --git a/src/app/story/[storylineId]/page.tsx b/src/app/story/[storylineId]/page.tsx index a21ce284..ac4d45ac 100644 --- a/src/app/story/[storylineId]/page.tsx +++ b/src/app/story/[storylineId]/page.tsx @@ -262,10 +262,62 @@ function StoryHeader({ ? new Date(storyline.block_timestamp).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" }) : null; + const statsGrid = priceInfo ? ( +
+
+ +
+
+
{formatSupply(priceInfo.totalSupply)}
+
Supply Minted
+
+
+ {storyline.sunset ? ( + <> +
{storyline.plot_count}
+
Complete
+ + ) : storyline.has_deadline && storyline.last_plot_time ? ( + <> +
+ +
+
Deadline
+ + ) : ( + <> +
+
Deadline
+ + )} +
+
+
{formatPrice(priceInfo.pricePerToken)} {RESERVE_LABEL}
+
Token Price
+
+
+
{storyline.plot_count}
+
{storyline.plot_count === 1 ? "Plot" : "Plots"}
+
+
+
{createdDate ?? "—"}
+
Created
+
+
+ ) : null; + + const ctaButton = ( + + ); + return (
-
- {/* Moleskine book cover — left-aligned on all sizes */} +
+ {/* Moleskine book cover */}
- {/* Right column: info only */} + {/* Right column: info + stats (desktop only) */}

{storyline.title} @@ -326,59 +378,19 @@ function StoryHeader({

- {/* Stats grid — inside right column, next to cover */} - {priceInfo && ( -
-
- -
-
-
{formatSupply(priceInfo.totalSupply)}
-
Supply Minted
-
-
- {storyline.sunset ? ( - <> -
{storyline.plot_count}
-
Complete
- - ) : storyline.has_deadline && storyline.last_plot_time ? ( - <> -
- -
-
Deadline
- - ) : ( - <> -
-
Deadline
- - )} -
-
-
{formatPrice(priceInfo.pricePerToken)} {RESERVE_LABEL}
-
Token Price
-
-
-
{storyline.plot_count}
-
{storyline.plot_count === 1 ? "Plot" : "Plots"}
-
-
-
{createdDate ?? "—"}
-
Created
-
-
+ {/* Stats + CTA — desktop only (inside right column) */} + {statsGrid && ( +
{statsGrid}
)} - - {/* CTA — in right column */} - +
{ctaButton}
+ + {/* Stats + CTA — mobile only (full-width below cover+info row) */} + {statsGrid && ( +
{statsGrid}
+ )} +
{ctaButton}
); } From 678f850477019922084d21ce9fc7a842a032db65 Mon Sep 17 00:00:00 2001 From: Cho Young-Hwi Date: Fri, 3 Apr 2026 19:54:00 +0100 Subject: [PATCH 2/2] [#820] Make mobile CTA button full-width Apply w-full to AddPlotButton's anchor/div children on mobile via parent selector [&_a]:w-full [&_div]:w-full. Desktop keeps inline-block auto-width. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/app/story/[storylineId]/page.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/story/[storylineId]/page.tsx b/src/app/story/[storylineId]/page.tsx index ac4d45ac..bb660fc4 100644 --- a/src/app/story/[storylineId]/page.tsx +++ b/src/app/story/[storylineId]/page.tsx @@ -390,7 +390,7 @@ function StoryHeader({ {statsGrid && (
{statsGrid}
)} -
{ctaButton}
+
{ctaButton}
); }