From a9188e6f6a4d009701c8b529489468f4db8f36f2 Mon Sep 17 00:00:00 2001 From: Shaun Andrews Date: Tue, 16 Jun 2026 15:48:36 -0400 Subject: [PATCH 1/2] Agentic UI: combine new-site entry points --- .../components/blueprint-selector/index.tsx | 87 +++++++++++-------- .../blueprint-selector/style.module.css | 20 +++++ .../route-onboarding-blueprint/index.tsx | 7 +- .../router/route-onboarding-create/index.tsx | 2 +- .../router/route-onboarding-home/index.tsx | 12 +-- apps/ui/src/ui-desks/onboarding/index.tsx | 1 + 6 files changed, 76 insertions(+), 53 deletions(-) diff --git a/apps/ui/src/components/blueprint-selector/index.tsx b/apps/ui/src/components/blueprint-selector/index.tsx index c6d6f3a93f..807c96805e 100644 --- a/apps/ui/src/components/blueprint-selector/index.tsx +++ b/apps/ui/src/components/blueprint-selector/index.tsx @@ -26,6 +26,7 @@ interface BlueprintSelectorProps { featured: FeaturedBlueprint[] | undefined; isFeaturedLoading: boolean; onPick: ( blueprint: PickedBlueprint ) => void; + onPickEmpty: () => void; } const FILE_ACCEPT = 'application/json,.json,application/zip,.zip'; @@ -34,6 +35,7 @@ export function BlueprintSelector( { featured, isFeaturedLoading, onPick, + onPickEmpty, }: BlueprintSelectorProps ) { const connector = useConnector(); const [ uploadError, setUploadError ] = useState< string | null >( null ); @@ -183,7 +185,7 @@ export function BlueprintSelector( {
-

{ __( 'Featured blueprints' ) }

+

{ __( 'Choose a starting point' ) }

{ isFeaturedLoading && (

{ __( 'Loading featured blueprints…' ) }

) } @@ -192,45 +194,54 @@ export function BlueprintSelector( { { __( 'No featured blueprints available right now.' ) }

) } - { featured && featured.length > 0 && ( - - ) } + > + + { __( 'Preview' ) } + + ) } + + ) ) } +
); diff --git a/apps/ui/src/components/blueprint-selector/style.module.css b/apps/ui/src/components/blueprint-selector/style.module.css index 6ee1545b9d..2e30ac7e8f 100644 --- a/apps/ui/src/components/blueprint-selector/style.module.css +++ b/apps/ui/src/components/blueprint-selector/style.module.css @@ -78,6 +78,26 @@ background: #f0f0f0; } +.emptySiteMedia { + display: block; + width: 100%; + aspect-ratio: 16 / 9; + background: + linear-gradient( + 90deg, + color-mix(in srgb, var(--wpds-color-stroke-interactive-brand, #3858e9) 18%, transparent) + 1px, + transparent 1px + ), + linear-gradient( + color-mix(in srgb, var(--wpds-color-stroke-interactive-brand, #3858e9) 18%, transparent) + 1px, + transparent 1px + ), + var(--wpds-color-bg-surface-neutral, #f6f7f7); + background-size: 24px 24px; +} + .cardBody { display: flex; flex-direction: column; diff --git a/apps/ui/src/ui-classic/router/route-onboarding-blueprint/index.tsx b/apps/ui/src/ui-classic/router/route-onboarding-blueprint/index.tsx index 099c5b8c0c..40990922d5 100644 --- a/apps/ui/src/ui-classic/router/route-onboarding-blueprint/index.tsx +++ b/apps/ui/src/ui-classic/router/route-onboarding-blueprint/index.tsx @@ -122,16 +122,15 @@ function OnboardingBlueprintPage() { if ( activeStep === 'select' ) { return (
-

{ __( 'Start from a Blueprint' ) }

+

{ __( 'Build a new site' ) }

- { __( - 'Pick a featured Blueprint or drop in your own to provision plugins, content, and settings.' - ) } + { __( 'Start from scratch or choose a Blueprint to provision plugins and settings.' ) }

void navigate( { to: '/onboarding/create' } ) } />
); diff --git a/apps/ui/src/ui-classic/router/route-onboarding-create/index.tsx b/apps/ui/src/ui-classic/router/route-onboarding-create/index.tsx index bbb98abf50..206fae4cc5 100644 --- a/apps/ui/src/ui-classic/router/route-onboarding-create/index.tsx +++ b/apps/ui/src/ui-classic/router/route-onboarding-create/index.tsx @@ -51,7 +51,7 @@ function CreateSitePage() { initialValues={ proposedName ? { name: proposedName } : undefined } existingDomainNames={ existingDomainNames ?? [] } onSubmit={ handleSubmit } - onCancel={ () => void navigate( { to: '/onboarding' } ) } + onCancel={ () => void navigate( { to: '/onboarding/blueprint' } ) } isSubmitting={ createSite.isPending } submitError={ submitError } /> diff --git a/apps/ui/src/ui-classic/router/route-onboarding-home/index.tsx b/apps/ui/src/ui-classic/router/route-onboarding-home/index.tsx index be5ebbe680..5f1b3cb7a9 100644 --- a/apps/ui/src/ui-classic/router/route-onboarding-home/index.tsx +++ b/apps/ui/src/ui-classic/router/route-onboarding-home/index.tsx @@ -11,18 +11,10 @@ function OnboardingHomePage() { { __( 'WordPress can power anything. What are you building?' ) }

- -

{ __( 'Create new' ) }

-

- { __( 'Start fresh with a blank site and build it with AI' ) } -

- -

{ __( 'Start from a blueprint' ) }

+

{ __( 'Build a new site' ) }

- { __( - 'Pick a featured blueprint or drop in your own to provision plugins, content, and settings.' - ) } + { __( 'Start from scratch or choose a Blueprint to provision plugins and settings.' ) }

diff --git a/apps/ui/src/ui-desks/onboarding/index.tsx b/apps/ui/src/ui-desks/onboarding/index.tsx index 21bb55e602..7b4f10f537 100644 --- a/apps/ui/src/ui-desks/onboarding/index.tsx +++ b/apps/ui/src/ui-desks/onboarding/index.tsx @@ -226,6 +226,7 @@ export function DeskOnboardingBlueprint() { featured={ featured.data } isFeaturedLoading={ featured.isLoading } onPick={ handlePick } + onPickEmpty={ () => void navigate( { to: '/onboarding/create' } ) } />
From 386b857ac52a3f959ced9b48133d5746be33c0b5 Mon Sep 17 00:00:00 2001 From: Shaun Andrews Date: Wed, 17 Jun 2026 14:38:45 -0400 Subject: [PATCH 2/2] Fixing the alignment/scrolling for the blueprint gallery --- .../ui/src/components/onboarding-layout/style.module.css | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/apps/ui/src/components/onboarding-layout/style.module.css b/apps/ui/src/components/onboarding-layout/style.module.css index 62a6679ca6..b0fad6bf53 100644 --- a/apps/ui/src/components/onboarding-layout/style.module.css +++ b/apps/ui/src/components/onboarding-layout/style.module.css @@ -1,12 +1,15 @@ .root { - height: 100vh; + box-sizing: border-box; + min-height: 100vh; + padding-block: var(--wpds-dimension-padding-3xl); position: relative; } .content { + box-sizing: border-box; max-width: 640px; width: 100%; - padding: var(--wpds-dimension-padding-3xl); + padding-inline: var(--wpds-dimension-padding-3xl); } /* `wide` variant — used by content-heavy onboarding pages like the blueprint @@ -16,7 +19,7 @@ } .close { - position: absolute; + position: fixed; top: 16px; right: 16px; }