- {/* Stretched link — makes the whole card clickable */}
-
-
+
{/* Page underneath — revealed when cover opens */}
- {/* Top area: genre + plot count badges */}
+ {/* Top: genre badge */}
{displayGenre || "Uncategorized"}
-
- {storyline.plot_count} {storyline.plot_count === 1 ? "plot" : "plots"}
-
- {isNew && (
-
- NEW
-
- )}
{storyline.sunset && (
complete
@@ -109,18 +97,28 @@ export function StoryCard({
)}
- {/* Bottom: author name inside cover — z-40 so profile link sits above card link */}
-
-
-
- {storyline.writer_type === 1 && }
-
+ {/* Bottom: plot count + NEW badges */}
+
+
+
+ {storyline.plot_count} {storyline.plot_count === 1 ? "plot" : "plots"}
+
+ {isNew && (
+
+ NEW
+
+ )}
+
-
+
- {/* Metadata below notebook */}
+ {/* Metadata below notebook: author → TVL → rating */}
+
+
+ {storyline.writer_type === 1 && }
+
{storyline.token_address && (
diff --git a/src/components/__tests__/StoryCard.test.tsx b/src/components/__tests__/StoryCard.test.tsx
index 7073f349..2301b088 100644
--- a/src/components/__tests__/StoryCard.test.tsx
+++ b/src/components/__tests__/StoryCard.test.tsx
@@ -69,14 +69,14 @@ describe("StoryCard", () => {
it("links to correct story page", () => {
render();
- const link = screen.getByRole("link", { name: "Test Story Title" });
+ const link = screen.getAllByText("Test Story Title")[0].closest("a");
expect(link).toHaveAttribute("href", "/story/42");
});
it("applies moleskine-notebook class for hover animation", () => {
render();
- const container = screen.getAllByText("Test Story Title")[0].closest(".moleskine-notebook");
- expect(container).toBeTruthy();
+ const link = screen.getAllByText("Test Story Title")[0].closest("a");
+ expect(link).toHaveClass("moleskine-notebook");
});
it("shows plot count", () => {