feat(content-gating): i3 designs for content gates list view#4512
feat(content-gating): i3 designs for content gates list view#4512
Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the Audience → Access Control “content gates” list view to match the i3 designs, and introduces wizard-wide snackbar notices driven by the Wizard Redux store (via a new WizardSnackbar wrapper).
Changes:
- Redesign content gates list view cards and their “Edit / Activate / Deactivate / Delete” actions.
- Add Wizard store-backed snackbar notices (
notices[]) and render them fromWizard. - Extend shared UI components (SectionHeader actions/description, Grid borders, CoreCard dropdown actions) to support the new designs.
Reviewed changes
Copilot reviewed 26 out of 27 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/wizards/hooks/use-wizard-api-fetch.ts | Sync local hook error state with wizardData error. |
| src/wizards/componentsDemo/index.js | Demo: wrap core-card examples in VStack. |
| src/wizards/audience/views/content-gates/types/index.d.ts | Split gate rule props types; add isStatic to rule control props. |
| src/wizards/audience/views/content-gates/style.scss | Add list-view settings typography/button styles (currently has brace issues). |
| src/wizards/audience/views/content-gates/edit/style.scss | Add spacing for taxonomy token field. |
| src/wizards/audience/views/content-gates/edit/registration.tsx | Remove “Edit Layout” link from edit panel. |
| src/wizards/audience/views/content-gates/edit/index.tsx | Redirect to list after save/create; add snackbar notices; add unsaved changes prompt; refactor status changes. |
| src/wizards/audience/views/content-gates/edit/custom-access.tsx | Remove “Edit Layout” link from edit panel. |
| src/wizards/audience/views/content-gates/edit/content-rule.tsx | Use new content-rule-specific props; ensure exclusion is passed through. |
| src/wizards/audience/views/content-gates/edit/content-rule-control.tsx | Add static display mode and exclusion propagation for taxonomy control. |
| src/wizards/audience/views/content-gates/edit/content-rule-control-taxonomy.tsx | Add static display mode; parse/display selected labels. |
| src/wizards/audience/views/content-gates/edit/access-rule.tsx | Use new access-rule-specific props. |
| src/wizards/audience/views/content-gates/content-gates.tsx | Replace old expandable action-cards list with new list layout + header store usage; stub modal for “Gate priority”. |
| src/wizards/audience/views/content-gates/content-gate-settings.tsx | New gate “card” layout showing gate settings; add per-card actions + snackbars. |
| packages/components/src/wizard/store/index.js | Add notices[] to state plus add/remove/reset actions + selector; add sectionDescription to headerData defaults. |
| packages/components/src/wizard/index.js | Render SectionHeader with description + actions; render snackbars from notices; adjust header reset behavior. |
| packages/components/src/wizard/components/style.scss | Add snackbar positioning + link styling. |
| packages/components/src/wizard/components/WizardSnackbar.js | New wrapper around core Snackbar that removes notices from wizard store on dismiss. |
| packages/components/src/with-wizard-screen/style.scss | Add margin for wizard section header. |
| packages/components/src/section-header/style.scss | Layout updates for primary/secondary actions; adjust margin logic. |
| packages/components/src/section-header/index.js | Add primary/secondary actions rendering and related container classnames. |
| packages/components/src/grid/style.scss | Add borders variant styling and move gutter-64 definition. |
| packages/components/src/grid/index.tsx | Add borders prop to apply bordered grid styling. |
| packages/components/src/card/style-core.scss | Improve core-card layout (dropdown positioning, no-margin body padding, header typography). |
| packages/components/src/card/index.js | Add noMargin to core-card prop defaults. |
| packages/components/src/card/core-card.js | Add dropdown actions support to core-card header. |
| includes/content-gate/class-content-gate.php | Create gates as publish by default (ignores passed status). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
I really like you introduced this when we have unsaved changes. Would it be possible to use a Modal instead? And the same goes for the delete message.
|
|
My previous comment shouldn't be a blocker. We can always handle it in a separate PR. |
Thanks, @thomasguillot! I was surprised to see we're not using those size props with |
|
I'll keep this open so I can merge #4518 without conflicts! |
…table list Add `id` field to `DraggableItem` type and use it as the React key instead of array index, preventing element mismatches on reorder. Also add a document-level dragover listener during drag to suppress the browser's snap-back animation when dropping outside the list container.
Fix/sortable list improvements
feat(content-gates): add priority management UI
|
Hey @dkoo, good job getting this PR merged! 🎉 Now, the Please check if this PR needs to be included in the "Upcoming Changes" and "Release Notes" doc. If it doesn't, simply remove the label. If it does, please add an entry to our shared document, with screenshots and testing instructions if applicable, then remove the label. Thank you! ❤️ |
# [6.35.0-alpha.1](v6.34.2...v6.35.0-alpha.1) (2026-03-05) ### Bug Fixes * allow deletion of payment method for Braintree ([63ceec3](63ceec3)) * apply Copilot suggestion for tests ([6133636](6133636)) * **avatar:** correct duotone selector to support custom colors ([#4513](#4513)) ([c4458d4](c4458d4)) * **byline:** update placeholder text to "Author Name" ([#4510](#4510)) ([727b1e8](727b1e8)) * **co-authors-plus:** sanitize user_login before building dummy email… ([#4520](#4520)) ([32c2602](32c2602)) * do not depend on _get() to return an array ([2816470](2816470)) * **dropdown-menu:** avoid overflow at bottom of viewport ([#4495](#4495)) ([a5ce464](a5ce464)) * enable payment method deletion for Braintree ([c50f094](c50f094)) * iframe editor compatiblity ([#4444](#4444)) ([12dfaba](12dfaba)) * **my-account:** don't show subscription payment notice in modal checkout ([#4500](#4500)) ([2cb3324](2cb3324)) * **my-account:** force white background color ([#4514](#4514)) ([02e2555](02e2555)) * **my-account:** resubscription validation in order-again template ([#4498](#4498)) ([36871fc](36871fc)) * **newspack-icon:** background color ([#4516](#4516)) ([8c5dc9c](8c5dc9c)) * **newspack-ui:** remove overflow when modal is open ([#4515](#4515)) ([0b2cbd3](0b2cbd3)) * prune read-only keys from sync queue ([bf81734](bf81734)) * remove unused 'edit' and 'save' actions from Braintree payment methods ([8f72a8d](8f72a8d)) * **snackbar:** autohide progress bar not always appearing ([#4504](#4504)) ([4eda60f](4eda60f)) ### Features * identify and enforce read-only items for Reader Data Library ([4f2ef8a](4f2ef8a)) * add featured image caption block ([#4519](#4519)) ([0b744ff](0b744ff)) * **author-profile:** avatar and social blocks for nested author profile ([#4448](#4448)) ([cff670b](cff670b)) * **content-gate:** comment restriction with metering support ([#4529](#4529)) ([714c8b7](714c8b7)) * **content-gate:** per-post access control exemption ([#4530](#4530)) ([636679b](636679b)) * **content-gate:** user access information ([#4542](#4542)) ([b49347e](b49347e)) * **content-gating:** group subscription invitations data structure + admin UI ([#4536](#4536)) ([e609e83](e609e83)) * **content-gating:** i3 designs for content gates list view ([#4512](#4512)) ([dcbb239](dcbb239)) * **corrections:** append corrections to Republication Tracker Tool content ([#4501](#4501)) ([71bd177](71bd177)) * data event handler registration and dispatching to integrations ([#4481](#4481)) ([7c79da6](7c79da6)) * **data-events:** add ActionScheduler logging and retry reason ([#4488](#4488)) ([e8af964](e8af964)) * **integrations:** make sure contact data is read from persistent data ([#4505](#4505)) ([c2ee26a](c2ee26a)) * **integrations:** start get fields abstraction and pull contact data ([#4470](#4470)) ([8ddcf23](8ddcf23)), closes [#4477](#4477) * **reader-registration-block:** password, OTP, and verification flows ([#4452](#4452)) ([fc4567e](fc4567e)) * reject changes to specific reader data keys ([fe52e12](fe52e12))
|
🎉 This PR is included in version 6.35.0-alpha.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
# [6.35.0](v6.34.4...v6.35.0) (2026-03-16) ### Bug Fixes * allow deletion of payment method for Braintree ([63ceec3](63ceec3)) * apply Copilot suggestion for tests ([6133636](6133636)) * **avatar:** correct duotone selector to support custom colors ([#4513](#4513)) ([c4458d4](c4458d4)) * **byline:** update placeholder text to "Author Name" ([#4510](#4510)) ([727b1e8](727b1e8)) * **co-authors-plus:** sanitize user_login before building dummy email… ([#4520](#4520)) ([32c2602](32c2602)) * do not depend on _get() to return an array ([2816470](2816470)) * **dropdown-menu:** avoid overflow at bottom of viewport ([#4495](#4495)) ([a5ce464](a5ce464)) * enable payment method deletion for Braintree ([c50f094](c50f094)) * iframe editor compatiblity ([#4444](#4444)) ([12dfaba](12dfaba)) * **my-account:** don't show subscription payment notice in modal checkout ([#4500](#4500)) ([2cb3324](2cb3324)) * **my-account:** force white background color ([#4514](#4514)) ([02e2555](02e2555)) * **my-account:** resubscription validation in order-again template ([#4498](#4498)) ([36871fc](36871fc)) * **newspack-icon:** background color ([#4516](#4516)) ([8c5dc9c](8c5dc9c)) * **newspack-ui:** remove overflow when modal is open ([#4515](#4515)) ([0b2cbd3](0b2cbd3)) * prune read-only keys from sync queue ([bf81734](bf81734)) * remove unused 'edit' and 'save' actions from Braintree payment methods ([8f72a8d](8f72a8d)) * **snackbar:** autohide progress bar not always appearing ([#4504](#4504)) ([4eda60f](4eda60f)) ### Features * identify and enforce read-only items for Reader Data Library ([4f2ef8a](4f2ef8a)) * add featured image caption block ([#4519](#4519)) ([0b744ff](0b744ff)) * **author-profile:** avatar and social blocks for nested author profile ([#4448](#4448)) ([cff670b](cff670b)) * **content-gate:** comment restriction with metering support ([#4529](#4529)) ([714c8b7](714c8b7)) * **content-gate:** per-post access control exemption ([#4530](#4530)) ([636679b](636679b)) * **content-gate:** user access information ([#4542](#4542)) ([b49347e](b49347e)) * **content-gating:** group subscription invitations data structure + admin UI ([#4536](#4536)) ([e609e83](e609e83)) * **content-gating:** i3 designs for content gates list view ([#4512](#4512)) ([dcbb239](dcbb239)) * **corrections:** append corrections to Republication Tracker Tool content ([#4501](#4501)) ([71bd177](71bd177)) * data event handler registration and dispatching to integrations ([#4481](#4481)) ([7c79da6](7c79da6)) * **data-events:** add ActionScheduler logging and retry reason ([#4488](#4488)) ([e8af964](e8af964)) * **integrations:** make sure contact data is read from persistent data ([#4505](#4505)) ([c2ee26a](c2ee26a)) * **integrations:** start get fields abstraction and pull contact data ([#4470](#4470)) ([8ddcf23](8ddcf23)), closes [#4477](#4477) * **reader-registration-block:** password, OTP, and verification flows ([#4452](#4452)) ([fc4567e](fc4567e)) * reject changes to specific reader data keys ([fe52e12](fe52e12))
|
🎉 This PR is included in version 6.35.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |



All Submissions:
Changes proposed in this Pull Request:
Implements i3 designs for the "list" view for showing existing content gates in the Access Control wizard.
Also adds a new feature that allows the
Wizardcomponent to show snackbar-style notices via its Redux store. This is done via a newWizardSnackbarcomponent that wraps the coreSnackbarcomponent, but is aware of and interfaces the the Wizard Redux store.This PR only covers the list view for content gates. It doesn't cover i3 designs for priority management or other global settings such as Content Gifting and Countdown Banner features—these will come in future PRs.
Related NPPD-1244.
How to test the changes in this Pull Request:
wp post delete $(wp post list --post_type=np_content_gate --format=ids) --forceand confirm that the Onboarding screen still works as described in feat(content-gating): new UI for adding/editing content gates #4474.publishstatus in the back-end.Other information: