diff --git a/src/components/base-control2/index.js b/src/components/base-control2/index.js index 26068c186c..9e1c2ba9e0 100644 --- a/src/components/base-control2/index.js +++ b/src/components/base-control2/index.js @@ -109,7 +109,7 @@ export const BaseControl = props => { { props.after } -
+
{ props.children }
diff --git a/src/components/block-styles-control/index.js b/src/components/block-styles-control/index.js index 3d88056da1..47649feabf 100644 --- a/src/components/block-styles-control/index.js +++ b/src/components/block-styles-control/index.js @@ -221,6 +221,8 @@ export const BlockStylesControl = props => { } else { setOpenProNotice( value => ! value ) } + + setOpenPopover( false ) } const SaveUpdateModal = applyFilters( 'stackable.global-settings.global-block-styles.save-update-modal', Fragment ) @@ -233,11 +235,13 @@ export const BlockStylesControl = props => { >
} +const QUICK_BUTTONS = [ { + id: 'design-library', + icon: addTemplateIcon, + title: __( 'Build Pages in Seconds', i18n ), + description: __( 'Jump straight into our Design Library and insert polished, pre-built sections; no more blank-page overwhelm.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=design-library`, + cta: __( 'Build Now', i18n ), +}, +{ + id: 'blocks', + icon: blockDefaultIcon, + title: __( 'Stackable Block Settings', i18n ), + description: __( 'Learn how to use Stackable blocks and get more out of them.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=blocks`, + cta: __( 'Use Blocks', i18n ), +}, +{ + id: 'design-system', + icon: stylesIcon, + title: __( 'Apply Global Styles Instantly', i18n ), + description: __( 'Set your brand\'s colors, fonts, and spacing once in the Design System; every Stackable block updates automatically.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=design-system`, + cta: __( 'Try Now', i18n ), +}, +{ + id: 'site-kit', + icon: scheduledIcon, + title: __( 'Start with a Complete Site Kit', i18n ), + description: __( 'Pick a ready-made website template to kickstart your project — fully built layouts and styles, just swap in your content.', i18n ), + link: '/wp-admin/post-new.php?post_type=page', + cta: __( 'Select Kit', i18n ), + display: false, +}, +{ + id: 'design-system-picker', + icon: brushIcon, + title: __( 'Pre-set Design Systems', i18n ), + description: __( 'Browse curated Design System presets — apply a professional look instantly without building from scratch.', i18n ), + link: '/wp-admin/post-new.php?post_type=page', + cta: __( 'Pick A System', i18n ), + display: false, +}, +{ + id: 'block-backgrounds', + icon: columnIcon, + title: __( 'Block Backgrounds & Containers', i18n ), + description: __( 'Use backgrounds to create stunning full-width sections, and containers to add boxed content for organizing your page.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=block-backgrounds`, + cta: __( 'Try Now', i18n ), +}, +{ + id: 'responsive-controls', + icon: desktopIcon, + title: __( 'Responsive Controls', i18n ), + description: __( 'Adjust styles for desktop, tablet, and mobile — easily control layout, spacing, and appearance for a seamless experience on any device.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=responsive-controls`, + cta: __( 'Try Now', i18n ), +}, +{ + id: 'hover-states', + icon: , + title: __( 'Styling Hover States', i18n ), + description: __( 'Adjust styles for different hover states — create engaging effects when users interact with your designs.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=hover-states`, + cta: __( 'Try Now', i18n ), +}, +{ + id: 'advanced-hover-states', + icon: , + title: __( 'Styling Hover States - Advanced', i18n ), + description: __( 'Style containers and their contents together—apply hover effects to multiple blocks at once for seamless interactive designs.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=advanced-hover-states`, + cta: __( 'Try Now', i18n ), +}, +{ + id: 'global-color-schemes', + icon: globeIcon, + title: __( 'Global Color Schemes', i18n ), + description: __( 'Create and apply color schemes to your entire website—maintain consistent branding across all pages with ease.', i18n ), + link: `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=global-color-schemes`, + cta: __( 'Try Now', i18n ), +}, +{ + id: 'block-styles', + icon: reusableBlockIcon, + title: __( 'Re-using Block Styles', i18n ), + description: __( 'Re-use block styles sitewide for consistent branding. Save and quickly apply your favorite style combinations to any block.', i18n ), + link: isPro ? `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=block-styles` : '', + cta: __( 'Try Now', i18n ), + premium: true, +}, +{ + id: 'dynamic-content', + icon: archiveIcon, + title: __( 'Dynamic Content', i18n ), + description: __( 'Dynamically display content based on user interactions, site conditions, or time-based triggers.', i18n ), + link: isPro ? `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=dynamic-content` : '', + cta: __( 'Try Now', i18n ), + premium: true, +}, +{ + id: 'conditional-display', + icon: cogIcon, + title: __( 'Conditional Display', i18n ), + description: __( 'Show or hide blocks based on specific conditions, such as user roles, device type, or custom criteria.', i18n ), + link: isPro ? `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=conditional-display` : '', + cta: __( 'Try Now', i18n ), + premium: true, +}, +{ + id: 'motion-effects', + icon: symbolIcon, + title: __( 'Motion Effects', i18n ), + description: __( 'Add animations and transitions to your blocks for a more engaging and interactive user experience.', i18n ), + link: isPro ? `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=motion-effects` : '', + cta: __( 'Try Now', i18n ), + premium: true, +}, +{ + id: 'custom-css', + icon: filterIcon, + title: __( 'Applying CSS per Block', i18n ), + description: __( 'Add custom CSS to your blocks for precise control over their appearance and behavior.', i18n ), + link: isPro ? `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=custom-css` : '', + cta: __( 'Try Now', i18n ), + premium: true, +}, +{ + id: 'copy-paste-styles', + icon: copyIcon, + title: __( 'Copy & Paste Styles', i18n ), + description: __( 'Quickly apply styles from one block to another for consistent design and branding.', i18n ), + link: isPro ? `/wp-admin/post-new.php?post_type=page&content=${ __( 'Welcome to Stackable', i18n ) }&tour=copy-paste-styles` : '', + cta: __( 'Try Now', i18n ), + premium: true, +} ] + export const GettingStarted = () => { return <> -
{ __( 'Welcome to Stackable', i18n ) }
- { /*

{ __( 'Let\'s build something amazing!', i18n ) }

*/ }

{ __( 'Welcome to Your New Block Editor Workflow!', i18n ) }

- -
-
- - { __( 'Quick Start', i18n ) } -
-
-
- -
-
-

{ __( 'Build Pages in Seconds', i18n ) }

-

{ __( 'Jump straight into our Design Library and insert polished, pre-built sections; no more blank-page overwhelm.', i18n ) }

-
- -
- -
-
- -
-
-

{ __( 'Stackable Block Settings', i18n ) }

-

{ __( 'Learn how to use Stackable blocks and get more out of them.', i18n ) }

-
- +
+
+
+

{ __( 'Getting Started with Stackable', i18n ) }

+

{ __( 'Watch this video to get started with Stackable in within 5 minutes.', i18n ) }

+
+ { QUICK_BUTTONS.map( ( item, i ) => { + if ( item.display === false ) { + return null + } -
+ return
+ { i === 0 &&
+ + { __( 'Quick Start', i18n ) } +
}
- +
-

{ __( 'Apply Global Styles Instantly', i18n ) }

-

{ __( 'Set your brand\'s colors, fonts, and spacing once in the Design System; every Stackable block updates automatically.', i18n ) }

+

+ { ! isPro && item.premium && } + { item.title } +

+

{ item.description }

-
- - { /* TODO: Hide this for now */ } -
-
- -
-
-

{ __( 'Start with a Complete Site Kit', i18n ) }

-

{ __( 'Pick a ready-made website template to kickstart your project — fully built layouts and styles, just swap in your content.', i18n ) }

-
- -
- - { /* TODO: Hide this for now */ } -
-
- -
-
-

{ __( 'Pre-set Design Systems', i18n ) }

-

{ __( 'Browse curated Design System presets — apply a professional look instantly without building from scratch.', i18n ) }

-
-
-
- -
-
- -
-

{ __( 'Getting Started with Stackable', i18n ) }

-

{ __( 'Watch this video to get started with Stackable in within 5 minutes.', i18n ) }

-
+ } ) }
diff --git a/src/welcome/getting-started.scss b/src/welcome/getting-started.scss index f955d5e539..9e548829f4 100644 --- a/src/welcome/getting-started.scss +++ b/src/welcome/getting-started.scss @@ -181,7 +181,7 @@ body.settings_page_stackable-getting-started .s-body-container > .s-getting-star .s-getting-started__quick-start-wrapper { display: grid; grid-template-columns: 1fr 1fr; - gap: 40px; + gap: 24px; margin: 1em 0 64px; align-items: flex-start; @@ -190,24 +190,25 @@ body.settings_page_stackable-getting-started .s-body-container > .s-getting-star border-radius: 16px; @include s-shadow; overflow: hidden; + grid-row: 1/4; + grid-column: 2/3; } - .s-quick-buttons-wrapper { + .s-card:not(.s-getting-started-video) { position: relative; display: flex; - flex-direction: column; + flex-direction: row; + justify-content: center; + align-items: center; gap: 24px; - .s-card { - display: flex; - flex-direction: row; - justify-content: center; - align-items: center; - gap: 24px; - @media screen and (max-width: 1200px) { - flex-direction: column; - align-items: flex-start; - } + @media screen and (max-width: 1200px) { + flex-direction: column; + align-items: flex-start; + } + + &:nth-child(2) { + overflow: visible; } } .s-quick-button-icon { @@ -218,28 +219,43 @@ body.settings_page_stackable-getting-started .s-body-container > .s-getting-star border-radius: 8px; } // Succeeding icon colors are different. - .s-card:nth-child(3) { + .s-card:nth-child(5n + 3) { .s-quick-button-icon { background: #f00069; } } - .s-card:nth-child(4) { + .s-card:nth-child(5n + 4) { .s-quick-button-icon { background: #d000ff; } } - .s-card:nth-child(5) { + .s-card:nth-child(5n) { .s-quick-button-icon { background: #f89347; } } + + .s-card:nth-child(5n + 6) { + .s-quick-button-icon { + background: #00c49a; + } + } .s-quick-button-button { white-space: nowrap; + + .s-button--disabled, + .s-button--disabled:hover { + opacity: 0.5; + cursor: not-allowed; + } } .s-quick-button-description { > *:first-child { margin-top: 0; + display: inline-flex; + align-items: center; + gap: 8px; } > *:last-child { margin-bottom: 0; @@ -255,6 +271,7 @@ body.settings_page_stackable-getting-started .s-body-container > .s-getting-star right: 69px; svg { width: 64px; + height: auto; transform: scaleX(-1); } span { @@ -297,3 +314,16 @@ body.settings_page_stackable-getting-started .s-body-container > .s-getting-star } } } + +.s-custom-icon-wrapper { + display: flex; + align-items: center; + justify-content: center; + width: 24px; + height: 24px; + + svg { + height: 16px !important; + width: 16px; + } +}