Directory

Edit/create shadows in global styles by madhusudhand · Pull Request #60706 · WordPress/gutenberg · GitHub
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

Edit/create shadows in global styles #60706

Merged
merged 22 commits into from
May 21, 2024
Merged

Edit/create shadows in global styles #60706

merged 22 commits into from
May 21, 2024

Conversation

madhusudhand
Copy link
Contributor

@madhusudhand madhusudhand commented Apr 12, 2024

What?

This change introduces a new item shadows in the global styles for editing/creating shadows

image image image

Testing instructions

  1. Find newly added item shadows in global styles panel
  2. Click to land on shadows panel, it should show list of core, theme and custom shadows.
  3. If there are not theme or custom shadows, it should show a placeholder label.
  4. Select a shadow to land on preview screen

Editing a shadow:

  1. In the preview screen, click on Drop shadow to invoke editor, change lengths, color, inset etc.. and preview should update instantly.
  2. Click + to add new shadow layer.
  3. click - to remove a shadow layer. (this is available when there are at least 2 layers)
  4. Save the edits.

Subtasks

  • Show list of default, theme and custom shadows.
  • Preview shadow
  • Update a shadow (editor panel)
  • Add a shadow
  • Delete a shadow
  • Duplicate a shadow
  • Rename a shadow (how about slug??, also handle conflicts)
  • add or delete a shadow layer (in second screen)

Related issues:

fixes: #57100

Copy link

github-actions bot commented Apr 12, 2024

Size Change: +3.3 kB (+0.19%)

Total Size: 1.75 MB

Filename Size Change
build/block-editor/index.min.js 259 kB +7 B (0%)
build/edit-site/index.min.js 219 kB +2.87 kB (+1.33%)
build/edit-site/style-rtl.css 12.8 kB +215 B (+1.7%)
build/edit-site/style.css 12.8 kB +206 B (+1.63%)
ℹ️ View Unchanged
Filename Size
build/a11y/index.min.js 955 B
build/annotations/index.min.js 2.27 kB
build/api-fetch/index.min.js 2.32 kB
build/autop/index.min.js 2.1 kB
build/blob/index.min.js 578 B
build/block-directory/index.min.js 7.26 kB
build/block-directory/style-rtl.css 1.03 kB
build/block-directory/style.css 1.03 kB
build/block-editor/content-rtl.css 4.57 kB
build/block-editor/content.css 4.57 kB
build/block-editor/default-editor-styles-rtl.css 395 B
build/block-editor/default-editor-styles.css 395 B
build/block-editor/style-rtl.css 15.5 kB
build/block-editor/style.css 15.5 kB
build/block-library/blocks/archives/editor-rtl.css 61 B
build/block-library/blocks/archives/editor.css 60 B
build/block-library/blocks/archives/style-rtl.css 90 B
build/block-library/blocks/archives/style.css 90 B
build/block-library/blocks/audio/editor-rtl.css 150 B
build/block-library/blocks/audio/editor.css 150 B
build/block-library/blocks/audio/style-rtl.css 122 B
build/block-library/blocks/audio/style.css 122 B
build/block-library/blocks/audio/theme-rtl.css 133 B
build/block-library/blocks/audio/theme.css 133 B
build/block-library/blocks/avatar/editor-rtl.css 116 B
build/block-library/blocks/avatar/editor.css 116 B
build/block-library/blocks/avatar/style-rtl.css 104 B
build/block-library/blocks/avatar/style.css 104 B
build/block-library/blocks/block/editor-rtl.css 277 B
build/block-library/blocks/block/editor.css 277 B
build/block-library/blocks/button/editor-rtl.css 415 B
build/block-library/blocks/button/editor.css 414 B
build/block-library/blocks/button/style-rtl.css 627 B
build/block-library/blocks/button/style.css 626 B
build/block-library/blocks/buttons/editor-rtl.css 337 B
build/block-library/blocks/buttons/editor.css 337 B
build/block-library/blocks/buttons/style-rtl.css 332 B
build/block-library/blocks/buttons/style.css 332 B
build/block-library/blocks/calendar/style-rtl.css 239 B
build/block-library/blocks/calendar/style.css 239 B
build/block-library/blocks/categories/editor-rtl.css 113 B
build/block-library/blocks/categories/editor.css 112 B
build/block-library/blocks/categories/style-rtl.css 124 B
build/block-library/blocks/categories/style.css 124 B
build/block-library/blocks/code/editor-rtl.css 53 B
build/block-library/blocks/code/editor.css 53 B
build/block-library/blocks/code/style-rtl.css 121 B
build/block-library/blocks/code/style.css 121 B
build/block-library/blocks/code/theme-rtl.css 124 B
build/block-library/blocks/code/theme.css 124 B
build/block-library/blocks/columns/editor-rtl.css 108 B
build/block-library/blocks/columns/editor.css 108 B
build/block-library/blocks/columns/style-rtl.css 421 B
build/block-library/blocks/columns/style.css 421 B
build/block-library/blocks/comment-author-avatar/editor-rtl.css 125 B
build/block-library/blocks/comment-author-avatar/editor.css 125 B
build/block-library/blocks/comment-content/style-rtl.css 92 B
build/block-library/blocks/comment-content/style.css 92 B
build/block-library/blocks/comment-template/style-rtl.css 199 B
build/block-library/blocks/comment-template/style.css 198 B
build/block-library/blocks/comments-pagination-numbers/editor-rtl.css 123 B
build/block-library/blocks/comments-pagination-numbers/editor.css 121 B
build/block-library/blocks/comments-pagination/editor-rtl.css 222 B
build/block-library/blocks/comments-pagination/editor.css 209 B
build/block-library/blocks/comments-pagination/style-rtl.css 235 B
build/block-library/blocks/comments-pagination/style.css 231 B
build/block-library/blocks/comments-title/editor-rtl.css 75 B
build/block-library/blocks/comments-title/editor.css 75 B
build/block-library/blocks/comments/editor-rtl.css 840 B
build/block-library/blocks/comments/editor.css 839 B
build/block-library/blocks/comments/style-rtl.css 637 B
build/block-library/blocks/comments/style.css 636 B
build/block-library/blocks/cover/editor-rtl.css 671 B
build/block-library/blocks/cover/editor.css 674 B
build/block-library/blocks/cover/style-rtl.css 1.7 kB
build/block-library/blocks/cover/style.css 1.69 kB
build/block-library/blocks/details/editor-rtl.css 65 B
build/block-library/blocks/details/editor.css 65 B
build/block-library/blocks/details/style-rtl.css 86 B
build/block-library/blocks/details/style.css 86 B
build/block-library/blocks/embed/editor-rtl.css 312 B
build/block-library/blocks/embed/editor.css 312 B
build/block-library/blocks/embed/style-rtl.css 410 B
build/block-library/blocks/embed/style.css 410 B
build/block-library/blocks/embed/theme-rtl.css 133 B
build/block-library/blocks/embed/theme.css 133 B
build/block-library/blocks/file/editor-rtl.css 326 B
build/block-library/blocks/file/editor.css 327 B
build/block-library/blocks/file/style-rtl.css 280 B
build/block-library/blocks/file/style.css 281 B
build/block-library/blocks/file/view.min.js 324 B
build/block-library/blocks/footnotes/style-rtl.css 201 B
build/block-library/blocks/footnotes/style.css 199 B
build/block-library/blocks/form-input/editor-rtl.css 227 B
build/block-library/blocks/form-input/editor.css 227 B
build/block-library/blocks/form-input/style-rtl.css 343 B
build/block-library/blocks/form-input/style.css 343 B
build/block-library/blocks/form-submission-notification/editor-rtl.css 340 B
build/block-library/blocks/form-submission-notification/editor.css 340 B
build/block-library/blocks/form-submit-button/style-rtl.css 69 B
build/block-library/blocks/form-submit-button/style.css 69 B
build/block-library/blocks/form/view.min.js 471 B
build/block-library/blocks/freeform/editor-rtl.css 2.61 kB
build/block-library/blocks/freeform/editor.css 2.61 kB
build/block-library/blocks/gallery/editor-rtl.css 956 B
build/block-library/blocks/gallery/editor.css 960 B
build/block-library/blocks/gallery/style-rtl.css 1.72 kB
build/block-library/blocks/gallery/style.css 1.72 kB
build/block-library/blocks/gallery/theme-rtl.css 108 B
build/block-library/blocks/gallery/theme.css 108 B
build/block-library/blocks/group/editor-rtl.css 403 B
build/block-library/blocks/group/editor.css 403 B
build/block-library/blocks/group/style-rtl.css 103 B
build/block-library/blocks/group/style.css 103 B
build/block-library/blocks/group/theme-rtl.css 78 B
build/block-library/blocks/group/theme.css 78 B
build/block-library/blocks/heading/style-rtl.css 189 B
build/block-library/blocks/heading/style.css 189 B
build/block-library/blocks/html/editor-rtl.css 336 B
build/block-library/blocks/html/editor.css 337 B
build/block-library/blocks/image/editor-rtl.css 891 B
build/block-library/blocks/image/editor.css 891 B
build/block-library/blocks/image/style-rtl.css 1.6 kB
build/block-library/blocks/image/style.css 1.59 kB
build/block-library/blocks/image/theme-rtl.css 133 B
build/block-library/blocks/image/theme.css 133 B
build/block-library/blocks/image/view.min.js 1.54 kB
build/block-library/blocks/latest-comments/style-rtl.css 357 B
build/block-library/blocks/latest-comments/style.css 357 B
build/block-library/blocks/latest-posts/editor-rtl.css 213 B
build/block-library/blocks/latest-posts/editor.css 212 B
build/block-library/blocks/latest-posts/style-rtl.css 494 B
build/block-library/blocks/latest-posts/style.css 494 B
build/block-library/blocks/list/style-rtl.css 88 B
build/block-library/blocks/list/style.css 88 B
build/block-library/blocks/media-text/editor-rtl.css 306 B
build/block-library/blocks/media-text/editor.css 305 B
build/block-library/blocks/media-text/style-rtl.css 505 B
build/block-library/blocks/media-text/style.css 503 B
build/block-library/blocks/more/editor-rtl.css 431 B
build/block-library/blocks/more/editor.css 431 B
build/block-library/blocks/navigation-link/editor-rtl.css 668 B
build/block-library/blocks/navigation-link/editor.css 669 B
build/block-library/blocks/navigation-link/style-rtl.css 193 B
build/block-library/blocks/navigation-link/style.css 192 B
build/block-library/blocks/navigation-submenu/editor-rtl.css 296 B
build/block-library/blocks/navigation-submenu/editor.css 295 B
build/block-library/blocks/navigation/editor-rtl.css 2.26 kB
build/block-library/blocks/navigation/editor.css 2.26 kB
build/block-library/blocks/navigation/style-rtl.css 2.26 kB
build/block-library/blocks/navigation/style.css 2.25 kB
build/block-library/blocks/navigation/view.min.js 1.03 kB
build/block-library/blocks/nextpage/editor-rtl.css 395 B
build/block-library/blocks/nextpage/editor.css 395 B
build/block-library/blocks/page-list/editor-rtl.css 377 B
build/block-library/blocks/page-list/editor.css 377 B
build/block-library/blocks/page-list/style-rtl.css 175 B
build/block-library/blocks/page-list/style.css 175 B
build/block-library/blocks/paragraph/editor-rtl.css 235 B
build/block-library/blocks/paragraph/editor.css 235 B
build/block-library/blocks/paragraph/style-rtl.css 335 B
build/block-library/blocks/paragraph/style.css 335 B
build/block-library/blocks/post-author/style-rtl.css 175 B
build/block-library/blocks/post-author/style.css 176 B
build/block-library/blocks/post-comments-form/editor-rtl.css 96 B
build/block-library/blocks/post-comments-form/editor.css 96 B
build/block-library/blocks/post-comments-form/style-rtl.css 508 B
build/block-library/blocks/post-comments-form/style.css 508 B
build/block-library/blocks/post-content/editor-rtl.css 74 B
build/block-library/blocks/post-content/editor.css 74 B
build/block-library/blocks/post-date/style-rtl.css 61 B
build/block-library/blocks/post-date/style.css 61 B
build/block-library/blocks/post-excerpt/editor-rtl.css 71 B
build/block-library/blocks/post-excerpt/editor.css 71 B
build/block-library/blocks/post-excerpt/style-rtl.css 141 B
build/block-library/blocks/post-excerpt/style.css 141 B
build/block-library/blocks/post-featured-image/editor-rtl.css 734 B
build/block-library/blocks/post-featured-image/editor.css 732 B
build/block-library/blocks/post-featured-image/style-rtl.css 342 B
build/block-library/blocks/post-featured-image/style.css 342 B
build/block-library/blocks/post-navigation-link/style-rtl.css 215 B
build/block-library/blocks/post-navigation-link/style.css 214 B
build/block-library/blocks/post-template/editor-rtl.css 99 B
build/block-library/blocks/post-template/editor.css 98 B
build/block-library/blocks/post-template/style-rtl.css 397 B
build/block-library/blocks/post-template/style.css 396 B
build/block-library/blocks/post-terms/style-rtl.css 96 B
build/block-library/blocks/post-terms/style.css 96 B
build/block-library/blocks/post-time-to-read/style-rtl.css 69 B
build/block-library/blocks/post-time-to-read/style.css 69 B
build/block-library/blocks/post-title/style-rtl.css 100 B
build/block-library/blocks/post-title/style.css 100 B
build/block-library/blocks/preformatted/style-rtl.css 125 B
build/block-library/blocks/preformatted/style.css 125 B
build/block-library/blocks/pullquote/editor-rtl.css 135 B
build/block-library/blocks/pullquote/editor.css 135 B
build/block-library/blocks/pullquote/style-rtl.css 354 B
build/block-library/blocks/pullquote/style.css 353 B
build/block-library/blocks/pullquote/theme-rtl.css 174 B
build/block-library/blocks/pullquote/theme.css 174 B
build/block-library/blocks/query-pagination-numbers/editor-rtl.css 122 B
build/block-library/blocks/query-pagination-numbers/editor.css 121 B
build/block-library/blocks/query-pagination/editor-rtl.css 221 B
build/block-library/blocks/query-pagination/editor.css 211 B
build/block-library/blocks/query-pagination/style-rtl.css 288 B
build/block-library/blocks/query-pagination/style.css 284 B
build/block-library/blocks/query-title/style-rtl.css 63 B
build/block-library/blocks/query-title/style.css 63 B
build/block-library/blocks/query/editor-rtl.css 486 B
build/block-library/blocks/query/editor.css 486 B
build/block-library/blocks/query/view.min.js 958 B
build/block-library/blocks/quote/style-rtl.css 237 B
build/block-library/blocks/quote/style.css 237 B
build/block-library/blocks/quote/theme-rtl.css 233 B
build/block-library/blocks/quote/theme.css 235 B
build/block-library/blocks/read-more/style-rtl.css 140 B
build/block-library/blocks/read-more/style.css 140 B
build/block-library/blocks/rss/editor-rtl.css 101 B
build/block-library/blocks/rss/editor.css 101 B
build/block-library/blocks/rss/style-rtl.css 289 B
build/block-library/blocks/rss/style.css 288 B
build/block-library/blocks/search/editor-rtl.css 184 B
build/block-library/blocks/search/editor.css 184 B
build/block-library/blocks/search/style-rtl.css 690 B
build/block-library/blocks/search/style.css 689 B
build/block-library/blocks/search/theme-rtl.css 114 B
build/block-library/blocks/search/theme.css 114 B
build/block-library/blocks/search/view.min.js 478 B
build/block-library/blocks/separator/editor-rtl.css 146 B
build/block-library/blocks/separator/editor.css 146 B
build/block-library/blocks/separator/style-rtl.css 239 B
build/block-library/blocks/separator/style.css 239 B
build/block-library/blocks/separator/theme-rtl.css 194 B
build/block-library/blocks/separator/theme.css 194 B
build/block-library/blocks/shortcode/editor-rtl.css 286 B
build/block-library/blocks/shortcode/editor.css 286 B
build/block-library/blocks/site-logo/editor-rtl.css 805 B
build/block-library/blocks/site-logo/editor.css 805 B
build/block-library/blocks/site-logo/style-rtl.css 204 B
build/block-library/blocks/site-logo/style.css 204 B
build/block-library/blocks/site-tagline/editor-rtl.css 86 B
build/block-library/blocks/site-tagline/editor.css 86 B
build/block-library/blocks/site-title/editor-rtl.css 116 B
build/block-library/blocks/site-title/editor.css 116 B
build/block-library/blocks/site-title/style-rtl.css 57 B
build/block-library/blocks/site-title/style.css 57 B
build/block-library/blocks/social-link/editor-rtl.css 324 B
build/block-library/blocks/social-link/editor.css 324 B
build/block-library/blocks/social-links/editor-rtl.css 676 B
build/block-library/blocks/social-links/editor.css 675 B
build/block-library/blocks/social-links/style-rtl.css 1.5 kB
build/block-library/blocks/social-links/style.css 1.5 kB
build/block-library/blocks/spacer/editor-rtl.css 350 B
build/block-library/blocks/spacer/editor.css 350 B
build/block-library/blocks/spacer/style-rtl.css 48 B
build/block-library/blocks/spacer/style.css 48 B
build/block-library/blocks/table/editor-rtl.css 395 B
build/block-library/blocks/table/editor.css 395 B
build/block-library/blocks/table/style-rtl.css 639 B
build/block-library/blocks/table/style.css 639 B
build/block-library/blocks/table/theme-rtl.css 152 B
build/block-library/blocks/table/theme.css 152 B
build/block-library/blocks/tag-cloud/style-rtl.css 251 B
build/block-library/blocks/tag-cloud/style.css 253 B
build/block-library/blocks/template-part/editor-rtl.css 393 B
build/block-library/blocks/template-part/editor.css 393 B
build/block-library/blocks/template-part/theme-rtl.css 107 B
build/block-library/blocks/template-part/theme.css 107 B
build/block-library/blocks/term-description/style-rtl.css 111 B
build/block-library/blocks/term-description/style.css 111 B
build/block-library/blocks/text-columns/editor-rtl.css 95 B
build/block-library/blocks/text-columns/editor.css 95 B
build/block-library/blocks/text-columns/style-rtl.css 166 B
build/block-library/blocks/text-columns/style.css 166 B
build/block-library/blocks/verse/style-rtl.css 99 B
build/block-library/blocks/verse/style.css 99 B
build/block-library/blocks/video/editor-rtl.css 552 B
build/block-library/blocks/video/editor.css 555 B
build/block-library/blocks/video/style-rtl.css 185 B
build/block-library/blocks/video/style.css 185 B
build/block-library/blocks/video/theme-rtl.css 133 B
build/block-library/blocks/video/theme.css 133 B
build/block-library/classic-rtl.css 179 B
build/block-library/classic.css 179 B
build/block-library/common-rtl.css 1.11 kB
build/block-library/common.css 1.11 kB
build/block-library/editor-elements-rtl.css 75 B
build/block-library/editor-elements.css 75 B
build/block-library/editor-rtl.css 12.2 kB
build/block-library/editor.css 12.2 kB
build/block-library/elements-rtl.css 54 B
build/block-library/elements.css 54 B
build/block-library/index.min.js 218 kB
build/block-library/reset-rtl.css 472 B
build/block-library/reset.css 472 B
build/block-library/style-rtl.css 14.8 kB
build/block-library/style.css 14.8 kB
build/block-library/theme-rtl.css 707 B
build/block-library/theme.css 713 B
build/block-serialization-default-parser/index.min.js 1.12 kB
build/block-serialization-spec-parser/index.min.js 2.87 kB
build/blocks/index.min.js 51.7 kB
build/commands/index.min.js 15.1 kB
build/commands/style-rtl.css 953 B
build/commands/style.css 951 B
build/components/index.min.js 222 kB
build/components/style-rtl.css 12 kB
build/components/style.css 12 kB
build/compose/index.min.js 12.8 kB
build/core-commands/index.min.js 2.73 kB
build/core-data/index.min.js 72.5 kB
build/customize-widgets/index.min.js 10.9 kB
build/customize-widgets/style-rtl.css 1.36 kB
build/customize-widgets/style.css 1.36 kB
build/data-controls/index.min.js 640 B
build/data/index.min.js 9 kB
build/date/index.min.js 17.9 kB
build/deprecated/index.min.js 451 B
build/dom-ready/index.min.js 324 B
build/dom/index.min.js 4.65 kB
build/edit-post/classic-rtl.css 578 B
build/edit-post/classic.css 578 B
build/edit-post/index.min.js 14.6 kB
build/edit-post/style-rtl.css 2.68 kB
build/edit-post/style.css 2.68 kB
build/edit-widgets/index.min.js 17.5 kB
build/edit-widgets/style-rtl.css 4.18 kB
build/edit-widgets/style.css 4.18 kB
build/editor/index.min.js 91.3 kB
build/editor/style-rtl.css 8.39 kB
build/editor/style.css 8.4 kB
build/element/index.min.js 4.83 kB
build/escape-html/index.min.js 537 B
build/format-library/index.min.js 8.07 kB
build/format-library/style-rtl.css 493 B
build/format-library/style.css 492 B
build/hooks/index.min.js 1.55 kB
build/html-entities/index.min.js 448 B
build/i18n/index.min.js 3.58 kB
build/interactivity/debug.min.js 16.4 kB
build/interactivity/file.min.js 447 B
build/interactivity/image.min.js 1.67 kB
build/interactivity/index.min.js 13.2 kB
build/interactivity/navigation.min.js 1.17 kB
build/interactivity/query.min.js 740 B
build/interactivity/router.min.js 2.81 kB
build/interactivity/search.min.js 618 B
build/is-shallow-equal/index.min.js 527 B
build/keyboard-shortcuts/index.min.js 1.3 kB
build/keycodes/index.min.js 1.46 kB
build/list-reusable-blocks/index.min.js 2.11 kB
build/list-reusable-blocks/style-rtl.css 851 B
build/list-reusable-blocks/style.css 851 B
build/media-utils/index.min.js 2.92 kB
build/modules/importmap-polyfill.min.js 12.2 kB
build/notices/index.min.js 948 B
build/nux/index.min.js 1.57 kB
build/nux/style-rtl.css 748 B
build/nux/style.css 744 B
build/patterns/index.min.js 6.46 kB
build/patterns/style-rtl.css 595 B
build/patterns/style.css 595 B
build/plugins/index.min.js 1.8 kB
build/preferences-persistence/index.min.js 2.06 kB
build/preferences/index.min.js 2.85 kB
build/preferences/style-rtl.css 710 B
build/preferences/style.css 712 B
build/primitives/index.min.js 809 B
build/priority-queue/index.min.js 1.52 kB
build/private-apis/index.min.js 1 kB
build/react-i18n/index.min.js 623 B
build/react-refresh-entry/index.min.js 9.47 kB
build/react-refresh-runtime/index.min.js 6.78 kB
build/redux-routine/index.min.js 2.7 kB
build/reusable-blocks/index.min.js 2.7 kB
build/reusable-blocks/style-rtl.css 256 B
build/reusable-blocks/style.css 256 B
build/rich-text/index.min.js 10.1 kB
build/router/index.min.js 1.93 kB
build/server-side-render/index.min.js 1.96 kB
build/shortcode/index.min.js 1.39 kB
build/style-engine/index.min.js 2.02 kB
build/token-list/index.min.js 582 B
build/url/index.min.js 3.74 kB
build/vendors/inert-polyfill.min.js 2.48 kB
build/vendors/react-dom.min.js 41.7 kB
build/vendors/react.min.js 4.03 kB
build/viewport/index.min.js 957 B
build/warning/index.min.js 249 B
build/widgets/index.min.js 7.11 kB
build/widgets/style-rtl.css 1.17 kB
build/widgets/style.css 1.17 kB
build/wordcount/index.min.js 1.02 kB

compressed-size-action

@madhusudhand madhusudhand self-assigned this Apr 15, 2024
@madhusudhand madhusudhand added [Type] Feature New feature to highlight in changelogs. Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json labels Apr 15, 2024
@aaronrobertshaw
Copy link
Contributor

@madhusudhand as promised I've pushed a different approach to parsing shadow strings in 60c40f3.

While that commit gets all 2040 unit tests passing, it was only quickly hacked together and could definitely do with some refinement. That said, hopefully, it helps unblock the rest of the UI work here, I'm looking forward to seeing the end result!

Some aspects of the updated approach that need looking at are;

  • making sure that there is type consistency in parsed values e.g. '0' vs 0
  • making it more robust in the face of invalid strings, including extra unit tests for these
  • inline comments to explain the various regex patterns used and maybe also the fact that length values must all be together for it to be a valid shadow string
  • whether or not extra spaces should be stripped when the shadow strings are parsed or built
  • performance, there's likely a more performant approach that this could be refined towards

There's probably more that I haven't noted but as this PR is still in its early days, I'm sure it will all come out in the wash 😄

Copy link

github-actions bot commented May 2, 2024

Flaky tests detected in 44a72d0.
Some tests passed with failed attempts. The failures may not be related to this commit but are still reported for visibility. See the documentation for more information.

🔍 Workflow run URL: https://github.com/WordPress/gutenberg/actions/runs/9173073571
📝 Reported issues:

@madhusudhand
Copy link
Contributor Author

@aaronrobertshaw Thanks for the commit. It is working great for all the listed scenarios of valid shadow strings.

making it more robust in the face of invalid strings, including extra unit tests for these

I have considered adding few invalid strings such as {x} {color} {y}.
The above string is invalid in browser perspective as it expects the lengths to be consecutive and there can only be 2, 3, or 4 length values exactly. anything else becomes an invalid shadow string.

Our current approach picks all length values and considers first four of them.
https://github.com/WordPress/gutenberg/pull/60706/files#diff-a9239b1be6e77b3723c92bb93c45928bdd59da74b90dcbe602ab71a44c0154eaR56

I am going to refine the regular expression to pick up the units in order.

@madhusudhand
Copy link
Contributor Author

madhusudhand commented May 2, 2024

Short summary for design review

@jameskoster @WordPress/gutenberg-design

Changes are now ready for the first design review. While it addresses everything as per the suggested designs, following are done differently.

Popover

Design Actual UI
image image
  1. For the color selection ColorPalette core component is used and it comes the the above layout, and differs from the suggested one.
  2. x,y position square is not implemented yet in the first iteration. as it requires a new component and needs to be tested for acceptability, it shall be implemented in the next iteration.

❓ What do you suggest as the boundaries for the slider.
In the current revision 0-20px or 0-10rem or 0-100% are used as boundaries.

Preview

Design Actual UI
image image

A white background is used by taking some inspiration from the block preview component.
❓Please confirm if should be a transparent background.

Shadow options

image

❓Could you suggest designs for the rename, duplicate options. And for delete do you recommend having a confirmation UI? If yes, could you provide one?

Shadow item labeling

image

❓When the inset is true, do you think the above labeling makes sense?

Shadows panel copy

image

Please provide copy.

@madhusudhand madhusudhand marked this pull request as ready for review May 2, 2024 13:04
Copy link

github-actions bot commented May 2, 2024

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @jarekmorawski.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

If you're merging code through a pull request on GitHub, copy and paste the following into the bottom of the merge commit message.

Unlinked contributors: jarekmorawski.

Co-authored-by: madhusudhand <madhudollu@git.wordpress.org>
Co-authored-by: aaronrobertshaw <aaronrobertshaw@git.wordpress.org>
Co-authored-by: jorgefilipecosta <jorgefilipecosta@git.wordpress.org>
Co-authored-by: jameskoster <jameskoster@git.wordpress.org>
Co-authored-by: mikachan <mikachan@git.wordpress.org>
Co-authored-by: richtabor <richtabor@git.wordpress.org>
Co-authored-by: jasmussen <joen@git.wordpress.org>

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@madhusudhand madhusudhand changed the title DRAFT: edit/create shadows from editor Edit/create shadows in global styles May 2, 2024
@jarekmorawski
Copy link

x,y position square is not implemented yet in the first iteration. as it requires a new component and needs to be tested for acceptability, it shall be implemented in the next iteration.

Would it make sense to use the AlignmentMatrixControl component before we build a proper one?

@jameskoster
Copy link
Contributor

Thanks for the ping @madhusudhand, excellent work here, this is coming together nicely :)

For the color selection ColorPalette core component is used and it comes the the above layout, and differs from the suggested one.

Good idea, makes sense.

x,y position square is not implemented yet in the first iteration. as it requires a new component and needs to be tested for acceptability, it shall be implemented in the next iteration.

Also fine, and no rush on this.

What do you suggest as the boundaries for the slider.

0 - 20px seems a reasonable range to begin with – it's easy to tweak this later. I wonder if it's worth capturing negative values? Maybe we try -20 - 20 with 0 as the default?

A white background is used by taking some inspiration from the block preview component.
❓Please confirm if should be a transparent background.

I think it's worth trying the transparent texture so that white shadows are somewhat visible.

❓Could you suggest designs for the rename, duplicate options. And for delete do you recommend having a confirmation UI? If yes, could you provide one?

Could we use DropdownMenu V2 for this menu?

Rename should open a small Modal, same as renaming a page, template, or pattern:

Screenshot 2024-05-02 at 15 22 06

Delete should open a ConfirmDialog, same as deleting a template:

Screenshot 2024-05-02 at 15 24 15

Important: Only user-generated (custom) shadows should be rename-able or delete-able.

Duplicate is a little tricky because we need to think about where to send the user post duplication. I'd be tempted to leave duplication out of this PR, and revisit it separately.

❓When the inset is true, do you think the above labeling makes sense?

Yup, looks good :)

Please provide copy.

Maybe something like: "Manage and create shadow styles for use across the site.".


Some additional points:

  • When a theme or default shadow has been edited we probably need to add a 'Reset' action to the menu.
  • The icon for removing shadows should be a Button and include a tooltip.
  • When there are no theme shadows we can hide the "Theme" section
  • I don't think we need to show the "Custom shadows are empty!" message.

@jameskoster
Copy link
Contributor

Would it make sense to use the AlignmentMatrixControl component before we build a proper one?

Could be worth a try, but probably follow-up territory.

@richtabor
Copy link
Member

@jasmussen Here's another proposed top-level navigation item for global styles.

I think we should map out how presets like shadow (and spacing eventually) should be presented in global styles.

@jasmussen
Copy link
Contributor

Agreed, the current IA is not scaling well. The issue feels a bit pressed by the too-granular "Background image". Going back to #47369, the main instinct there is to separate in two categories, presets and styles. Saxon suggests this:

Presets

  • Typography
  • Colors
  • Spacing
  • Layout

Styles

  • Elements
  • Blocks

"Shadows" is perhaps not the best term, but since it's a set of presets, the above heuristic would provide a structure for it at the top, alongside Colors and Typography.

Layout is a bit tricky since it's in-between presets (through inheritance of block spacing and content widths), and styles for the current page (padding). I wonder if we could split that out, clean it up once and for all. The following is a quick idea intended to inspire better ideas:

Presets

  • Typography
  • Colors
  • Shadows
  • Spacing

Styles

  • Site
  • Elements
  • Blocks

"Background image" would go in "Site". As would "Padding", currently sitting in Layout. Block spacing would move from Layout to Spacing, along with other presets eventually. "Site" could also be a place where Border could be added.

@jameskoster
Copy link
Contributor

The separation makes sense, but unsure about "Styles" and "Presets" as headings. Would a shadow be a style or a preset... it's kind of both? The headings might not both be necessary, the labels are generally self-explanatory.

Either way, probably a discussion for #53483. Saxon shared some interesting ideas there already.

@jasmussen
Copy link
Contributor

Would it work without subheadings? Maybe, though I think they make sense insofar as for shadows, you are only editing the presets there. You apply them (style your blocks) elsewhere.

The subheadings also consider that "Blocks" is currently separated by both a line and introductory text. We can keep it that way.

The thing is, we do need to make some progress for 6.6, especially for "Background image" which is so far removed from its context. #53483 is probably parallel but less likely to make it for 6.6. Unless we have better ideas, we should move "Background image" under "Layout".

@jameskoster
Copy link
Contributor

I guess it tripped me up because shadows can be both a style, and a style preset. Maybe I'm too used to the 'styles' concept in Figma.

"Background" and "Layout" being grouped together under "Site" seems worth a try.

@jorgefilipecosta
Copy link
Member

jorgefilipecosta commented May 3, 2024

Hi @madhusudhand,
It seems that although custom shadows are stored:
Screenshot 2024-05-03 at 18 14 39

They are not shown as one of the available options to pick:
Screenshot 2024-05-03 at 18 16 56

There is also a small issue where if the shadow is too big it may make it impossible to correctly preview the other shadows.

For colors, we show the multiple origins of colors:
Screenshot 2024-05-03 at 18 19 47
Should we do the same for shadows?

Are there any plans to allow to pick a specific shadow in a given place besides the preset ones?

@jorgefilipecosta
Copy link
Member

Not for this PR but, Would it make sense when picking a color for the shadow show the preset color palettes? If a preset color is selected the shadow would reference it by its variable making the shadows dynamically change when the colors change.

Copy link
Member

@jorgefilipecosta jorgefilipecosta left a comment

Choose a reason for hiding this comment

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

Hi @madhusudhand, the main functionality is working well, and the code looks good 👍 Any specific part where a deeper look may be helpful?

@madhusudhand
Copy link
Contributor Author

Thanks for the excellent reviews. Bringing this feature in and more suggestions/issues will be addressed in followup PRs.

@madhusudhand madhusudhand enabled auto-merge (squash) May 21, 2024 10:19
@madhusudhand madhusudhand merged commit 1a12b1e into trunk May 21, 2024
62 checks passed
@madhusudhand madhusudhand deleted the shadows-editor branch May 21, 2024 11:17
@github-actions github-actions bot added this to the Gutenberg 18.5 milestone May 21, 2024
@madhusudhand
Copy link
Contributor Author

I am sorry, I missed copying props.

carstingaxion pushed a commit to carstingaxion/gutenberg that referenced this pull request Jun 4, 2024
* add shadows panel in global styles

* add shadows editor view

* add color edit popover

* refine ui between default and custom shadows

* update shadows UI to match new designs

* add unit tests

* Try different approach to parsing shadow strings

* add more unit tests and improve util functions

* update shadows edit panel

* fix unit conversion issues and other ui improvements

* add shadow rename and delete functions

* address design feedback

* add option to reset default and theme shadows

* add custom shadows in block styles

* remove local state and use momoize

* fix lint issue

* move reset option from shadows panel to shadow edit panel

* split shadow dropdown button into two buttons

* fix item height to 40px

* validate invalid shadow strings

* update spacing

* delete comments

---------

Co-authored-by: Aaron Robertshaw <60436221+aaronrobertshaw@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Global Styles Anything related to the broader Global Styles efforts, including Styles Engine and theme.json [Type] Feature New feature to highlight in changelogs.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Shadow: create / edit shadows in the global styles
8 participants