-
Notifications
You must be signed in to change notification settings - Fork 4.3k
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
Make core colors classes and custom properties always available #31669
Changes from all commits
108f919
e0b6d6c
4ddd1de
b7fbedf
3aa6568
ee4ffe7
9faec4d
0c4653f
c9fc39f
d45d090
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,124 +6,148 @@ | |
{ | ||
"name": "Black", | ||
"slug": "black", | ||
"color": "#000000" | ||
"color": "#000000", | ||
"origin": "core" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It seems redundant to have "origin": "core", in all of the colors. Here they are defined in the core theme.json so our code should automatically assume all these colors of core origin. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yeah, thought about that. These are the trade-offs I've considered:
With these trade-offs, I leaned towards implementing the simplest thing that works and that can scale as our needs evolve. Alternatives I've considered:
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we expect others to use this property? Something more descriptive like an array of which contexts to display the colors in UI may make sense. My intuition would lean toward removing this property in the definition especially if we're unsure of usages by other consumers. Folks will copy paste examples, so I'd be a little careful here. We could do something like adding it in the in-memory representation or alternatively picking a different data structure like There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I've already shared my rationale about why I'd think going forward with the simplest approach that works is fine. However, one thing I didn't consider was the copy/paste rationale. That's a good point and makes me having second thoughts about this, to be honest. |
||
}, | ||
{ | ||
"name": "Cyan bluish gray", | ||
"slug": "cyan-bluish-gray", | ||
"color": "#abb8c3" | ||
"color": "#abb8c3", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "White", | ||
"slug": "white", | ||
"color": "#ffffff" | ||
"color": "#ffffff", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Pale pink", | ||
"slug": "pale-pink", | ||
"color": "#f78da7" | ||
"color": "#f78da7", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Vivid red", | ||
"slug": "vivid-red", | ||
"color": "#cf2e2e" | ||
"color": "#cf2e2e", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Luminous vivid orange", | ||
"slug": "luminous-vivid-orange", | ||
"color": "#ff6900" | ||
"color": "#ff6900", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Luminous vivid amber", | ||
"slug": "luminous-vivid-amber", | ||
"color": "#fcb900" | ||
"color": "#fcb900", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Light green cyan", | ||
"slug": "light-green-cyan", | ||
"color": "#7bdcb5" | ||
"color": "#7bdcb5", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Vivid green cyan", | ||
"slug": "vivid-green-cyan", | ||
"color": "#00d084" | ||
"color": "#00d084", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Pale cyan blue", | ||
"slug": "pale-cyan-blue", | ||
"color": "#8ed1fc" | ||
"color": "#8ed1fc", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Vivid cyan blue", | ||
"slug": "vivid-cyan-blue", | ||
"color": "#0693e3" | ||
"color": "#0693e3", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Vivid purple", | ||
"slug": "vivid-purple", | ||
"color": "#9b51e0" | ||
"color": "#9b51e0", | ||
"origin": "core" | ||
} | ||
], | ||
"gradients": [ | ||
{ | ||
"name": "Vivid cyan blue to vivid purple", | ||
"gradient": "linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%)", | ||
"slug": "vivid-cyan-blue-to-vivid-purple" | ||
"slug": "vivid-cyan-blue-to-vivid-purple", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Light green cyan to vivid green cyan", | ||
"gradient": "linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%)", | ||
"slug": "light-green-cyan-to-vivid-green-cyan" | ||
"slug": "light-green-cyan-to-vivid-green-cyan", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Luminous vivid amber to luminous vivid orange", | ||
"gradient": "linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%)", | ||
"slug": "luminous-vivid-amber-to-luminous-vivid-orange" | ||
"slug": "luminous-vivid-amber-to-luminous-vivid-orange", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Luminous vivid orange to vivid red", | ||
"gradient": "linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%)", | ||
"slug": "luminous-vivid-orange-to-vivid-red" | ||
"slug": "luminous-vivid-orange-to-vivid-red", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Very light gray to cyan bluish gray", | ||
"gradient": "linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%)", | ||
"slug": "very-light-gray-to-cyan-bluish-gray" | ||
"slug": "very-light-gray-to-cyan-bluish-gray", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Cool to warm spectrum", | ||
"gradient": "linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%)", | ||
"slug": "cool-to-warm-spectrum" | ||
"slug": "cool-to-warm-spectrum", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Blush light purple", | ||
"gradient": "linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%)", | ||
"slug": "blush-light-purple" | ||
"slug": "blush-light-purple", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Blush bordeaux", | ||
"gradient": "linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%)", | ||
"slug": "blush-bordeaux" | ||
"slug": "blush-bordeaux", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Luminous dusk", | ||
"gradient": "linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%)", | ||
"slug": "luminous-dusk" | ||
"slug": "luminous-dusk", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Pale ocean", | ||
"gradient": "linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%)", | ||
"slug": "pale-ocean" | ||
"slug": "pale-ocean", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Electric grass", | ||
"gradient": "linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%)", | ||
"slug": "electric-grass" | ||
"slug": "electric-grass", | ||
"origin": "core" | ||
}, | ||
{ | ||
"name": "Midnight", | ||
"gradient": "linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%)", | ||
"slug": "midnight" | ||
"slug": "midnight", | ||
"origin": "core" | ||
} | ||
], | ||
"duotone": [ | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -90,13 +90,28 @@ function getPresetMetadataFromStyleProperty( styleProperty ) { | |
return getPresetMetadataFromStyleProperty.MAP[ styleProperty ]; | ||
} | ||
|
||
const filterColorsFromCoreOrigin = ( path, setting ) => { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Will this get out of sync with the implementation in block editor? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I feel ultimately here, we'd need a way to get both
and same for other settings. It's not important now, but we should make sure it's something we can achieve later. |
||
if ( path !== 'color.palette' && path !== 'color.gradients' ) { | ||
return setting; | ||
} | ||
|
||
if ( ! Array.isArray( setting ) ) { | ||
return setting; | ||
} | ||
|
||
const colors = setting.filter( ( color ) => color?.origin !== 'core' ); | ||
|
||
return colors.length > 0 ? colors : setting; | ||
}; | ||
|
||
export function useSetting( path, blockName = '' ) { | ||
const settings = useSelect( ( select ) => { | ||
return select( editSiteStore ).getSettings(); | ||
} ); | ||
const topLevelPath = `__experimentalFeatures.${ path }`; | ||
const blockPath = `__experimentalFeatures.blocks.${ blockName }.${ path }`; | ||
return get( settings, blockPath ) ?? get( settings, topLevelPath ); | ||
const setting = get( settings, blockPath ) ?? get( settings, topLevelPath ); | ||
return filterColorsFromCoreOrigin( path, setting ); | ||
} | ||
|
||
export function getPresetVariable( styles, context, propertyName, value ) { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Already existing issue: It seems we need to include array( 'color', 'duotone' ) in either
to_append or to_replace.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did the same as the other color palettes: core is always enqueued and the theme is appended.