From af26905e0933a58e0351418cb445e4c5aa50442a Mon Sep 17 00:00:00 2001 From: Oskar Otwinowski Date: Tue, 28 Apr 2026 15:57:41 +0200 Subject: [PATCH 1/2] feat(webapp): preselect manual card and add docs links in private connections setup - Default 'I have my details' as the selected setup method when opening the Add Private Connection page so the form is immediately usable - Replace the embedded docs iframe in the Step-by-step guide card with a button that opens the docs page in a new tab - Add a 'Docs' nav-bar accessory linking to the private-link setup guide on both the Private Connections list and Add Connection pages, matching the 'Task docs' pattern used elsewhere --- .../route.tsx | 9 +++ .../route.tsx | 65 +++++++++++++------ 2 files changed, 53 insertions(+), 21 deletions(-) diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx index 7c82333ccc0..a62929a0619 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections._index/route.tsx @@ -18,6 +18,7 @@ import { logger } from "~/services/logger.server"; import { getPrivateLinks } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; import { + docsPath, OrganizationParamsSchema, organizationPath, v3PrivateConnectionsPath, @@ -29,6 +30,7 @@ import { type ActionFunctionArgs, json } from "@remix-run/server-runtime"; import { deletePrivateLink } from "~/services/platform.v3.server"; import { redirectWithErrorMessage, redirectWithSuccessMessage } from "~/models/message.server"; import { + BookOpenIcon, ClipboardDocumentIcon, PlusIcon, TrashIcon, @@ -182,6 +184,13 @@ export default function Page() { + + Private connection docs + {hasPrivateNetworking && canAdd && ( Add Connection diff --git a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx index 649419b9c65..cd18ab9221c 100644 --- a/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx +++ b/apps/webapp/app/routes/_app.orgs.$organizationSlug.settings.private-connections.new/route.tsx @@ -12,6 +12,7 @@ import { PageContainer, } from "~/components/layout/AppLayout"; import { Button, LinkButton } from "~/components/primitives/Buttons"; +import { ClipboardField } from "~/components/primitives/ClipboardField"; import { Fieldset } from "~/components/primitives/Fieldset"; import { FormButtons } from "~/components/primitives/FormButtons"; import { FormError } from "~/components/primitives/FormError"; @@ -19,7 +20,7 @@ import { Header2, Header3 } from "~/components/primitives/Headers"; import { Input } from "~/components/primitives/Input"; import { InputGroup } from "~/components/primitives/InputGroup"; import { Label } from "~/components/primitives/Label"; -import { NavBar, PageTitle } from "~/components/primitives/PageHeader"; +import { NavBar, PageAccessories, PageTitle } from "~/components/primitives/PageHeader"; import { Paragraph } from "~/components/primitives/Paragraph"; import { Select, SelectItem } from "~/components/primitives/Select"; import { prisma } from "~/db.server"; @@ -36,11 +37,14 @@ import { } from "~/services/platform.v3.server"; import { requireUserId } from "~/services/session.server"; import { + docsPath, OrganizationParamsSchema, organizationPath, v3PrivateConnectionsPath, } from "~/utils/pathBuilder"; import { + ArrowTopRightOnSquareIcon, + BookOpenIcon, CommandLineIcon, DocumentTextIcon, PencilSquareIcon, @@ -531,7 +535,7 @@ export default function Page() { const { availableRegions, activeRegions, awsAccountIds } = useTypedLoaderData(); const { organizationSlug } = useParams(); const lastSubmission = useActionData(); - const [setupMethod, setSetupMethod] = useState(null); + const [setupMethod, setSetupMethod] = useState("manual"); const defaultRegion = "us-east-1"; @@ -547,6 +551,15 @@ export default function Page() { + + + Private connection docs + + @@ -651,7 +664,7 @@ export default function Page() { )} - {/* Docs iframe */} + {/* Docs link */} {setupMethod === "docs" && (
Setup Guide @@ -659,37 +672,47 @@ export default function Page() { <> When adding allowed principals to your VPC Endpoint Service, use the following - AWS account ID(s): + AWS account ARN(s): -
+
{awsAccountIds.map((id) => ( - - {id} - + ))}
)} -