+ {/* Primary: title + badges + price */}
+
+
- {/* Elastic band */}
-
- {/* Top: genre */}
-
-
- {storyline.genre || "Uncategorized"}
-
-
- {/* Center: title */}
-
-
- {storyline.title}
-
-
- {/* Bottom: plot count + status */}
-
-
- {storyline.plot_count} {storyline.plot_count === 1 ? "plot" : "plots"}
-
- {storyline.sunset ? (
-
- complete
-
- ) : (
-
- active
-
+ {storyline.title}
+
+ {storyline.genre && (
+
+ {storyline.genre}
+
+ )}
+ {storyline.sunset ? (
+ complete
+ ) : (
+ active
+ )}
+ {priceInfo && (
+
+ {formatPrice(priceInfo.pricePerToken)} {RESERVE_LABEL}
+ {plotUsd != null && (
+ (≈ {formatUsdValue(Number(priceInfo.pricePerToken) * plotUsd)})
)}
-
-
-
-
- {/* 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" })}
-
- >
- )}
-
+
+ )}
+
- {/* TVL + trading stats */}
- {storyline.token_address && (
-
+ {/* Secondary: compact stats */}
+
+ {storyline.plot_count} {storyline.plot_count === 1 ? "plot" : "plots"}
+ ·
+ {holderCount !== undefined ? `${holderCount} ${holderCount === 1 ? "holder" : "holders"}` : "—"}
+ ·
+ {formatViewCount(storyline.view_count)} views
+ {storyline.block_timestamp && (
+ <>
+ ·
+ {new Date(storyline.block_timestamp).toLocaleDateString("en-US", { month: "short", day: "numeric", year: "numeric" })}
+ >
)}
+
- {/* Donations */}
- {storyline.token_address && (
+ {/* TVL + donations */}
+ {storyline.token_address && (
+
+
- )}
+
+ )}
- {/* Deadline countdown */}
- {!storyline.sunset && storyline.last_plot_time && (
+ {/* Deadline */}
+ {!storyline.sunset && storyline.last_plot_time && (
+
- )}
+
+ )}
- {/* Genre prompt */}
- {isOwnProfile && !storyline.genre && (
+ {/* Owner-only: genre edit, royalties, donation history */}
+ {isOwnProfile && !storyline.genre && (
+
- )}
-
- {/* Claim royalties */}
- {isOwnProfile && storyline.token_address && (
+
+ )}
+ {isOwnProfile && storyline.token_address && (
+
- )}
-
- {/* Donation history */}
- {isOwnProfile && storyline.token_address && (
-
- )}
-
+
+ )}
+ {isOwnProfile && storyline.token_address && (
+