(
+
+
+
+ ) }
+ />
+ );
+};
+
+function renderShadowToggle() {
+ return ( { onToggle, isOpen } ) => {
+ const toggleProps = {
+ onClick: onToggle,
+ className: classnames( { 'is-open': isOpen } ),
+ 'aria-expanded': isOpen,
+ };
+
+ return (
+
+ );
+ };
+}
+
+function ShadowPopoverContainer( { shadow, onShadowChange } ) {
+ const [ defaultShadows ] = useGlobalSetting( 'shadow.presets.default' );
+ const [ themeShadows ] = useGlobalSetting( 'shadow.presets.theme' );
+ const [ defaultPresetsEnabled ] = useGlobalSetting(
+ 'shadow.defaultPresets'
+ );
+
+ const shadows = [
+ ...( defaultPresetsEnabled ? defaultShadows : [] ),
+ ...( themeShadows || [] ),
+ ];
+
+ return (
+
+
+ { __( 'Shadows' ) }
+
+
+
+ );
+}
+
+function ShadowPresets( { presets, activeShadow, onSelect } ) {
+ return ! presets ? null : (
+
+ { presets.map( ( { name, shadow }, i ) => (
+
+ onSelect( shadow === activeShadow ? undefined : shadow )
+ }
+ shadow={ shadow }
+ />
+ ) ) }
+
+ );
+}
+
+function ShadowIndicator( { label, isActive, onSelect, shadow } ) {
+ return (
+
+
+
+ );
+}
diff --git a/packages/edit-site/src/components/global-styles/style.scss b/packages/edit-site/src/components/global-styles/style.scss
index 268536ff0433cc..f21dd1f612b77d 100644
--- a/packages/edit-site/src/components/global-styles/style.scss
+++ b/packages/edit-site/src/components/global-styles/style.scss
@@ -190,3 +190,42 @@ $block-preview-height: 150px;
display: flex;
flex-direction: column;
}
+
+.edit-site-global-styles__shadow-panel {
+ width: 230px;
+}
+
+.edit-site-global-styles__shadow-dropdown {
+ display: block;
+ padding: 0;
+
+ > button {
+ width: 100%;
+ padding: $grid-unit-10;
+
+ &.is-open {
+ background-color: $gray-100;
+ }
+ }
+}
+
+// wrapper to clip the shadow beyond 6px
+.edit-site-global-styles__shadow-indicator-wrapper {
+ padding: 6px;
+ overflow: hidden;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+// These styles are similar to the color palette.
+.edit-site-global-styles__shadow-indicator {
+ color: $gray-800;
+ border: $gray-200 $border-width solid;
+ border-radius: $radius-block-ui;
+ cursor: pointer;
+ padding: 0;
+
+ height: 24px;
+ width: 24px;
+}