From 8b265a83140d78f342a887359478d1dc9702246e Mon Sep 17 00:00:00 2001 From: Alejandro Bailo <59607668+alejandrobailo@users.noreply.github.com> Date: Mon, 14 Sep 2026 11:18:31 +0200 Subject: [PATCH] fix(ui): defer billing onboarding and add AWS button styling (#12803) --- .../aws-marketplace-button.added.md | 1 + .../defer-onboarding-on-billing.fixed.md | 1 + .../__tests__/onboarding-gate.test.tsx | 52 ++++++++++++++++++ ui/components/onboarding/onboarding-gate.tsx | 7 ++- ui/components/shadcn/button/button.tsx | 2 + ui/styles/globals.css | 3 + .../aws-marketplace-button-desktop.png | Bin 0 -> 12676 bytes .../aws-marketplace-button-mobile.png | Bin 0 -> 10992 bytes .../aws-marketplace-button-tablet.png | Bin 0 -> 11292 bytes 9 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 ui/changelog.d/aws-marketplace-button.added.md create mode 100644 ui/changelog.d/defer-onboarding-on-billing.fixed.md create mode 100644 ui/tests/onboarding/evidence/aws-marketplace-button-desktop.png create mode 100644 ui/tests/onboarding/evidence/aws-marketplace-button-mobile.png create mode 100644 ui/tests/onboarding/evidence/aws-marketplace-button-tablet.png diff --git a/ui/changelog.d/aws-marketplace-button.added.md b/ui/changelog.d/aws-marketplace-button.added.md new file mode 100644 index 0000000000..235112967f --- /dev/null +++ b/ui/changelog.d/aws-marketplace-button.added.md @@ -0,0 +1 @@ +AWS Marketplace button variant with outlined styling for light and dark themes diff --git a/ui/changelog.d/defer-onboarding-on-billing.fixed.md b/ui/changelog.d/defer-onboarding-on-billing.fixed.md new file mode 100644 index 0000000000..5afcc36bcc --- /dev/null +++ b/ui/changelog.d/defer-onboarding-on-billing.fixed.md @@ -0,0 +1 @@ +Automatic onboarding stays hidden on billing pages and remains available after leaving billing diff --git a/ui/components/onboarding/__tests__/onboarding-gate.test.tsx b/ui/components/onboarding/__tests__/onboarding-gate.test.tsx index 4198ba5846..9a5f7cf88e 100644 --- a/ui/components/onboarding/__tests__/onboarding-gate.test.tsx +++ b/ui/components/onboarding/__tests__/onboarding-gate.test.tsx @@ -9,9 +9,11 @@ import { OnboardingGate } from "../onboarding-gate"; const pushMock = vi.fn(); const armMock = vi.fn(); +const pathnameMock = vi.fn(); vi.mock("next/navigation", () => ({ useRouter: () => ({ push: pushMock, replace: vi.fn() }), + usePathname: () => pathnameMock(), })); vi.mock("@/store/onboarding-checkpoint", () => ({ @@ -30,12 +32,62 @@ describe("OnboardingGate", () => { window.localStorage.clear(); pushMock.mockClear(); armMock.mockClear(); + pathnameMock.mockReturnValue("/"); }); afterEach(() => { vi.restoreAllMocks(); }); + it.each(["/billing", "/billing/", "/billing/checkout"])( + "defers onboarding on %s without resolving it", + (pathname) => { + // Given + pathnameMock.mockReturnValue(pathname); + + // When + render(); + + // Then + expect( + screen.queryByRole("button", { name: /get started/i }), + ).not.toBeInTheDocument(); + expect(localStorageAdapter.get(addProviderTourId)).toBeNull(); + expect(armMock).not.toHaveBeenCalled(); + expect(pushMock).not.toHaveBeenCalled(); + }, + ); + + it("offers onboarding after leaving billing without remounting the gate", async () => { + // Given + pathnameMock.mockReturnValue("/billing"); + const { rerender } = render(); + + // When + pathnameMock.mockReturnValue("/"); + rerender(); + + // Then + expect( + await screen.findByRole("button", { name: /get started/i }), + ).toBeInTheDocument(); + expect(localStorageAdapter.get(addProviderTourId)).toBeNull(); + expect(armMock).not.toHaveBeenCalled(); + }); + + it("does not suppress onboarding on a route that only shares the billing prefix", async () => { + // Given + pathnameMock.mockReturnValue("/billing-settings"); + + // When + render(); + + // Then + expect( + await screen.findByRole("button", { name: /get started/i }), + ).toBeInTheDocument(); + }); + describe("when the user has no providers and no completion record", () => { it("shows the Welcome modal", async () => { render(); diff --git a/ui/components/onboarding/onboarding-gate.tsx b/ui/components/onboarding/onboarding-gate.tsx index 0161bffef4..f32d411938 100644 --- a/ui/components/onboarding/onboarding-gate.tsx +++ b/ui/components/onboarding/onboarding-gate.tsx @@ -1,6 +1,6 @@ "use client"; -import { useRouter } from "next/navigation"; +import { usePathname, useRouter } from "next/navigation"; import { useState } from "react"; import { getOrderedFlows, shouldStartOnboarding } from "@/lib/onboarding"; @@ -20,6 +20,10 @@ interface OnboardingGateProps { // via useSyncExternalStore — server renders nothing, no hydration mismatch. export function OnboardingGate({ hasProviders }: OnboardingGateProps) { const router = useRouter(); + const pathname = usePathname(); + // Billing must stay usable before onboarding; leaving it keeps the gate eligible. + const isBillingRoute = + pathname === "/billing" || pathname?.startsWith("/billing/"); // Gate forces only the first flow (`add-provider`); remaining flows come via checkpoint/replay. const flow = getOrderedFlows()[0] ?? null; @@ -32,6 +36,7 @@ export function OnboardingGate({ hasProviders }: OnboardingGateProps) { const activeFlow = flow && + !isBillingRoute && !resolvedThisSession && shouldStartOnboarding({ hasProviders, completionRecord }) ? flow diff --git a/ui/components/shadcn/button/button.tsx b/ui/components/shadcn/button/button.tsx index f34347507b..bc37c08bc9 100644 --- a/ui/components/shadcn/button/button.tsx +++ b/ui/components/shadcn/button/button.tsx @@ -19,6 +19,8 @@ const buttonVariants = cva( "border border-transparent bg-bg-fail text-white hover:bg-bg-fail/90 active:bg-bg-fail/80 focus-visible:ring-bg-fail/50", outline: "border border-border-neutral-secondary bg-bg-neutral-secondary hover:bg-bg-neutral-tertiary active:bg-border-neutral-tertiary text-text-neutral-primary focus-visible:ring-border-neutral-tertiary/50", + "aws-marketplace": + "border-2 border-button-aws-marketplace bg-transparent text-button-aws-marketplace font-semibold hover:bg-button-aws-marketplace/5 active:bg-button-aws-marketplace/10 focus-visible:ring-button-aws-marketplace", ghost: "border border-transparent text-text-neutral-primary hover:bg-bg-neutral-tertiary active:bg-border-neutral-secondary focus-visible:ring-border-neutral-secondary/50", link: "text-button-tertiary underline-offset-4 hover:text-button-tertiary-hover disabled:bg-transparent", diff --git a/ui/styles/globals.css b/ui/styles/globals.css index d879b452d2..c8f60e2992 100644 --- a/ui/styles/globals.css +++ b/ui/styles/globals.css @@ -92,6 +92,7 @@ --bg-button-tertiary-hover: var(--color-blue-500); --bg-button-tertiary-active: var(--color-indigo-600); --bg-button-disabled: var(--color-neutral-300); + --button-aws-marketplace: #232f3e; /* Radar Map */ --bg-radar-map: #b51c8033; @@ -218,6 +219,7 @@ --bg-button-tertiary-hover: var(--color-blue-400); --bg-button-tertiary-active: var(--color-blue-600); --bg-button-disabled: var(--color-neutral-700); + --button-aws-marketplace: var(--color-white); /* Neutral Map */ --bg-neutral-map: var(--color-gray-800); @@ -330,6 +332,7 @@ --color-button-tertiary-hover: var(--bg-button-tertiary-hover); --color-button-tertiary-active: var(--bg-button-tertiary-active); --color-button-disabled: var(--bg-button-disabled); + --color-button-aws-marketplace: var(--button-aws-marketplace); /* Input Colors */ --color-bg-input-primary: var(--bg-input-primary); diff --git a/ui/tests/onboarding/evidence/aws-marketplace-button-desktop.png b/ui/tests/onboarding/evidence/aws-marketplace-button-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfac1e755a83a4ceb9be7926e1ff18a4b3ccae0 GIT binary patch literal 12676 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 literal 0 HcmV?d00001 diff --git a/ui/tests/onboarding/evidence/aws-marketplace-button-mobile.png b/ui/tests/onboarding/evidence/aws-marketplace-button-mobile.png new file mode 100644 index 0000000000000000000000000000000000000000..b0009e3b42bac2e7e4e92868619615683cdc59e2 GIT binary patch literal 10992 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 B*2(|? literal 0 HcmV?d00001