Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split the Global Styles variations in two: default and premium #77333

Merged
merged 19 commits into from
Jun 2, 2023
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
cdd8953
Split the variations in two: default (free) and premium
BogdanUngureanu May 15, 2023
7409c75
Separate the free Style Variation from the paid ones
BogdanUngureanu May 16, 2023
5e58c1a
Merge branch 'trunk' into update/global-styles-panel
BogdanUngureanu May 16, 2023
5df1333
Remove props and CSS that are not needed anymore
BogdanUngureanu May 18, 2023
a914273
Merge branch 'trunk' into update/global-styles-panel
BogdanUngureanu May 18, 2023
e117604
Move description in the header and make CSS changes on mobile viewports
BogdanUngureanu May 24, 2023
60aa98a
Add props to control the layout and label.
BogdanUngureanu May 25, 2023
dd3d3d9
Merge branch 'trunk' into update/global-styles-panel
BogdanUngureanu May 25, 2023
a85b1cd
Disable the split for non-free themes.
BogdanUngureanu May 26, 2023
fe6188c
Remove margin
BogdanUngureanu May 26, 2023
13b5d1a
Merge branch 'trunk' into update/global-styles-panel
BogdanUngureanu May 26, 2023
03fc221
Fix regression in the Design Picker, align margins and remove <p> tag…
BogdanUngureanu May 29, 2023
9ddf300
Change font color
BogdanUngureanu May 29, 2023
8cc25f0
Keep the previous heading color.
BogdanUngureanu May 29, 2023
44cd7b7
Increase the font size on the paragraph
BogdanUngureanu May 29, 2023
b269025
Merge branch 'trunk' into update/global-styles-panel
BogdanUngureanu May 30, 2023
11c0a43
Merge branch 'trunk' into update/global-styles-panel
BogdanUngureanu May 31, 2023
c342f5a
Fix issues after code review, align horizontally the UI on mobile vie…
BogdanUngureanu May 31, 2023
e7ee758
Update packages/global-styles/src/components/global-styles-variations…
BogdanUngureanu May 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -627,14 +627,20 @@ const UnifiedDesignPickerStep: Step = ( { navigation, flow, stepName } ) => {
require="@automattic/design-preview"
placeholder={ null }
previewUrl={ previewUrl }
splitPremiumVariations={
! selectedDesign.is_premium &&
! isBundledWithWooCommerce &&
! isPremiumThemeAvailable &&
! didPurchaseSelectedTheme &&
! isPluginBundleEligible
}
title={ headerDesignTitle }
description={ selectedDesign.description }
variations={ selectedDesignDetails?.style_variations }
selectedVariation={ selectedStyleVariation }
onSelectVariation={ previewDesignVariation }
actionButtons={ actionButtons }
recordDeviceClick={ recordDeviceClick }
showGlobalStylesPremiumBadge={ shouldLimitGlobalStyles }
/>
) : (
<WebPreview
Expand Down Expand Up @@ -718,7 +724,6 @@ const UnifiedDesignPickerStep: Step = ( { navigation, flow, stepName } ) => {
isPremiumThemeAvailable={ isPremiumThemeAvailable }
purchasedThemes={ purchasedThemes }
currentPlanFeatures={ currentPlanFeatures }
shouldLimitGlobalStyles={ shouldLimitGlobalStyles }
/>
);

Expand Down
15 changes: 10 additions & 5 deletions client/my-sites/theme/main.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -618,10 +618,17 @@ class ThemeSheet extends Component {
renderStyleVariations = () => {
const { styleVariations } = this.props;

const splitPremiumVariations =
! this.props.isExternallyManagedTheme &&
! this.props.isThemePurchased &&
! this.props.isBundledSoftwareSet &&
! this.props.isPremium;

return (
styleVariations.length > 0 && (
<ThemeStyleVariations
description={ this.getStyleVariationDescription() }
splitPremiumVariations={ splitPremiumVariations }
selectedVariation={ this.getSelectedStyleVariation() }
variations={ styleVariations }
onClick={ this.onStyleVariationClick }
Expand Down Expand Up @@ -1103,13 +1110,11 @@ class ThemeSheet extends Component {
} );
}

if ( ! shouldLimitGlobalStyles ) {
return '';
if ( ! shouldLimitGlobalStyles || isWpcomTheme ) {
return;
}

return isWpcomTheme
? translate( 'Additional styles require the Premium plan or higher.' )
: translate( 'Additional styles require the Business plan or higher.' );
return translate( 'Additional styles require the Business plan or higher.' );
};

renderSheet = () => {
Expand Down
26 changes: 11 additions & 15 deletions client/my-sites/theme/theme-style-variations/index.tsx
Original file line number Diff line number Diff line change
@@ -1,41 +1,37 @@
import { PremiumBadge } from '@automattic/design-picker';
import { translate } from 'i18n-calypso';
import AsyncLoad from 'calypso/components/async-load';
import type { StyleVariation } from '@automattic/design-picker/src/types';
import type { TranslateResult } from 'i18n-calypso';

import './style.scss';

interface ThemeStyleVariationsProps {
description: TranslateResult;
selectedVariation: StyleVariation;
variations: StyleVariation[];
splitPremiumVariations: boolean;
onClick: ( variation: StyleVariation ) => void;
}

const ThemeStyleVariations = ( {
description,
selectedVariation,
variations,
splitPremiumVariations,
onClick,
}: ThemeStyleVariationsProps ) => {
return (
<div className="theme__sheet-style-variations">
<div className="theme__sheet-style-variations-header">
<h2>
{ translate( 'Styles' ) }
<PremiumBadge shouldHideTooltip />
</h2>
<p>{ description }</p>
</div>
<p>{ description }</p>

<div className="theme__sheet-style-variations-previews">
<AsyncLoad
require="@automattic/design-preview/src/components/style-variation"
require="@automattic/global-styles/src/components/global-styles-variations"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this component is no longer used, can we remove it?

placeholder={ null }
selectedVariation={ selectedVariation }
variations={ variations }
showOnlyHoverViewDefaultVariation
onClick={ onClick }
globalStylesVariations={ variations }
selectedGlobalStylesVariation={ selectedVariation }
splitPremiumVariations={ splitPremiumVariations }
displayFreeLabel={ splitPremiumVariations }
showOnlyHoverViewDefaultVariation={ false }
onSelect={ onClick }
/>
</div>
</div>
Expand Down
18 changes: 0 additions & 18 deletions client/my-sites/theme/theme-style-variations/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,6 @@
}
}

.global-styles-variations {
display: flex;
flex-wrap: wrap;
gap: 8px;
overflow: scroll;
padding: 12px 2px;
scrollbar-width: none;

&::-webkit-scrollbar {
display: none;
}

@include breakpoint-deprecated( "<960px" ) {
flex-wrap: nowrap;
padding: 12px 24px 16px 2px;
}
}

.theme__sheet-style-variations-header {
display: flex;
flex-direction: column;
Expand Down
6 changes: 3 additions & 3 deletions packages/design-preview/src/components/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ interface PreviewProps {
variations?: StyleVariation[];
selectedVariation?: StyleVariation;
onSelectVariation: ( variation: StyleVariation ) => void;
splitPremiumVariations: boolean;
onClickCategory?: ( category: Category ) => void;
actionButtons: React.ReactNode;
recordDeviceClick: ( device: string ) => void;
showGlobalStylesPremiumBadge: boolean;
}

const INJECTED_CSS = `body{ transition: background-color 0.2s linear, color 0.2s linear; };`;
Expand All @@ -37,10 +37,10 @@ const Preview: React.FC< PreviewProps > = ( {
variations = [],
selectedVariation,
onSelectVariation,
splitPremiumVariations,
onClickCategory,
actionButtons,
recordDeviceClick,
showGlobalStylesPremiumBadge,
} ) => {
const sitePreviewInlineCss = useMemo( () => {
if ( selectedVariation ) {
Expand All @@ -66,9 +66,9 @@ const Preview: React.FC< PreviewProps > = ( {
variations={ variations }
selectedVariation={ selectedVariation }
onSelectVariation={ onSelectVariation }
splitPremiumVariations={ splitPremiumVariations }
onClickCategory={ onClickCategory }
actionButtons={ actionButtons }
showGlobalStylesPremiumBadge={ showGlobalStylesPremiumBadge }
/>
<SitePreview
url={ previewUrl }
Expand Down
22 changes: 12 additions & 10 deletions packages/design-preview/src/components/sidebar.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Button } from '@automattic/components';
import { GlobalStylesVariations, GlobalStylesObject } from '@automattic/global-styles';
import { useState } from '@wordpress/element';
import { useTranslate } from 'i18n-calypso';
import StyleVariationPreviews from './style-variation';
import type { Category, StyleVariation } from '@automattic/design-picker/src/types';

interface CategoryBadgeProps {
Expand Down Expand Up @@ -34,9 +34,9 @@ interface SidebarProps {
variations: StyleVariation[];
selectedVariation?: StyleVariation;
onSelectVariation: ( variation: StyleVariation ) => void;
splitPremiumVariations: boolean;
onClickCategory?: ( category: Category ) => void;
actionButtons: React.ReactNode;
showGlobalStylesPremiumBadge: boolean;
}

const Sidebar: React.FC< SidebarProps > = ( {
Expand All @@ -49,9 +49,9 @@ const Sidebar: React.FC< SidebarProps > = ( {
variations = [],
selectedVariation,
onSelectVariation,
splitPremiumVariations,
onClickCategory,
actionButtons,
showGlobalStylesPremiumBadge,
} ) => {
const translate = useTranslate();
const [ isShowFullDescription, setIsShowFullDescription ] = useState( false );
Expand Down Expand Up @@ -101,14 +101,16 @@ const Sidebar: React.FC< SidebarProps > = ( {
) }
{ variations.length > 0 && (
<div className="design-preview__sidebar-variations">
<h2>{ translate( 'Choose your style' ) }</h2>
<p>{ translate( 'You can change your style at any time.' ) }</p>
<div className="design-preview__sidebar-variations-grid">
<StyleVariationPreviews
variations={ variations }
selectedVariation={ selectedVariation }
onClick={ onSelectVariation }
showGlobalStylesPremiumBadge={ showGlobalStylesPremiumBadge }
<GlobalStylesVariations
globalStylesVariations={ variations as GlobalStylesObject[] }
selectedGlobalStylesVariation={ selectedVariation as GlobalStylesObject }
splitPremiumVariations={ splitPremiumVariations }
displayFreeLabel={ splitPremiumVariations }
showOnlyHoverViewDefaultVariation={ false }
onSelect={ ( globalStyleVariation: GlobalStylesObject ) =>
onSelectVariation( globalStyleVariation as StyleVariation )
}
/>
</div>
</div>
Expand Down
22 changes: 4 additions & 18 deletions packages/design-preview/src/components/style-variation.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { PremiumBadge } from '@automattic/design-picker';
import { GlobalStylesVariations } from '@automattic/global-styles';
import { translate } from 'i18n-calypso';
import { TranslateResult } from 'i18n-calypso';
import type { StyleVariation } from '@automattic/design-picker/src/types';
import type { GlobalStylesObject } from '@automattic/global-styles/src/types';
import './style.scss';
Expand All @@ -9,35 +8,22 @@ interface StyleVariationPreviewsProps {
variations: StyleVariation[];
selectedVariation?: StyleVariation;
onClick: ( variation: StyleVariation ) => void;
showGlobalStylesPremiumBadge: boolean;
description?: TranslateResult;
showOnlyHoverViewDefaultVariation?: boolean;
}

const StyleVariationPreviews: React.FC< StyleVariationPreviewsProps > = ( {
variations = [],
selectedVariation,
onClick,
showGlobalStylesPremiumBadge,
description,
showOnlyHoverViewDefaultVariation,
} ) => {
return (
<GlobalStylesVariations
globalStylesVariations={ variations as GlobalStylesObject[] }
selectedGlobalStylesVariation={ selectedVariation as GlobalStylesObject }
premiumBadge={
showGlobalStylesPremiumBadge && (
<PremiumBadge
className="design-picker__premium-badge"
labelText={ translate( 'Upgrade' ) }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This class is no longer used, so I think we can remove a few styles from the SCSS file

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh that's right. I planned to remove it but I guess I forgot about it.

tooltipClassName="design-picker__premium-badge-tooltip"
tooltipPosition="top"
tooltipContent={ translate(
'Unlock this style, and tons of other features, by upgrading to a Premium plan.'
) }
focusOnShow={ false }
/>
)
}
description={ description }
showOnlyHoverViewDefaultVariation={ showOnlyHoverViewDefaultVariation }
onSelect={ ( globalStyleVariation: GlobalStylesObject ) =>
onClick( globalStyleVariation as StyleVariation )
Expand Down
33 changes: 27 additions & 6 deletions packages/design-preview/src/components/style.scss
Original file line number Diff line number Diff line change
Expand Up @@ -21,15 +21,21 @@
box-shadow: -4px 0 8px rgb(0 0 0 / 7%);
box-sizing: border-box;
display: flex;
height: 96px;
inset-inline-start: 0;
inset-inline-end: 0;
overflow: auto;
padding: 8px 24px 0;
padding: 8px 8px 0;
position: fixed;
top: 0;
z-index: z-index(".is-section-stepper", ".design-preview__sticky-variations");

.global-styles-variations__container {
flex-direction: row;
@include break-xlarge {
flex-direction: column;
}
}

.design-preview__sidebar-action-buttons {
display: none;
position: sticky;
Expand Down Expand Up @@ -75,7 +81,6 @@
display: none;
font-size: $font-body-small;
font-weight: 500;
margin-bottom: 0.5rem;
}

.design-preview__sidebar-title {
Expand Down Expand Up @@ -196,6 +201,24 @@
line-height: 20px;
}

.global-styles-variations__header {
p {
color: var(--studio-gray-100);
display: none;
}

@include break-xlarge {
p {
display: block;
}
}

h2 {
font-size: $font-body-small;
font-weight: 500;
}
}

.global-styles-variations {
align-items: center;
display: flex;
Expand All @@ -218,10 +241,8 @@
.global-styles-variations {
box-sizing: border-box;
display: grid;
gap: 12px;
column-gap: 12px;
grid-template-columns: repeat(2, 1fr);
margin: 24px -5px 0;
padding: 2px;
width: 100%;

.global-styles-variations__item {
Expand Down