Fix case-study share chrome, hero lockup width, and copy confirmation in the share dialog.

Marketing pages omitted create-flow nav copy, so Share rendered as a translation key; the case-study banner squeezed hero text to the thumbnail width; Copy link had no hover or copied state.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
adilallo
2026-09-09 22:00:19 -06:00
co-authored by Cursor
parent ddf7b0ef7a
commit ce581a42c8
17 changed files with 225 additions and 52 deletions
+4 -1
View File
@@ -157,11 +157,14 @@ describe("ContentBanner", () => {
const title = screen.getByRole("heading", { name: "Test Article" });
expect(title).toBeInTheDocument();
expect(title).toHaveClass("sm:text-x-small-display", "md:text-[32px]");
expect(title).toHaveClass("text-[32px]", "lg:text-medium-display");
expect(title).not.toHaveClass("xl:text-x-large-display");
expect(screen.getByText("Sample Operating Manual")).toBeInTheDocument();
const copyColumn = container.querySelector('[data-node-id="19189:9171"]');
expect(copyColumn).toHaveClass("lg:max-w-[365px]");
expect(copyColumn).not.toHaveClass("max-w-[365px]");
const copyLockup = title.closest("div.relative.z-20");
expect(copyLockup).toHaveStyle({ width: "100%" });
const bannerRow = container.querySelector(
'[data-figma-node="22015:42621"]',
);
+37
View File
@@ -70,6 +70,43 @@ describe("Share modal", () => {
expect(onClose).toHaveBeenCalledTimes(1);
});
it("confirms Copy link with Copied! when the handler succeeds", async () => {
const user = userEvent.setup();
const onCopyLink = vi.fn().mockResolvedValue(true);
render(
<Share
isOpen={true}
onClose={vi.fn()}
{...noopHandlers}
onCopyLink={onCopyLink}
/>,
);
await user.click(screen.getByRole("button", { name: "Copy link" }));
expect(onCopyLink).toHaveBeenCalledTimes(1);
expect(screen.getByRole("button", { name: "Copied!" })).toHaveAttribute(
"aria-pressed",
"true",
);
expect(screen.getByText("Link copied to clipboard")).toBeInTheDocument();
});
it("keeps Copy link when the handler reports failure", async () => {
const user = userEvent.setup();
render(
<Share
isOpen={true}
onClose={vi.fn()}
{...noopHandlers}
onCopyLink={vi.fn().mockResolvedValue(false)}
/>,
);
await user.click(screen.getByRole("button", { name: "Copy link" }));
expect(screen.getByRole("button", { name: "Copy link" })).toBeInTheDocument();
expect(
screen.queryByRole("button", { name: "Copied!" }),
).not.toBeInTheDocument();
});
it("calls onClose when header overflow (more) is activated, matching modal chrome parity", async () => {
const user = userEvent.setup();
const onClose = vi.fn();