diff --git a/src/app/profile/[address]/page.tsx b/src/app/profile/[address]/page.tsx index 5961bce8..175ac5b1 100644 --- a/src/app/profile/[address]/page.tsx +++ b/src/app/profile/[address]/page.tsx @@ -823,107 +823,122 @@ function StoryRow({ }); return ( -
- {/* Row 1: Title + badges */} -
- + {/* Moleskine book card */} + +
- {storyline.title} - -
- {storyline.genre && ( - - {storyline.genre} + {/* Elastic band */} +
+ {/* Top: genre */} +
+ + {storyline.genre || "Uncategorized"} - )} - {storyline.sunset ? ( - - complete +
+ {/* Center: title */} +
+

+ {storyline.title} +

+
+ {/* Bottom: plot count + status */} +
+ + {storyline.plot_count} {storyline.plot_count === 1 ? "plot" : "plots"} - ) : ( - - active + {storyline.sunset ? ( + + complete + + ) : ( + + active + + )} +
+
+ + + {/* Info below/beside the book — all visible, no toggles */} +
+ {/* Stats row */} +
+ {priceInfo ? ( + + Price: {formatPrice(priceInfo.pricePerToken)} {RESERVE_LABEL} + {plotUsd != null && (≈ {formatUsdValue(Number(priceInfo.pricePerToken) * plotUsd)})} + ) : ( + Price: — + )} + · + {holderCount !== undefined ? `${holderCount} holder${holderCount !== 1 ? "s" : ""}` : "—"} + · + {formatViewCount(storyline.view_count)} views + {storyline.block_timestamp && ( + <> + · + + {new Date(storyline.block_timestamp).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" })} + + )}
-
- {/* Row 2: Key stats — inline */} -
- {storyline.plot_count} {storyline.plot_count === 1 ? "plot" : "plots"} - · - {holderCount !== undefined ? `${holderCount} holder${holderCount !== 1 ? "s" : ""}` : "—"} - · - {formatViewCount(storyline.view_count)} views - · - {priceInfo ? ( - - {formatPrice(priceInfo.pricePerToken)} {RESERVE_LABEL} - {plotUsd != null && ( - (≈ {formatUsdValue(Number(priceInfo.pricePerToken) * plotUsd)}) - )} - - ) : ( - + {/* TVL + trading stats */} + {storyline.token_address && ( + )} - {storyline.block_timestamp && ( - <> - · - - {new Date(storyline.block_timestamp).toLocaleDateString("en-US", { - month: "short", - day: "numeric", - year: "numeric", - })} - - + + {/* Donations */} + {storyline.token_address && ( + )} -
- {/* Deadline countdown — own profile only, active storylines */} - {isOwnProfile && !storyline.sunset && storyline.last_plot_time && ( - - )} + {/* Deadline countdown */} + {!storyline.sunset && storyline.last_plot_time && ( + + )} - {/* Genre prompt — own profile only, when genre not set */} - {isOwnProfile && !storyline.genre && ( - - )} + {/* Genre prompt */} + {isOwnProfile && !storyline.genre && ( + + )} - {/* Claim royalties — own profile only */} - {isOwnProfile && storyline.token_address && ( -
+ {/* Claim royalties */} + {isOwnProfile && storyline.token_address && ( -
- )} + )} - {/* Expandable: TVL, donations, donation history */} - {storyline.token_address && ( -
- - ▶ more details - ▼ details - -
- - - {isOwnProfile && ( - - )} -
-
- )} + {/* Donation history */} + {isOwnProfile && storyline.token_address && ( + + )} +
); }