Commit 1367ff979d0 for woocommerce

commit 1367ff979d0225952b9025be9c820d4adc49f8a5
Author: Luigi Teschio <gigitux@gmail.com>
Date:   Wed May 27 13:36:02 2026 +0200

    Remove `@woocommerce/settings-editor` (#65316)

    * Remove settings editor and settings slotfills

    * refresh pnpm-lcok

    * Restore classic settings slotfill integrations

    * Update changelog entries for settings editor removal

    * Restore classic settings e2e coverage

    * address feedback

diff --git a/.syncpackrc b/.syncpackrc
index 7228b00e683..99bbe2b8208 100644
--- a/.syncpackrc
+++ b/.syncpackrc
@@ -369,7 +369,6 @@
 			],
 			"packages": [
 				"@woocommerce/product-editor",
-				"@woocommerce/settings-editor",
 				"@woocommerce/admin-library"
 			],
 			"isIgnored": true
diff --git a/packages/js/dependency-extraction-webpack-plugin/assets/packages.js b/packages/js/dependency-extraction-webpack-plugin/assets/packages.js
index a429c8a59ab..6447993bc7c 100644
--- a/packages/js/dependency-extraction-webpack-plugin/assets/packages.js
+++ b/packages/js/dependency-extraction-webpack-plugin/assets/packages.js
@@ -18,7 +18,6 @@ module.exports = [
 	'@woocommerce/notices',
 	'@woocommerce/number',
 	'@woocommerce/product-editor',
-	'@woocommerce/settings-editor',
 	'@woocommerce/tracks',
 	'@woocommerce/remote-logging',
 	'@woocommerce/sanitize',
diff --git a/packages/js/dependency-extraction-webpack-plugin/changelog/remove-settings-editor-package b/packages/js/dependency-extraction-webpack-plugin/changelog/remove-settings-editor-package
new file mode 100644
index 00000000000..86cff00cf54
--- /dev/null
+++ b/packages/js/dependency-extraction-webpack-plugin/changelog/remove-settings-editor-package
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Remove the settings editor package from dependency extraction.
diff --git a/packages/js/settings-editor/.eslintrc.js b/packages/js/settings-editor/.eslintrc.js
deleted file mode 100644
index 4e08c1f028a..00000000000
--- a/packages/js/settings-editor/.eslintrc.js
+++ /dev/null
@@ -1,47 +0,0 @@
-module.exports = {
-	extends: [ 'plugin:@woocommerce/eslint-plugin/recommended' ],
-	root: true,
-	overrides: [
-		{
-			files: [ '**/*.js', '**/*.jsx', '**/*.tsx' ],
-			rules: {
-				'react/react-in-jsx-scope': 'off',
-			},
-		},
-	],
-	settings: {
-		'import/core-modules': [
-			'@woocommerce/admin-layout',
-			'@woocommerce/block-templates',
-			'@woocommerce/components',
-			'@woocommerce/customer-effort-score',
-			'@woocommerce/currency',
-			'@woocommerce/data',
-			'@woocommerce/experimental',
-			'@woocommerce/expression-evaluation',
-			'@woocommerce/navigation',
-			'@woocommerce/number',
-			'@woocommerce/settings',
-			'@woocommerce/tracks',
-			'@wordpress/blocks',
-			'@wordpress/block-editor',
-			'@wordpress/components',
-			'@wordpress/core-data',
-			'@wordpress/date',
-			'@wordpress/element',
-			'@wordpress/keycodes',
-			'@wordpress/media-utils',
-			'@testing-library/react',
-			'dompurify',
-			'react-router-dom',
-		],
-		'import/resolver': {
-			node: {},
-			webpack: {},
-			typescript: {},
-		},
-	},
-	rules: {
-		'@typescript-eslint/ban-ts-comment': 'off',
-	},
-};
diff --git a/packages/js/settings-editor/.npmrc b/packages/js/settings-editor/.npmrc
deleted file mode 100644
index 43c97e719a5..00000000000
--- a/packages/js/settings-editor/.npmrc
+++ /dev/null
@@ -1 +0,0 @@
-package-lock=false
diff --git a/packages/js/settings-editor/README.md b/packages/js/settings-editor/README.md
deleted file mode 100644
index 8a4e61603ca..00000000000
--- a/packages/js/settings-editor/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Product Editor
-
-A collection of WooCommerce Admin settings editor components and utilities.
-
-## Installation
-
-Install the module
-
-```bash
-pnpm install @woocommerce/settings-editor --save
-```
diff --git a/packages/js/settings-editor/babel.config.js b/packages/js/settings-editor/babel.config.js
deleted file mode 100644
index f73e04467aa..00000000000
--- a/packages/js/settings-editor/babel.config.js
+++ /dev/null
@@ -1,3 +0,0 @@
-module.exports = {
-	extends: '../internal-js-tests/babel.config.js',
-};
diff --git a/packages/js/settings-editor/changelog.md b/packages/js/settings-editor/changelog.md
deleted file mode 100644
index b45561f6394..00000000000
--- a/packages/js/settings-editor/changelog.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# Changelog
-
-This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
-
-## [0.1.0](https://www.npmjs.com/package/@woocommerce/settings-editor/v/0.1.0) - 2024-11-27
-
--   Patch - Remove exported Gutenberg components from `@woocommerce/product-editor` [#52655]
--   Minor - Add Settings package, feature flag, and initial page. [#52391]
--   Patch - Create a route file to handle populating Settings [#52691]
--   Patch - Create a warning or notice to add Gutenberg [#52501]
--   Patch - Ensure Modern settings pages re-render on updated url [#53016]
--   Patch - Update SettingsField types [#52905]
--   Patch - Update sidebar to reflect the route with the active item and linking [#52721]
--   Patch - Stabilize JS dependency updates [#52815]
--   Patch - Update dompurify to 2.5.7 [#52961]
-
-[See legacy changelogs for previous versions](https://github.com/woocommerce/woocommerce/blob/68581955106947918d2b17607a01bdfdf22288a9/packages/js/settings-editor/CHANGELOG.md).
diff --git a/packages/js/settings-editor/changelog/.gitkeep b/packages/js/settings-editor/changelog/.gitkeep
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/packages/js/settings-editor/changelog/53165-dev-ts-5-7-2 b/packages/js/settings-editor/changelog/53165-dev-ts-5-7-2
deleted file mode 100644
index 81738c8709d..00000000000
--- a/packages/js/settings-editor/changelog/53165-dev-ts-5-7-2
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: dev
-
-Upgraded Typescript in the monorepo to 5.7.2
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/53231-fix-settings-global-styles b/packages/js/settings-editor/changelog/53231-fix-settings-global-styles
deleted file mode 100644
index d39c70809eb..00000000000
--- a/packages/js/settings-editor/changelog/53231-fix-settings-global-styles
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Remove GlobalStylesProvider because its not required.
-
diff --git a/packages/js/settings-editor/changelog/53232-fix-settings-flash-modern-screens b/packages/js/settings-editor/changelog/53232-fix-settings-flash-modern-screens
deleted file mode 100644
index cd2dd26f10f..00000000000
--- a/packages/js/settings-editor/changelog/53232-fix-settings-flash-modern-screens
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Make sure Modern settings screens are available on first run.
-
diff --git a/packages/js/settings-editor/changelog/53531-dev-react-18-ghidorah b/packages/js/settings-editor/changelog/53531-dev-react-18-ghidorah
deleted file mode 100644
index ce948100616..00000000000
--- a/packages/js/settings-editor/changelog/53531-dev-react-18-ghidorah
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: major
-Type: dev
-
-Updated declared dependencies to React 18 and Wordpress 6.6
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/53772-add-settings-data-group-layout b/packages/js/settings-editor/changelog/53772-add-settings-data-group-layout
deleted file mode 100644
index 41206eedba0..00000000000
--- a/packages/js/settings-editor/changelog/53772-add-settings-data-group-layout
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Add layout groups to Settings pages
-
diff --git a/packages/js/settings-editor/changelog/53819-add-settings-basic-elements b/packages/js/settings-editor/changelog/53819-add-settings-basic-elements
deleted file mode 100644
index f3f337a65f5..00000000000
--- a/packages/js/settings-editor/changelog/53819-add-settings-basic-elements
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Add Settings checkbox, input, and select
-
diff --git a/packages/js/settings-editor/changelog/53859-add-settings-custom-slotfills b/packages/js/settings-editor/changelog/53859-add-settings-custom-slotfills
deleted file mode 100644
index fa07849960c..00000000000
--- a/packages/js/settings-editor/changelog/53859-add-settings-custom-slotfills
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Render new Settings custom and slotfill type settings elements.
-
diff --git a/packages/js/settings-editor/changelog/53909-add-settings-internal-slotFill b/packages/js/settings-editor/changelog/53909-add-settings-internal-slotFill
deleted file mode 100644
index 0ee1c39bed4..00000000000
--- a/packages/js/settings-editor/changelog/53909-add-settings-internal-slotFill
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: update
-
-Register and render internal slotFills in the new Settings.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/53913-update-handle-outputed-script b/packages/js/settings-editor/changelog/53913-update-handle-outputed-script
deleted file mode 100644
index 18ebd57c94f..00000000000
--- a/packages/js/settings-editor/changelog/53913-update-handle-outputed-script
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: This is behind the settings feature flag.
-
diff --git a/packages/js/settings-editor/changelog/54027-fix-settings-editor-types b/packages/js/settings-editor/changelog/54027-fix-settings-editor-types
deleted file mode 100644
index 90fde97f8b6..00000000000
--- a/packages/js/settings-editor/changelog/54027-fix-settings-editor-types
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Fix the type errors that introduced by the React 18 upgrade in the settings-editor package.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/54041-update-settings-dataform b/packages/js/settings-editor/changelog/54041-update-settings-dataform
deleted file mode 100644
index 69e20de51d5..00000000000
--- a/packages/js/settings-editor/changelog/54041-update-settings-dataform
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Use DataForms to render settings fields
-
diff --git a/packages/js/settings-editor/changelog/54798-add-dataform-settings-textarea b/packages/js/settings-editor/changelog/54798-add-dataform-settings-textarea
deleted file mode 100644
index 3be6f87be64..00000000000
--- a/packages/js/settings-editor/changelog/54798-add-dataform-settings-textarea
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Render textarea and color types for Settings, unreleased feature.
-
diff --git a/packages/js/settings-editor/changelog/54948-add-settings-custom-hooks b/packages/js/settings-editor/changelog/54948-add-settings-custom-hooks
deleted file mode 100644
index 43a135cfcb6..00000000000
--- a/packages/js/settings-editor/changelog/54948-add-settings-custom-hooks
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: Support woocommerce_settings_start hook in new, unreleased Settings
-
diff --git a/packages/js/settings-editor/changelog/54996-chore-update-wireit b/packages/js/settings-editor/changelog/54996-chore-update-wireit
deleted file mode 100644
index aef524f6c95..00000000000
--- a/packages/js/settings-editor/changelog/54996-chore-update-wireit
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Update wireit to 0.14.10
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/55095-dev-rewrite-wireit-deps-update b/packages/js/settings-editor/changelog/55095-dev-rewrite-wireit-deps-update
deleted file mode 100644
index 6815cebd675..00000000000
--- a/packages/js/settings-editor/changelog/55095-dev-rewrite-wireit-deps-update
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: refresh wireit dependencyOutputs configuration synchronization when installing dependencies.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/56246-update-settings-router-calypso-package b/packages/js/settings-editor/changelog/56246-update-settings-router-calypso-package
deleted file mode 100644
index 650aea395ac..00000000000
--- a/packages/js/settings-editor/changelog/56246-update-settings-router-calypso-package
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: update
-
-Update new Settings to use @automattic/site-admin's router instead of Gutenberg
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/56575-dev-bump-babel-deps b/packages/js/settings-editor/changelog/56575-dev-bump-babel-deps
deleted file mode 100644
index 510ab9c2a2a..00000000000
--- a/packages/js/settings-editor/changelog/56575-dev-bump-babel-deps
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: consolidate @babel/* dependencies versions across the monorepo.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/56746-dev-webpack-deps-review b/packages/js/settings-editor/changelog/56746-dev-webpack-deps-review
deleted file mode 100644
index b5d0c2d9741..00000000000
--- a/packages/js/settings-editor/changelog/56746-dev-webpack-deps-review
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: Webpack deps review and consolidation and a bit of deps grooming
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/57299-fix-wireit-in-ci b/packages/js/settings-editor/changelog/57299-fix-wireit-in-ci
deleted file mode 100644
index 10f4279499b..00000000000
--- a/packages/js/settings-editor/changelog/57299-fix-wireit-in-ci
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Bump wireit dependency version to latest.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/58765-dev-deps-cleanup-concurrently b/packages/js/settings-editor/changelog/58765-dev-deps-cleanup-concurrently
deleted file mode 100644
index 403fe3cc031..00000000000
--- a/packages/js/settings-editor/changelog/58765-dev-deps-cleanup-concurrently
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: drop the unused `concurrently` package from dependencies.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/58941-dev-consolidate-packages-license-version b/packages/js/settings-editor/changelog/58941-dev-consolidate-packages-license-version
deleted file mode 100644
index 879d15ddabc..00000000000
--- a/packages/js/settings-editor/changelog/58941-dev-consolidate-packages-license-version
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: consolidate packages licenses to `GPL-2.0-or-later`.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/59046-dev-build-ram-usage-batch-4 b/packages/js/settings-editor/changelog/59046-dev-build-ram-usage-batch-4
deleted file mode 100644
index a9198a4dd78..00000000000
--- a/packages/js/settings-editor/changelog/59046-dev-build-ram-usage-batch-4
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: build RAM usage optimization.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/59166-dev-faster-watch-startup-batch-1 b/packages/js/settings-editor/changelog/59166-dev-faster-watch-startup-batch-1
deleted file mode 100644
index 12fce504f86..00000000000
--- a/packages/js/settings-editor/changelog/59166-dev-faster-watch-startup-batch-1
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: watch startup time optimization.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/63483-add-62921-shared-monorepo-ts-config b/packages/js/settings-editor/changelog/63483-add-62921-shared-monorepo-ts-config
deleted file mode 100644
index 03e468e5a6e..00000000000
--- a/packages/js/settings-editor/changelog/63483-add-62921-shared-monorepo-ts-config
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Replaced patched `@wordpress/data` types with opt-in internal package types.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/64111-dev-fix-admin-webpack-cache-misses b/packages/js/settings-editor/changelog/64111-dev-fix-admin-webpack-cache-misses
deleted file mode 100644
index 13e547f58b4..00000000000
--- a/packages/js/settings-editor/changelog/64111-dev-fix-admin-webpack-cache-misses
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: refresh DependencyExtractionWebpackPlugin for compatibility with filesystem cache, admin build cleanup.
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/64161-dev-64111-post-cleanup b/packages/js/settings-editor/changelog/64161-dev-64111-post-cleanup
deleted file mode 100644
index b740e6c4df4..00000000000
--- a/packages/js/settings-editor/changelog/64161-dev-64111-post-cleanup
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: dev
-
-Monorepo: complete migration to @woocommerce/internal-style-build/webpack-rtl-plugin
\ No newline at end of file
diff --git a/packages/js/settings-editor/changelog/add-data-handling b/packages/js/settings-editor/changelog/add-data-handling
deleted file mode 100644
index b549b7c9973..00000000000
--- a/packages/js/settings-editor/changelog/add-data-handling
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: add
-Comment: Add client data handling to unreleased settings project
-
-
diff --git a/packages/js/settings-editor/changelog/add-settings-before-after-hooks b/packages/js/settings-editor/changelog/add-settings-before-after-hooks
deleted file mode 100644
index 8b95eae9bd5..00000000000
--- a/packages/js/settings-editor/changelog/add-settings-before-after-hooks
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: add
-Comment: Support woocommerce_before/after_settings_xxx for new Settings unreleased project
-
-
diff --git a/packages/js/settings-editor/changelog/add-settings-handle-type-info b/packages/js/settings-editor/changelog/add-settings-handle-type-info
deleted file mode 100644
index fb01b0351cd..00000000000
--- a/packages/js/settings-editor/changelog/add-settings-handle-type-info
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: add
-Comment: Support for 'info' settings type
-
-
diff --git a/packages/js/settings-editor/changelog/add-settings-save-api b/packages/js/settings-editor/changelog/add-settings-save-api
deleted file mode 100644
index 065e1b90115..00000000000
--- a/packages/js/settings-editor/changelog/add-settings-save-api
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: add
-Comment: Add Settings data persistence, unreleased feature.
-
-
diff --git a/packages/js/settings-editor/changelog/add-support-radio-getHelpAndLabel b/packages/js/settings-editor/changelog/add-support-radio-getHelpAndLabel
deleted file mode 100644
index 22d1d08884f..00000000000
--- a/packages/js/settings-editor/changelog/add-support-radio-getHelpAndLabel
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: add
-Comment: Add support for radio types in new, unreleased Settings.
-
-
diff --git a/packages/js/settings-editor/changelog/build-webpack-filesystem-cache b/packages/js/settings-editor/changelog/build-webpack-filesystem-cache
deleted file mode 100644
index f1d8163e888..00000000000
--- a/packages/js/settings-editor/changelog/build-webpack-filesystem-cache
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: dev
-
-Improve build time for settings-editor by using webpack filesystem cache.
diff --git a/packages/js/settings-editor/changelog/dev-55910-deps-consolidation b/packages/js/settings-editor/changelog/dev-55910-deps-consolidation
deleted file mode 100644
index 2b9c4b53b13..00000000000
--- a/packages/js/settings-editor/changelog/dev-55910-deps-consolidation
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: consolidate @wordpress/babel-preset-default, @wordpress/browserslist-config, glob packages versions.
diff --git a/packages/js/settings-editor/changelog/dev-ci-jobs-clean-up-cascading-keys-config-option b/packages/js/settings-editor/changelog/dev-ci-jobs-clean-up-cascading-keys-config-option
deleted file mode 100644
index d36f953d7ba..00000000000
--- a/packages/js/settings-editor/changelog/dev-ci-jobs-clean-up-cascading-keys-config-option
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-dev: clean-up ci-job config options - remove unused cascading keys
diff --git a/packages/js/settings-editor/changelog/dev-cjs-prepack-only b/packages/js/settings-editor/changelog/dev-cjs-prepack-only
deleted file mode 100644
index 0f64fecf28c..00000000000
--- a/packages/js/settings-editor/changelog/dev-cjs-prepack-only
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Move the CommonJS build to prepack so day-to-day development only builds the ESM output.
diff --git a/packages/js/settings-editor/changelog/dev-monorepo-internal-packages-linking-fixes b/packages/js/settings-editor/changelog/dev-monorepo-internal-packages-linking-fixes
deleted file mode 100644
index 52ec37bc356..00000000000
--- a/packages/js/settings-editor/changelog/dev-monorepo-internal-packages-linking-fixes
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: ensure monorepo packages are linked via workspace-version of the dependencies.
diff --git a/packages/js/settings-editor/changelog/enhance-settings-editor-controls b/packages/js/settings-editor/changelog/enhance-settings-editor-controls
deleted file mode 100644
index a8851c29c85..00000000000
--- a/packages/js/settings-editor/changelog/enhance-settings-editor-controls
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: enhancement
-Comment: Refactor settings editor components
-
-
diff --git a/packages/js/settings-editor/changelog/fix-build-warnings-WEBPACK_DEPRECATION_ARRAY_TO_SET_PUSH b/packages/js/settings-editor/changelog/fix-build-warnings-WEBPACK_DEPRECATION_ARRAY_TO_SET_PUSH
deleted file mode 100644
index 6ed44b069d6..00000000000
--- a/packages/js/settings-editor/changelog/fix-build-warnings-WEBPACK_DEPRECATION_ARRAY_TO_SET_PUSH
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: dev
-
-Update @automattic/webpack-rtl-plugin version
diff --git a/packages/js/settings-editor/changelog/fix-get_custom_view-object-verbose b/packages/js/settings-editor/changelog/fix-get_custom_view-object-verbose
deleted file mode 100644
index b0de03d5a4c..00000000000
--- a/packages/js/settings-editor/changelog/fix-get_custom_view-object-verbose
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: update
-Comment: Refactor get_custom_view-object for unreleased Settings project
-
-
diff --git a/packages/js/settings-editor/changelog/fix-settings-custom-view b/packages/js/settings-editor/changelog/fix-settings-custom-view
deleted file mode 100644
index 33d93e23114..00000000000
--- a/packages/js/settings-editor/changelog/fix-settings-custom-view
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: update
-Comment: Modify script processing to preserve original script elements
-
-
diff --git a/packages/js/settings-editor/changelog/fix-settings-hiden-inputs b/packages/js/settings-editor/changelog/fix-settings-hiden-inputs
deleted file mode 100644
index ecf3ec9ba64..00000000000
--- a/packages/js/settings-editor/changelog/fix-settings-hiden-inputs
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: fix
-Comment: Udpate Settings elements that need hidden inputs. Settings is unreleased feature
-
-
diff --git a/packages/js/settings-editor/changelog/performance-47602-use-clx b/packages/js/settings-editor/changelog/performance-47602-use-clx
deleted file mode 100644
index 4626c19db89..00000000000
--- a/packages/js/settings-editor/changelog/performance-47602-use-clx
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Monorepo: complete migration from `classnames` package to `clsx`.
diff --git a/packages/js/settings-editor/changelog/tweak-settings-route b/packages/js/settings-editor/changelog/tweak-settings-route
deleted file mode 100644
index d437fa91d00..00000000000
--- a/packages/js/settings-editor/changelog/tweak-settings-route
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: enhancement
-Comment: Enhance route handling by preventing updates on first render
-
-
diff --git a/packages/js/settings-editor/changelog/update-59804 b/packages/js/settings-editor/changelog/update-59804
deleted file mode 100644
index 5a1702a76a3..00000000000
--- a/packages/js/settings-editor/changelog/update-59804
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: minor
-Type: dev
-
-Bump jest package dependency to 29.5.x
diff --git a/packages/js/settings-editor/changelog/update-pnpm-10-upgrade b/packages/js/settings-editor/changelog/update-pnpm-10-upgrade
deleted file mode 100644
index 06fa4b8bf68..00000000000
--- a/packages/js/settings-editor/changelog/update-pnpm-10-upgrade
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: patch
-Type: dev
-
-Update @wordpress/* peerDependencies from dist-tags to semver ranges for pnpm 10 compatibility.
diff --git a/packages/js/settings-editor/changelog/update-settings-edits b/packages/js/settings-editor/changelog/update-settings-edits
deleted file mode 100644
index 1439e257fd5..00000000000
--- a/packages/js/settings-editor/changelog/update-settings-edits
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: enhancement
-Comment: Enhance edits components with dynamic label and help text handling
-
-
diff --git a/packages/js/settings-editor/changelog/update-settings-return-to-wc-home b/packages/js/settings-editor/changelog/update-settings-return-to-wc-home
deleted file mode 100644
index 2144b110b09..00000000000
--- a/packages/js/settings-editor/changelog/update-settings-return-to-wc-home
+++ /dev/null
@@ -1,5 +0,0 @@
-Significance: patch
-Type: tweak
-Comment: update settings layout to redirect back to WooCommerce home page
-
-
diff --git a/packages/js/settings-editor/changelog/update-wp-68-packages b/packages/js/settings-editor/changelog/update-wp-68-packages
deleted file mode 100644
index ea739132b9a..00000000000
--- a/packages/js/settings-editor/changelog/update-wp-68-packages
+++ /dev/null
@@ -1,4 +0,0 @@
-Significance: major
-Type: update
-
-Update @wordpress/* dependencies to wp-6.8 minimum. Remove @types/wordpress__editor (native types at wp-6.8).
diff --git a/packages/js/settings-editor/composer.json b/packages/js/settings-editor/composer.json
deleted file mode 100644
index 6b45d19b087..00000000000
--- a/packages/js/settings-editor/composer.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-	"name": "woocommerce/settings-editor",
-	"description": "WooCommerce Admin settings page",
-	"type": "library",
-	"license": "GPL-2.0-or-later",
-	"minimum-stability": "dev",
-	"require-dev": {
-		"automattic/jetpack-changelogger": "3.3.0"
-	},
-	"config": {
-		"platform": {
-			"php": "7.4"
-		}
-	},
-	"extra": {
-		"changelogger": {
-			"formatter": {
-				"filename": "../../../tools/changelogger/class-package-formatter.php"
-			},
-			"types": {
-				"fix": "Fixes an existing bug",
-				"add": "Adds functionality",
-				"update": "Update existing functionality",
-				"dev": "Development related task",
-				"tweak": "A minor adjustment to the codebase",
-				"performance": "Address performance issues",
-				"enhancement": "Improve existing functionality"
-			},
-			"changelog": "CHANGELOG.md"
-		}
-	}
-}
diff --git a/packages/js/settings-editor/composer.lock b/packages/js/settings-editor/composer.lock
deleted file mode 100644
index ea28c3ef122..00000000000
--- a/packages/js/settings-editor/composer.lock
+++ /dev/null
@@ -1,1084 +0,0 @@
-{
-    "_readme": [
-        "This file locks the dependencies of your project to a known state",
-        "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
-        "This file is @generated automatically"
-    ],
-    "content-hash": "aad95c493e600ba08b737a004b36f868",
-    "packages": [],
-    "packages-dev": [
-        {
-            "name": "automattic/jetpack-changelogger",
-            "version": "v3.3.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/Automattic/jetpack-changelogger.git",
-                "reference": "8f63c829b8d1b0d7b1d5de93510d78523ed18959"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/Automattic/jetpack-changelogger/zipball/8f63c829b8d1b0d7b1d5de93510d78523ed18959",
-                "reference": "8f63c829b8d1b0d7b1d5de93510d78523ed18959",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=5.6",
-                "symfony/console": "^3.4 || ^5.2 || ^6.0",
-                "symfony/process": "^3.4 || ^5.2 || ^6.0",
-                "wikimedia/at-ease": "^1.2 || ^2.0"
-            },
-            "require-dev": {
-                "wikimedia/testing-access-wrapper": "^1.0 || ^2.0",
-                "yoast/phpunit-polyfills": "1.0.4"
-            },
-            "bin": [
-                "bin/changelogger"
-            ],
-            "type": "project",
-            "extra": {
-                "autotagger": true,
-                "mirror-repo": "Automattic/jetpack-changelogger",
-                "branch-alias": {
-                    "dev-trunk": "3.3.x-dev"
-                },
-                "changelogger": {
-                    "link-template": "https://github.com/Automattic/jetpack-changelogger/compare/${old}...${new}"
-                },
-                "version-constants": {
-                    "::VERSION": "src/Application.php"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Automattic\\Jetpack\\Changelog\\": "lib",
-                    "Automattic\\Jetpack\\Changelogger\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "GPL-2.0-or-later"
-            ],
-            "description": "Jetpack Changelogger tool. Allows for managing changelogs by dropping change files into a changelog directory with each PR.",
-            "support": {
-                "source": "https://github.com/Automattic/jetpack-changelogger/tree/v3.3.0"
-            },
-            "time": "2022-12-26T13:49:01+00:00"
-        },
-        {
-            "name": "psr/container",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/php-fig/container.git",
-                "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
-                "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.4.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Psr\\Container\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "PHP-FIG",
-                    "homepage": "https://www.php-fig.org/"
-                }
-            ],
-            "description": "Common Container Interface (PHP FIG PSR-11)",
-            "homepage": "https://github.com/php-fig/container",
-            "keywords": [
-                "PSR-11",
-                "container",
-                "container-interface",
-                "container-interop",
-                "psr"
-            ],
-            "support": {
-                "issues": "https://github.com/php-fig/container/issues",
-                "source": "https://github.com/php-fig/container/tree/1.1.2"
-            },
-            "time": "2021-11-05T16:50:12+00:00"
-        },
-        {
-            "name": "symfony/console",
-            "version": "5.4.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/console.git",
-                "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
-                "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/deprecation-contracts": "^2.1|^3",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php73": "^1.9",
-                "symfony/polyfill-php80": "^1.16",
-                "symfony/service-contracts": "^1.1|^2|^3",
-                "symfony/string": "^5.1|^6.0"
-            },
-            "conflict": {
-                "psr/log": ">=3",
-                "symfony/dependency-injection": "<4.4",
-                "symfony/dotenv": "<5.1",
-                "symfony/event-dispatcher": "<4.4",
-                "symfony/lock": "<4.4",
-                "symfony/process": "<4.4"
-            },
-            "provide": {
-                "psr/log-implementation": "1.0|2.0"
-            },
-            "require-dev": {
-                "psr/log": "^1|^2",
-                "symfony/config": "^4.4|^5.0|^6.0",
-                "symfony/dependency-injection": "^4.4|^5.0|^6.0",
-                "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
-                "symfony/lock": "^4.4|^5.0|^6.0",
-                "symfony/process": "^4.4|^5.0|^6.0",
-                "symfony/var-dumper": "^4.4|^5.0|^6.0"
-            },
-            "suggest": {
-                "psr/log": "For using the console logger",
-                "symfony/event-dispatcher": "",
-                "symfony/lock": "",
-                "symfony/process": ""
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Console\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Eases the creation of beautiful and testable command line interfaces",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "cli",
-                "command-line",
-                "console",
-                "terminal"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/console/tree/5.4"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-11-06T11:30:55+00:00"
-        },
-        {
-            "name": "symfony/deprecation-contracts",
-            "version": "2.5.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/deprecation-contracts.git",
-                "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918",
-                "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/contracts",
-                    "name": "symfony/contracts"
-                },
-                "branch-alias": {
-                    "dev-main": "2.5-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "function.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "A generic function and convention to trigger deprecation notices",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/deprecation-contracts/tree/2.5"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-09-25T14:11:13+00:00"
-        },
-        {
-            "name": "symfony/polyfill-ctype",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-ctype.git",
-                "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638",
-                "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2"
-            },
-            "provide": {
-                "ext-ctype": "*"
-            },
-            "suggest": {
-                "ext-ctype": "For best performance"
-            },
-            "default-branch": true,
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/polyfill",
-                    "name": "symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Ctype\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Gert de Pagter",
-                    "email": "BackEndTea@gmail.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for ctype functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "ctype",
-                "polyfill",
-                "portable"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/nicolas-grekas",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-09-09T11:45:10+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-grapheme",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
-                "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
-                "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "default-branch": true,
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/polyfill",
-                    "name": "symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's grapheme_* functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "grapheme",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/nicolas-grekas",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2025-06-27T09:58:17+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "3833d7255cc303546435cb650316bff708a1c75c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c",
-                "reference": "3833d7255cc303546435cb650316bff708a1c75c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "default-branch": true,
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/polyfill",
-                    "name": "symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/nicolas-grekas",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-09-09T11:45:10+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
-                "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
-                "shasum": ""
-            },
-            "require": {
-                "ext-iconv": "*",
-                "php": ">=7.2"
-            },
-            "provide": {
-                "ext-mbstring": "*"
-            },
-            "suggest": {
-                "ext-mbstring": "For best performance"
-            },
-            "default-branch": true,
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/polyfill",
-                    "name": "symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Mbstring extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "mbstring",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/nicolas-grekas",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-12-23T08:48:59+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php73",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php73.git",
-                "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
-                "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2"
-            },
-            "default-branch": true,
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/polyfill",
-                    "name": "symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php73\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php73/tree/v1.33.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/nicolas-grekas",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-09-09T11:45:10+00:00"
-        },
-        {
-            "name": "symfony/polyfill-php80",
-            "version": "1.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
-                "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2"
-            },
-            "default-branch": true,
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/polyfill",
-                    "name": "symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ion Bazan",
-                    "email": "ion.bazan@gmail.com"
-                },
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://github.com/nicolas-grekas",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2025-01-02T08:10:11+00:00"
-        },
-        {
-            "name": "symfony/process",
-            "version": "5.4.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/process.git",
-                "reference": "5d1662fb32ebc94f17ddb8d635454a776066733d"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/process/zipball/5d1662fb32ebc94f17ddb8d635454a776066733d",
-                "reference": "5d1662fb32ebc94f17ddb8d635454a776066733d",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-php80": "^1.16"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Component\\Process\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Executes commands in sub-processes",
-            "homepage": "https://symfony.com",
-            "support": {
-                "source": "https://github.com/symfony/process/tree/5.4"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-11-06T11:36:42+00:00"
-        },
-        {
-            "name": "symfony/service-contracts",
-            "version": "2.5.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/service-contracts.git",
-                "reference": "f37b419f7aea2e9abf10abd261832cace12e3300"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300",
-                "reference": "f37b419f7aea2e9abf10abd261832cace12e3300",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "psr/container": "^1.1",
-                "symfony/deprecation-contracts": "^2.1|^3"
-            },
-            "conflict": {
-                "ext-psr": "<1.1|>=2"
-            },
-            "suggest": {
-                "symfony/service-implementation": ""
-            },
-            "type": "library",
-            "extra": {
-                "thanks": {
-                    "url": "https://github.com/symfony/contracts",
-                    "name": "symfony/contracts"
-                },
-                "branch-alias": {
-                    "dev-main": "2.5-dev"
-                }
-            },
-            "autoload": {
-                "psr-4": {
-                    "Symfony\\Contracts\\Service\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Generic abstractions related to writing services",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "abstractions",
-                "contracts",
-                "decoupling",
-                "interfaces",
-                "interoperability",
-                "standards"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/service-contracts/tree/2.5"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-09-25T14:11:13+00:00"
-        },
-        {
-            "name": "symfony/string",
-            "version": "5.4.x-dev",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/string.git",
-                "reference": "136ca7d72f72b599f2631aca474a4f8e26719799"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/string/zipball/136ca7d72f72b599f2631aca474a4f8e26719799",
-                "reference": "136ca7d72f72b599f2631aca474a4f8e26719799",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.5",
-                "symfony/polyfill-ctype": "~1.8",
-                "symfony/polyfill-intl-grapheme": "~1.0",
-                "symfony/polyfill-intl-normalizer": "~1.0",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php80": "~1.15"
-            },
-            "conflict": {
-                "symfony/translation-contracts": ">=3.0"
-            },
-            "require-dev": {
-                "symfony/error-handler": "^4.4|^5.0|^6.0",
-                "symfony/http-client": "^4.4|^5.0|^6.0",
-                "symfony/translation-contracts": "^1.1|^2",
-                "symfony/var-exporter": "^4.4|^5.0|^6.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "Resources/functions.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Component\\String\\": ""
-                },
-                "exclude-from-classmap": [
-                    "/Tests/"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "grapheme",
-                "i18n",
-                "string",
-                "unicode",
-                "utf-8",
-                "utf8"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/string/tree/5.4"
-            },
-            "funding": [
-                {
-                    "url": "https://symfony.com/sponsor",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/fabpot",
-                    "type": "github"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2024-11-10T20:33:58+00:00"
-        },
-        {
-            "name": "wikimedia/at-ease",
-            "version": "v2.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/wikimedia/at-ease.git",
-                "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/wikimedia/at-ease/zipball/e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33",
-                "reference": "e8ebaa7bb7c8a8395481a05f6dc4deaceab11c33",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.2.9"
-            },
-            "require-dev": {
-                "mediawiki/mediawiki-codesniffer": "35.0.0",
-                "mediawiki/minus-x": "1.1.1",
-                "ockcyp/covers-validator": "1.3.3",
-                "php-parallel-lint/php-console-highlighter": "0.5.0",
-                "php-parallel-lint/php-parallel-lint": "1.2.0",
-                "phpunit/phpunit": "^8.5"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/Wikimedia/Functions.php"
-                ],
-                "psr-4": {
-                    "Wikimedia\\AtEase\\": "src/Wikimedia/AtEase/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "GPL-2.0-or-later"
-            ],
-            "authors": [
-                {
-                    "name": "Tim Starling",
-                    "email": "tstarling@wikimedia.org"
-                },
-                {
-                    "name": "MediaWiki developers",
-                    "email": "wikitech-l@lists.wikimedia.org"
-                }
-            ],
-            "description": "Safe replacement to @ for suppressing warnings.",
-            "homepage": "https://www.mediawiki.org/wiki/at-ease",
-            "support": {
-                "source": "https://github.com/wikimedia/at-ease/tree/v2.1.0"
-            },
-            "time": "2021-02-27T15:53:37+00:00"
-        }
-    ],
-    "aliases": [],
-    "minimum-stability": "dev",
-    "stability-flags": {},
-    "prefer-stable": false,
-    "prefer-lowest": false,
-    "platform": {},
-    "platform-dev": {},
-    "platform-overrides": {
-        "php": "7.4"
-    },
-    "plugin-api-version": "2.6.0"
-}
diff --git a/packages/js/settings-editor/jest.config.json b/packages/js/settings-editor/jest.config.json
deleted file mode 100644
index fa3347efcc7..00000000000
--- a/packages/js/settings-editor/jest.config.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-	"rootDir": "./",
-	"roots": [
-		"<rootDir>/src"
-	],
-	"preset": "./node_modules/@woocommerce/internal-js-tests/jest-preset.js"
-}
diff --git a/packages/js/settings-editor/package.json b/packages/js/settings-editor/package.json
deleted file mode 100644
index ba84e72ffe9..00000000000
--- a/packages/js/settings-editor/package.json
+++ /dev/null
@@ -1,250 +0,0 @@
-{
-	"name": "@woocommerce/settings-editor",
-	"version": "0.1.0",
-	"description": "React components for the WooCommerce admin settings editor.",
-	"author": "Automattic",
-	"license": "GPL-2.0-or-later",
-	"keywords": [
-		"wordpress",
-		"woocommerce"
-	],
-	"homepage": "https://github.com/woocommerce/woocommerce/tree/trunk/packages/js/settings-editor/README.md",
-	"repository": {
-		"type": "git",
-		"url": "https://github.com/woocommerce/woocommerce.git"
-	},
-	"bugs": {
-		"url": "https://github.com/woocommerce/woocommerce/issues"
-	},
-	"main": "build/index.js",
-	"module": "build-module/index.js",
-	"types": "build-types",
-	"react-native": "src/index",
-	"files": [
-		"build",
-		"build-module",
-		"build-style",
-		"build-types"
-	],
-	"sideEffects": [
-		"build-style/**",
-		"src/**/*.scss"
-	],
-	"publishConfig": {
-		"access": "public"
-	},
-	"dependencies": {
-		"@automattic/site-admin": "^0.0.1",
-		"@types/lodash": "^4.14.202",
-		"@types/prop-types": "^15.7.11",
-		"@types/wordpress__blocks": "catalog:wp-min",
-		"@woocommerce/product-editor": "workspace:*",
-		"@woocommerce/settings": "1.0.0",
-		"@woocommerce/tracks": "workspace:*",
-		"@wordpress/api-fetch": "catalog:wp-min",
-		"@wordpress/base-styles": "catalog:wp-min",
-		"@wordpress/components": "catalog:wp-min",
-		"@wordpress/compose": "catalog:wp-min",
-		"@wordpress/core-data": "catalog:wp-min",
-		"@wordpress/dataviews": "^4.11.1",
-		"@wordpress/date": "catalog:wp-min",
-		"@wordpress/deprecated": "catalog:wp-min",
-		"@wordpress/edit-post": "catalog:wp-min",
-		"@wordpress/editor": "catalog:wp-min",
-		"@wordpress/element": "catalog:wp-min",
-		"@wordpress/hooks": "catalog:wp-min",
-		"@wordpress/html-entities": "catalog:wp-min",
-		"@wordpress/i18n": "catalog:wp-min",
-		"@wordpress/icons": "10.11.0",
-		"@wordpress/interface": "catalog:wp-min",
-		"@wordpress/keyboard-shortcuts": "catalog:wp-min",
-		"@wordpress/keycodes": "catalog:wp-min",
-		"@wordpress/notices": "catalog:wp-min",
-		"@wordpress/media-utils": "catalog:wp-min",
-		"@woocommerce/navigation": "workspace:*",
-		"@woocommerce/components": "workspace:*",
-		"@wordpress/plugins": "catalog:wp-min",
-		"@wordpress/preferences": "catalog:wp-min",
-		"@wordpress/router": "1.11.0",
-		"@wordpress/url": "catalog:wp-min",
-		"clsx": "2.1.x",
-		"@woocommerce/sanitize": "workspace:*",
-		"prop-types": "^15.8.1",
-		"react-router-dom": "~6.3.0"
-	},
-	"devDependencies": {
-		"@babel/core": "7.25.7",
-		"@babel/runtime": "7.25.7",
-		"@testing-library/dom": "^10.4.x",
-		"@testing-library/jest-dom": "^6.x.x",
-		"@testing-library/react": "^16.x.x",
-		"@testing-library/user-event": "13.5.0",
-		"@types/jest": "29.5.x",
-		"@types/react": "18.3.x",
-		"@types/testing-library__jest-dom": "^5.14.9",
-		"@types/wordpress__block-editor": "catalog:wp-min",
-		"@types/wordpress__block-library": "catalog:wp-min",
-		"@types/wordpress__blocks": "catalog:wp-min",
-		"@types/wordpress__edit-post": "catalog:wp-min",
-		"@woocommerce/eslint-plugin": "workspace:*",
-		"@woocommerce/internal-js-tests": "workspace:*",
-		"@woocommerce/internal-style-build": "workspace:*",
-		"@woocommerce/internal-ts-config": "workspace:*",
-		"@wordpress/block-editor": "catalog:wp-min",
-		"@wordpress/browserslist-config": "next",
-		"copy-webpack-plugin": "13.0.x",
-		"css-loader": "6.11.x",
-		"eslint": "^8.55.0",
-		"jest": "29.5.x",
-		"jest-cli": "29.5.x",
-		"jest-environment-jsdom": "29.5.x",
-		"mini-css-extract-plugin": "2.9.x",
-		"postcss": "8.4.x",
-		"postcss-loader": "4.3.x",
-		"react": "18.3.x",
-		"react-dom": "18.3.x",
-		"rimraf": "5.0.5",
-		"sass-loader": "10.5.x",
-		"ts-jest": "29.1.x",
-		"typescript": "5.7.x",
-		"webpack": "5.97.x",
-		"webpack-cli": "5.1.x",
-		"webpack-remove-empty-scripts": "1.0.x",
-		"wireit": "0.14.12"
-	},
-	"scripts": {
-		"build": "pnpm --if-present --workspace-concurrency=Infinity --stream --filter=\"$npm_package_name...\" '/^build:project:.*$/'",
-		"build:project": "pnpm --if-present '/^build:project:.*$/'",
-		"build:project:bundle": "wireit",
-		"build:project:esm": "wireit",
-		"build:publish:project": "pnpm --if-present '/^build:publish:project:.*$/'",
-		"build:publish:project:cjs": "tsc --project tsconfig-cjs.json --noCheck",
-		"build:publish:project:deps": "pnpm build",
-		"changelog": "XDEBUG_MODE=off composer install --quiet && composer exec -- changelogger",
-		"lint": "pnpm --if-present '/^lint:lang:.*$/'",
-		"lint:fix": "pnpm --if-present '/^lint:fix:lang:.*$/'",
-		"lint:fix:lang:js": "eslint src --fix",
-		"lint:lang:js": "eslint src",
-		"lint:lang:types": "tsc --build --emitDeclarationOnly",
-		"prepack": "pnpm build:publish:project",
-		"test:js": "jest --config ./jest.config.json --passWithNoTests",
-		"update:php": "XDEBUG_MODE=off composer update --quiet",
-		"watch:build": "pnpm --if-present --workspace-concurrency=Infinity --filter=\"$npm_package_name...\" --parallel '/^watch:build:project:.*$/'",
-		"watch:build:project": "pnpm --if-present run '/^watch:build:project:.*$/'",
-		"watch:build:project:bundle": "wireit",
-		"watch:build:project:esm": "wireit"
-	},
-	"peerDependencies": {
-		"@types/react": "18.3.x",
-		"@wordpress/data": "^10.0.2",
-		"react": "18.3.x",
-		"react-dom": "18.3.x"
-	},
-	"config": {
-		"ci": {
-			"lint": {
-				"command": "lint",
-				"changes": "src/**/*.{js,jsx,ts,tsx}"
-			},
-			"tests": [
-				{
-					"name": "JavaScript",
-					"command": "test:js",
-					"changes": [
-						"webpack.config.js",
-						"jest.config.js",
-						"babel.config.js",
-						"tsconfig.json",
-						"src/**/*.{js,jsx,ts,tsx}",
-						"typings/**/*.ts"
-					],
-					"events": [
-						"pull_request",
-						"push"
-					]
-				}
-			]
-		}
-	},
-	"wireit": {
-		"build:project:bundle": {
-			"command": "webpack",
-			"clean": "if-file-deleted",
-			"env": {
-				"NODE_ENV": {
-					"external": true,
-					"default": "production"
-				}
-			},
-			"files": [
-				"webpack.config.js",
-				"src/**/*.scss"
-			],
-			"output": [
-				"build-style"
-			],
-			"dependencies": [
-				"dependencyOutputs"
-			]
-		},
-		"watch:build:project:bundle": {
-			"command": "webpack --watch",
-			"service": true
-		},
-		"build:project:esm": {
-			"command": "tsc --project tsconfig.json --noCheck",
-			"clean": "if-file-deleted",
-			"files": [
-				"tsconfig.json",
-				"src/**/*.{js,jsx,ts,tsx}",
-				"typings/**/*.ts"
-			],
-			"output": [
-				"build-module",
-				"build-types",
-				"tsconfig.tsbuildinfo"
-			],
-			"dependencies": [
-				"dependencyOutputs"
-			]
-		},
-		"watch:build:project:esm": {
-			"command": "tsc --project tsconfig.json --noCheck --watch",
-			"service": true
-		},
-		"dependencyOutputs": {
-			"allowUsuallyExcludedPaths": true,
-			"files": [
-				"package.json",
-				"../../../pnpm-lock.yaml",
-				"node_modules/@woocommerce/product-editor/build",
-				"node_modules/@woocommerce/product-editor/build-style",
-				"node_modules/@woocommerce/product-editor/build-types",
-				"node_modules/@woocommerce/tracks/build",
-				"node_modules/@woocommerce/tracks/build-types",
-				"node_modules/@woocommerce/navigation/build",
-				"node_modules/@woocommerce/navigation/build-types",
-				"node_modules/@woocommerce/components/build",
-				"node_modules/@woocommerce/components/build-style",
-				"node_modules/@woocommerce/components/build-types",
-				"node_modules/@woocommerce/sanitize/build",
-				"node_modules/@woocommerce/sanitize/build-style",
-				"node_modules/@woocommerce/sanitize/build-types",
-				"node_modules/@woocommerce/eslint-plugin/configs",
-				"node_modules/@woocommerce/eslint-plugin/rules",
-				"node_modules/@woocommerce/eslint-plugin/index.js",
-				"node_modules/@woocommerce/internal-js-tests/build",
-				"node_modules/@woocommerce/internal-js-tests/build-module",
-				"node_modules/@woocommerce/internal-js-tests/jest-preset.js",
-				"node_modules/@woocommerce/internal-style-build/index.js",
-				"node_modules/@woocommerce/internal-style-build/webpack-rtl-plugin.js",
-				"node_modules/@woocommerce/internal-style-build/style-asset-plugin.js",
-				"node_modules/@woocommerce/internal-style-build/abstracts",
-				"node_modules/@woocommerce/internal-ts-config/tsconfig.json",
-				"node_modules/@woocommerce/internal-ts-config/tsconfig-cjs.json",
-				"node_modules/@woocommerce/internal-ts-config/tsconfig-jest.json",
-				"node_modules/@woocommerce/internal-ts-config/types"
-			]
-		}
-	}
-}
diff --git a/packages/js/settings-editor/src/components/custom-view/index.tsx b/packages/js/settings-editor/src/components/custom-view/index.tsx
deleted file mode 100644
index 68d05fcad4e..00000000000
--- a/packages/js/settings-editor/src/components/custom-view/index.tsx
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * External dependencies
- */
-import {
-	Fragment,
-	createElement,
-	useMemo,
-	useEffect,
-} from '@wordpress/element';
-import { sanitizeHTML } from '@woocommerce/sanitize';
-
-/**
- * Sometimes extensions will place a <script /> tag in the custom output of a settings field,
- * this function will extract the script content and return it as a SettingsField and the clean HTML.
- *
- * @param {string} html - The HTML content to process.
- * @return {Object} An object containing the clean HTML and script settings.
- */
-const processCustomView = ( html: string ) => {
-	const parser = new DOMParser();
-	const doc = parser.parseFromString( html, 'text/html' );
-
-	const scripts = Array.from( doc.getElementsByTagName( 'script' ) ).filter(
-		( script ) => script.textContent?.trim()
-	);
-
-	// Remove scripts from the HTML.
-	scripts.forEach( ( script ) => {
-		script.remove();
-	} );
-
-	return {
-		cleanHTML: sanitizeHTML( doc.documentElement.outerHTML ),
-		scripts,
-	};
-};
-
-const SettingsScript = ( { script }: { script: HTMLScriptElement } ) => {
-	useEffect( () => {
-		try {
-			document.body.appendChild( script );
-			return () => {
-				document.body.removeChild( script );
-			};
-		} catch ( error ) {
-			// eslint-disable-next-line no-console
-			console.error( 'Failed to execute script:', error );
-		}
-	}, [ script ] );
-	return null;
-};
-
-export const CustomView = ( { html }: { html: string } ) => {
-	const { cleanHTML, scripts } = useMemo(
-		() => processCustomView( html ),
-		[ html ]
-	);
-
-	return (
-		<Fragment>
-			<div dangerouslySetInnerHTML={ { __html: cleanHTML } } />
-			{ scripts.map( ( script, index ) => (
-				<SettingsScript key={ index } script={ script } />
-			) ) }
-		</Fragment>
-	);
-};
diff --git a/packages/js/settings-editor/src/components/header/index.tsx b/packages/js/settings-editor/src/components/header/index.tsx
deleted file mode 100644
index ba1102cacd0..00000000000
--- a/packages/js/settings-editor/src/components/header/index.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-import clsx from 'clsx';
-import {
-	__experimentalHeading as Heading,
-	__experimentalHStack as HStack,
-	__experimentalVStack as VStack,
-} from '@wordpress/components';
-
-export const Header = ( {
-	pageTitle = '',
-	hasTabs = false,
-}: {
-	pageTitle?: string;
-	hasTabs?: boolean;
-} ) => {
-	return (
-		<VStack
-			className={ clsx(
-				'woocommerce-settings-header woocommerce-site-page-header',
-				{
-					'woocommerce-settings-header--has-tabs': hasTabs,
-				}
-			) }
-			as="header"
-			spacing={ 0 }
-		>
-			<HStack className="woocommerce-site-page-header__page-title">
-				<Heading
-					as="h2"
-					level={ 3 }
-					weight={ 500 }
-					className="woocommerce-site-page-header__title"
-					truncate
-				>
-					{ pageTitle }
-				</Heading>
-			</HStack>
-		</VStack>
-	);
-};
diff --git a/packages/js/settings-editor/src/components/index.ts b/packages/js/settings-editor/src/components/index.ts
deleted file mode 100644
index 442fc12ab26..00000000000
--- a/packages/js/settings-editor/src/components/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './section-tabs';
-export * from './header';
-export * from './sidebar';
diff --git a/packages/js/settings-editor/src/components/info-view/index.tsx b/packages/js/settings-editor/src/components/info-view/index.tsx
deleted file mode 100644
index 1a9459e8aa4..00000000000
--- a/packages/js/settings-editor/src/components/info-view/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, useEffect, useRef } from '@wordpress/element';
-import clsx from 'clsx';
-
-/**
- * Internal dependencies
- */
-import { sanitizeHTML } from '../../utils';
-
-type InfoViewProps = {
-	text: string;
-	className?: string;
-	css?: string;
-};
-
-export const InfoView = ( { text, className, css = '' }: InfoViewProps ) => {
-	const ref = useRef< HTMLDivElement >( null );
-
-	useEffect( () => {
-		if ( ref.current ) {
-			ref.current.style.cssText = css;
-		}
-	}, [ css ] );
-
-	return (
-		<div
-			ref={ ref }
-			className={ clsx( 'woocommerce-settings-info-view', className ) }
-			dangerouslySetInnerHTML={ {
-				__html: sanitizeHTML( text ?? '' ),
-			} }
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/components/section-tabs/index.tsx b/packages/js/settings-editor/src/components/section-tabs/index.tsx
deleted file mode 100644
index 471a6d4db6f..00000000000
--- a/packages/js/settings-editor/src/components/section-tabs/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, Fragment } from '@wordpress/element';
-import { TabPanel } from '@wordpress/components';
-import { addQueryArgs } from '@wordpress/url';
-import { useHistory, useLocation } from '@automattic/site-admin';
-
-export const SectionTabs = ( {
-	children,
-	tabs = [],
-	activeSection,
-}: {
-	children: React.ReactNode;
-	tabs?: Array< {
-		name: string;
-		title: string;
-	} >;
-	activeSection?: string;
-} ) => {
-	const { navigate } = useHistory();
-	const { query } = useLocation();
-	const { tab, section } = query || {};
-
-	if ( tabs.length <= 1 ) {
-		return <div>{ children }</div>;
-	}
-
-	const onSelect = ( tabName: string ) => {
-		if ( section === tabName ) {
-			return;
-		}
-
-		const queryArgs =
-			tabName === 'default'
-				? {
-						tab,
-				  }
-				: {
-						tab,
-						section: tabName,
-				  };
-
-		navigate( addQueryArgs( 'wc-settings', queryArgs ) );
-	};
-
-	return (
-		<TabPanel
-			className="woocommerce-settings-section-tabs"
-			tabs={ tabs }
-			onSelect={ onSelect }
-			initialTabName={ activeSection || tabs[ 0 ].name }
-		>
-			{ () => <>{ children }</> }
-		</TabPanel>
-	);
-};
diff --git a/packages/js/settings-editor/src/components/settings-group/index.tsx b/packages/js/settings-editor/src/components/settings-group/index.tsx
deleted file mode 100644
index bf6e3ecf501..00000000000
--- a/packages/js/settings-editor/src/components/settings-group/index.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * External dependencies
- */
-import { __experimentalHeading as Heading } from '@wordpress/components';
-import { createElement } from '@wordpress/element';
-import { DataForm } from '@wordpress/dataviews';
-/**
- * Internal dependencies
- */
-import { useSettingsForm } from '../../hooks/use-settings-form';
-import { sanitizeHTML } from '../../utils';
-
-export const SettingsGroup = ( {
-	title,
-	desc,
-	settings,
-}: GroupSettingsField ) => {
-	const { data, fields, form, updateField } = useSettingsForm( settings );
-
-	return (
-		<fieldset className="woocommerce-settings-group">
-			<div className="woocommerce-settings-group-title">
-				<Heading level={ 4 }>{ title }</Heading>
-				{ desc && (
-					<legend
-						dangerouslySetInnerHTML={ {
-							__html: sanitizeHTML( desc ),
-						} }
-					/>
-				) }
-			</div>
-			<div className="woocommerce-settings-group-content">
-				<DataForm
-					data={ data }
-					fields={ fields }
-					form={ form }
-					onChange={ updateField }
-				/>
-			</div>
-		</fieldset>
-	);
-};
diff --git a/packages/js/settings-editor/src/components/sidebar/index.tsx b/packages/js/settings-editor/src/components/sidebar/index.tsx
deleted file mode 100644
index b8ff2abc8ca..00000000000
--- a/packages/js/settings-editor/src/components/sidebar/index.tsx
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-import { addQueryArgs } from '@wordpress/url';
-import { __experimentalItemGroup as ItemGroup } from '@wordpress/components';
-import * as IconPackage from '@wordpress/icons';
-import {
-	SidebarNavigationScreen,
-	SidebarNavigationItem,
-} from '@automattic/site-admin';
-
-const { Icon, ...icons } = IconPackage;
-
-const SidebarNavigationScreenContent = ( {
-	activePage,
-	pages,
-}: {
-	activePage: string;
-	pages: SettingsPages;
-} ) => {
-	return (
-		<ItemGroup>
-			{ Object.keys( pages ).map( ( slug ) => {
-				const { label, icon } = pages[ slug ];
-				const isCurrentPage = activePage === slug;
-				const to = isCurrentPage
-					? undefined
-					: addQueryArgs( 'wc-settings', { tab: slug } );
-				return (
-					<SidebarNavigationItem
-						icon={
-							icons[ icon as keyof typeof icons ] ||
-							icons.settings
-						}
-						aria-current={ isCurrentPage }
-						uid={ slug }
-						key={ slug }
-						to={ to }
-					>
-						{ label }
-					</SidebarNavigationItem>
-				);
-			} ) }
-		</ItemGroup>
-	);
-};
-
-export const Sidebar = ( {
-	activePage,
-	pages,
-	pageTitle,
-}: {
-	activePage: string;
-	pages: SettingsPages;
-	pageTitle: string;
-} ) => {
-	return (
-		<SidebarNavigationScreen
-			title={ pageTitle }
-			isRoot
-			exitLink={ addQueryArgs( 'admin.php', { page: 'wc-admin' } ) }
-			content={
-				<SidebarNavigationScreenContent
-					activePage={ activePage }
-					pages={ pages }
-				/>
-			}
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/data.tsx b/packages/js/settings-editor/src/data.tsx
deleted file mode 100644
index 84a671586bb..00000000000
--- a/packages/js/settings-editor/src/data.tsx
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, createContext, useState } from '@wordpress/element';
-
-const initialData = window.wcSettings?.admin?.settingsData;
-const initialSettingsScripts = window.wcSettings?.admin?.settingsScripts;
-
-const SettingsDataContext = createContext< {
-	settingsData: SettingsData;
-	setSettingsData: ( settingsData: SettingsData ) => void;
-	settingsScripts: Record< string, string[] >;
-	setSettingsScripts: ( settingsScripts: Record< string, string[] > ) => void;
-} >( {
-	settingsData: initialData,
-	setSettingsData: () => {},
-	settingsScripts: {},
-	setSettingsScripts: () => {},
-} );
-
-const SettingsDataProvider = ( {
-	children,
-}: {
-	children: React.ReactNode;
-} ) => {
-	const [ settingsData, setSettingsData ] = useState( initialData );
-	const [ settingsScripts, setSettingsScripts ] = useState(
-		initialSettingsScripts
-	);
-
-	return (
-		<SettingsDataContext.Provider
-			value={ {
-				settingsData,
-				setSettingsData,
-				settingsScripts,
-				setSettingsScripts,
-			} }
-		>
-			{ children }
-		</SettingsDataContext.Provider>
-	);
-};
-
-export { SettingsDataContext, SettingsDataProvider };
diff --git a/packages/js/settings-editor/src/form-controls/checkbox.tsx b/packages/js/settings-editor/src/form-controls/checkbox.tsx
deleted file mode 100644
index ee7ecc5da02..00000000000
--- a/packages/js/settings-editor/src/form-controls/checkbox.tsx
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, Fragment } from '@wordpress/element';
-import { CheckboxControl } from '@wordpress/components';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-
-type CheckboxProps = DataFormControlProps< DataFormItem > & {
-	help?: React.ReactNode;
-};
-
-export const Checkbox = ( { field, onChange, data, help }: CheckboxProps ) => {
-	const { id, getValue } = field;
-
-	// DataForm will automatically use the id as the label if no label is provided so we conditionally set the label to undefined if it matches the id to avoid displaying it.
-	// We should contribute upstream to allow label to be optional.
-	const label = field.label === id ? undefined : field.label;
-	const value = getValue( { item: data } );
-	const hiddenValue = value === 'yes' ? '1' : '0';
-
-	return (
-		<>
-			<CheckboxControl
-				__nextHasNoMarginBottom={ true }
-				label={ label }
-				help={ help }
-				checked={ value === 'yes' }
-				onChange={ ( checked ) => {
-					onChange( {
-						[ id ]: checked ? 'yes' : 'no',
-					} );
-				} }
-			/>
-			<input type="hidden" name={ id } value={ hiddenValue } />
-		</>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/color.tsx b/packages/js/settings-editor/src/form-controls/color.tsx
deleted file mode 100644
index 3ef573e4321..00000000000
--- a/packages/js/settings-editor/src/form-controls/color.tsx
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, Fragment } from '@wordpress/element';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-import { ColorPicker } from '@wordpress/components';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-
-type ColorProps = DataFormControlProps< DataFormItem >;
-
-export const Color = ( { field, onChange, data }: ColorProps ) => {
-	const { id, getValue, label } = field;
-	const value = getValue( { item: data } );
-
-	return (
-		<Fragment>
-			{ /* eslint-disable-next-line jsx-a11y/label-has-associated-control */ }
-			<label
-				className="woocommerce-settings-color-picker__label"
-				htmlFor={ id }
-				dangerouslySetInnerHTML={ { __html: label } }
-			/>
-			<ColorPicker
-				className="woocommerce-settings-color-picker"
-				onChange={ ( newValue ) => {
-					onChange( {
-						[ id ]: newValue,
-					} );
-				} }
-				color={ value }
-			/>
-			<input type="hidden" name={ id } value={ value } />
-		</Fragment>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/input.tsx b/packages/js/settings-editor/src/form-controls/input.tsx
deleted file mode 100644
index 7f896221be1..00000000000
--- a/packages/js/settings-editor/src/form-controls/input.tsx
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-import { __experimentalInputControl as InputControl } from '@wordpress/components';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-
-type InputProps = DataFormControlProps< DataFormItem > & {
-	type: React.HTMLInputTypeAttribute;
-	help?: React.ReactNode;
-};
-
-export const Input = ( { field, onChange, data, help, type }: InputProps ) => {
-	const { id, getValue, placeholder } = field;
-	const value = getValue( { item: data } );
-
-	// DataForm will automatically use the id as the label if no label is provided so we conditionally set the label to undefined if it matches the id to avoid displaying it.
-	// We should contribute upstream to allow label to be optional.
-	const label = field.label === id ? undefined : field.label;
-
-	return (
-		<InputControl
-			id={ id }
-			label={ label }
-			type={ type }
-			value={ value }
-			help={ help }
-			placeholder={ placeholder }
-			onChange={ ( newValue ) => {
-				onChange( {
-					[ id ]: newValue,
-				} );
-			} }
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/radio.tsx b/packages/js/settings-editor/src/form-controls/radio.tsx
deleted file mode 100644
index 35861e6f6a3..00000000000
--- a/packages/js/settings-editor/src/form-controls/radio.tsx
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, Fragment } from '@wordpress/element';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-import { RadioControl } from '@wordpress/components';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-
-type RadioProps = DataFormControlProps< DataFormItem > & {
-	help?: React.ReactNode;
-};
-
-export const Radio = ( { field, onChange, data, help }: RadioProps ) => {
-	const { id, getValue, elements } = field;
-	const value = getValue( { item: data } );
-	const label = field.label === id ? undefined : field.label;
-
-	return (
-		<>
-			<RadioControl
-				help={ help }
-				label={ label }
-				onChange={ ( newValue ) => {
-					onChange( {
-						[ id ]: newValue,
-					} );
-				} }
-				options={ elements }
-				selected={ value }
-			/>
-			<input type="hidden" name={ id } value={ value } />
-		</>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/select.tsx b/packages/js/settings-editor/src/form-controls/select.tsx
deleted file mode 100644
index 8471522602c..00000000000
--- a/packages/js/settings-editor/src/form-controls/select.tsx
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * External dependencies
- */
-import { SelectControl } from '@wordpress/components';
-import { createElement, useCallback } from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-
-type SelectProps = DataFormControlProps< DataFormItem > & {
-	help?: React.ReactNode;
-};
-
-export const Select = ( {
-	field,
-	onChange,
-	data,
-	help,
-	hideLabelFromVision,
-}: SelectProps ) => {
-	const { id } = field;
-
-	// DataForm will automatically use the id as the label if no label is provided so we conditionally set the label to undefined if it matches the id to avoid displaying it.
-	// We should contribute upstream to allow label to be optional.
-	const label = field.label === id ? undefined : field.label;
-
-	const value = field.getValue( { item: data } ) ?? '';
-	const onChangeControl = useCallback(
-		( newValue: string ) =>
-			onChange( {
-				[ id ]: newValue,
-			} ),
-		[ id, onChange ]
-	);
-
-	const elements = [
-		/*
-		 * Value can be undefined when:
-		 *
-		 * - the field is not required
-		 * - in bulk editing
-		 *
-		 */
-		{ label: __( 'Select item', 'woocommerce' ), value: '' },
-		...( field?.elements ?? [] ),
-	];
-
-	return (
-		<SelectControl
-			id={ id }
-			label={ label }
-			value={ value }
-			help={ help }
-			options={ elements }
-			onChange={ onChangeControl }
-			__next40pxDefaultSize
-			__nextHasNoMarginBottom
-			hideLabelFromVision={ hideLabelFromVision }
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/hooks.ts b/packages/js/settings-editor/src/form-controls/single-select-page-with-search/hooks.ts
deleted file mode 100644
index 536d70fff75..00000000000
--- a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/hooks.ts
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * External dependencies
- */
-import { useMemo } from '@wordpress/element';
-import { store as coreDataStore, Page } from '@wordpress/core-data';
-import { useSelect } from '@wordpress/data';
-
-/**
- * Internal dependencies
- */
-import { formatPageToItem } from './utils';
-
-/**
- * The useItems hook is used to get all page items.
- *
- * @param exclude - The items to exclude from the search results.
- * @return The page items and a boolean indicating if the items are loading.
- */
-export const useItems = ( exclude?: string[] ) => {
-	return useSelect(
-		( select ) => {
-			const query = {
-				status: [ 'publish', 'private', 'draft' ],
-				...( exclude ? { exclude } : {} ),
-			};
-
-			const args: [ 'postType', 'page', { status: string[] } ] = [
-				'postType',
-				'page',
-				query,
-			];
-
-			const allPages =
-				( select( coreDataStore ).getEntityRecords(
-					...args
-				) as Page[] ) || null;
-
-			return {
-				items: allPages?.map( formatPageToItem ) || [],
-				isFetching: ! select( coreDataStore ).hasFinishedResolution(
-					'getEntityRecords',
-					args
-				),
-			};
-		},
-		[ exclude ]
-	);
-};
-
-/**
- * The useSelectedItem hook is used to get the selected page item.
- *
- * @param value - The value of the selected page item.
- * @return The selected page item and a boolean indicating if the page is loading.
- */
-export const useSelectedItem = ( value: string ) => {
-	const { selectedPage, isLoading } = useSelect(
-		( select ) => {
-			if ( ! value ) {
-				return { selectedPage: null, isLoading: false };
-			}
-
-			const { getEntityRecord, hasFinishedResolution } =
-				select( coreDataStore );
-
-			const args: [ 'postType', 'page', string ] = [
-				'postType',
-				'page',
-				value,
-			];
-
-			return {
-				selectedPage: getEntityRecord< Page >( ...args ),
-				isLoading: ! hasFinishedResolution( 'getEntityRecord', args ),
-			};
-		},
-		[ value ]
-	);
-
-	const selectedItem = useMemo(
-		() => ( selectedPage ? formatPageToItem( selectedPage ) : null ),
-		[ selectedPage ]
-	);
-
-	return {
-		selectedItem,
-		isLoading,
-	};
-};
diff --git a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/index.tsx b/packages/js/settings-editor/src/form-controls/single-select-page-with-search/index.tsx
deleted file mode 100644
index 613721f5ada..00000000000
--- a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/index.tsx
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * External dependencies
- */
-import {
-	createElement,
-	Fragment,
-	useCallback,
-	useState,
-} from '@wordpress/element';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-import {
-	__experimentalSelectControl as SelectControl,
-	__experimentalSelectControlMenu as Menu,
-	__experimentalSelectControlMenuItem as MenuItem,
-} from '@woocommerce/components';
-import { Spinner, BaseControl, Icon } from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
-import { search } from '@wordpress/icons';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../../types';
-import type { PageItem } from './types';
-import { sanitizeHTML } from '../../utils';
-import { Suffix } from './suffix';
-import { useItems, useSelectedItem } from './hooks';
-
-type SingleSelectPageWithSearchEditProps =
-	DataFormControlProps< DataFormItem > & {
-		/**
-		 * The help text to display below the control.
-		 */
-		help?: React.ReactNode;
-		/**
-		 * The class name to apply to the control.
-		 */
-		className?: string;
-		/**
-		 * The pages to exclude from the search results.
-		 */
-		exclude?: string[];
-	};
-
-export const SingleSelectPageWithSearch = ( {
-	data,
-	field,
-	onChange,
-	hideLabelFromVision,
-	help,
-	className,
-	exclude,
-}: SingleSelectPageWithSearchEditProps ) => {
-	const value = field.getValue( { item: data } ) ?? '';
-	const { id } = field;
-
-	const { selectedItem, isLoading } = useSelectedItem( value );
-	const [ isFocused, setIsFocused ] = useState( false );
-
-	const { items: allItems, isFetching } = useItems( exclude );
-
-	const handleSelect = useCallback(
-		( item: PageItem | null ) => {
-			onChange( { [ id ]: item?.value || '' } );
-			setIsFocused( false );
-		},
-		[ onChange, id ]
-	);
-
-	const label =
-		field.label === id ? undefined : (
-			<div
-				dangerouslySetInnerHTML={ {
-					__html: sanitizeHTML( field.label ),
-				} }
-			/>
-		);
-
-	return (
-		<BaseControl
-			__nextHasNoMarginBottom
-			id={ id }
-			help={ help }
-			label={ label }
-			hideLabelFromVision={ hideLabelFromVision }
-		>
-			<input type="hidden" id={ id } value={ value } />
-			<SelectControl< PageItem >
-				__experimentalOpenMenuOnFocus
-				className={ className }
-				placeholder={
-					isLoading
-						? __( 'Loading…', 'woocommerce' )
-						: __( 'Search for a page…', 'woocommerce' )
-				}
-				label=""
-				// The select control input does not require an id since its value represents the label (which displays the page title to the user). A hidden input with the actual id is provided above, ensuring that the value is saved correctly.
-				inputProps={ {
-					id: undefined,
-					'aria-readonly': true,
-					'aria-label': __(
-						'Use up and down arrow keys to navigate',
-						'woocommerce'
-					),
-				} }
-				items={ allItems }
-				selected={ isFocused ? null : selectedItem }
-				onSelect={ handleSelect }
-				onFocus={ () => setIsFocused( true ) }
-				onBlur={ () => setIsFocused( false ) }
-				onRemove={ () => handleSelect( null ) }
-				suffix={
-					<Suffix
-						value={ value }
-						isLoading={ isLoading || isFetching }
-						isFocused={ isFocused }
-						onRemove={ () => handleSelect( null ) }
-					/>
-				}
-			>
-				{ ( {
-					items,
-					isOpen,
-					highlightedIndex,
-					getItemProps,
-					getMenuProps,
-				} ) => (
-					<Fragment>
-						<Icon icon={ search } size={ 20 } />
-						<Menu isOpen={ isOpen } getMenuProps={ getMenuProps }>
-							{ isFetching ? (
-								<div className="woocommerce-single-select-page-with-search__menu-loading">
-									<Spinner />
-								</div>
-							) : (
-								items.map( ( item, index: number ) => (
-									<MenuItem
-										key={ `${ item.value }${ index }` }
-										index={ index }
-										isActive={ highlightedIndex === index }
-										item={ item }
-										getItemProps={ getItemProps }
-									>
-										{ item.label }
-									</MenuItem>
-								) )
-							) }
-						</Menu>
-					</Fragment>
-				) }
-			</SelectControl>
-		</BaseControl>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/suffix.tsx b/packages/js/settings-editor/src/form-controls/single-select-page-with-search/suffix.tsx
deleted file mode 100644
index b967495e075..00000000000
--- a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/suffix.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-import { Spinner, Button } from '@wordpress/components';
-import { close } from '@wordpress/icons';
-
-type SuffixProps = {
-	value: string;
-	isLoading: boolean;
-	isFocused: boolean;
-	onRemove: () => void;
-};
-
-export const Suffix = ( {
-	isLoading,
-	isFocused,
-	value,
-	onRemove,
-}: SuffixProps ) => {
-	if ( isLoading ) {
-		return <Spinner />;
-	}
-
-	if ( ! isFocused && value ) {
-		return (
-			<Button
-				icon={ close }
-				onClick={ onRemove }
-				iconSize={ 16 }
-				size="compact"
-			/>
-		);
-	}
-
-	return null;
-};
diff --git a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/types.ts b/packages/js/settings-editor/src/form-controls/single-select-page-with-search/types.ts
deleted file mode 100644
index 51c05f04c36..00000000000
--- a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * The type for the page item for the select control.
- */
-export type PageItem = {
-	label: string;
-	value: string;
-};
diff --git a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/utils.ts b/packages/js/settings-editor/src/form-controls/single-select-page-with-search/utils.ts
deleted file mode 100644
index 2f2a937fc3b..00000000000
--- a/packages/js/settings-editor/src/form-controls/single-select-page-with-search/utils.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- * External dependencies
- */
-import { Page } from '@wordpress/core-data';
-import { __, sprintf } from '@wordpress/i18n';
-
-/**
- * Internal dependencies
- */
-import { PageItem } from './types';
-
-/**
- * The formatPageToItem function is used to format a page to an item.
- *
- * @param page - The page to format.
- * @return The formatted item.
- */
-export const formatPageToItem = ( page: Page ): PageItem => ( {
-	label: sprintf(
-		/* translators: 1: page name 2: page ID */
-		__( '%1$s (ID: %2$s)', 'woocommerce' ),
-		page.title.rendered,
-		page.id
-	),
-	value: page.id.toString(),
-} );
diff --git a/packages/js/settings-editor/src/form-controls/single-select-page.tsx b/packages/js/settings-editor/src/form-controls/single-select-page.tsx
deleted file mode 100644
index 8563fbf63b9..00000000000
--- a/packages/js/settings-editor/src/form-controls/single-select-page.tsx
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * External dependencies
- */
-import { Button, SelectControl, Spinner } from '@wordpress/components';
-import { createElement, useCallback, useMemo } from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import { useSelect } from '@wordpress/data';
-import { store as coreDataStore, Page } from '@wordpress/core-data';
-import { close } from '@wordpress/icons';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-import { sanitizeHTML } from '../utils';
-
-// https://github.com/woocommerce/woocommerce/blob/83a090f70d1f7b07325d9df9bd03fe2f753d4fd4/plugins/woocommerce/includes/admin/class-wc-admin-settings.php#L626-L636
-const PAGE_QUERY_ARGS = {
-	orderby: 'menu_order',
-	order: 'asc',
-	status: [ 'publish', 'private', 'draft' ],
-	per_page: -1,
-	_fields: [ 'id', 'title' ],
-};
-
-const usePages = () => {
-	return useSelect( ( select ) => {
-		const { getEntityRecords, hasFinishedResolution } =
-			select( coreDataStore );
-
-		const args: [ string, string, typeof PAGE_QUERY_ARGS ] = [
-			'postType',
-			'page',
-			PAGE_QUERY_ARGS,
-		];
-
-		return {
-			pages: getEntityRecords( ...args ) as Page[],
-			isLoading: ! hasFinishedResolution( 'getEntityRecords', args ),
-		};
-	}, [] );
-};
-
-type SingleSelectPageEditProps = DataFormControlProps< DataFormItem > & {
-	help?: React.ReactNode;
-	className?: string;
-};
-
-export const SingleSelectPage = ( {
-	data,
-	field,
-	onChange,
-	hideLabelFromVision,
-	help,
-	className,
-}: SingleSelectPageEditProps ) => {
-	const { pages, isLoading } = usePages();
-	const { id } = field;
-
-	// DataForm will automatically use the id as the label if no label is provided so we conditionally set the label to undefined if it matches the id to avoid displaying it.
-	// We should contribute upstream to allow label to be optional.
-	const label =
-		field.label === id ? undefined : (
-			<div
-				dangerouslySetInnerHTML={ {
-					__html: sanitizeHTML( field.label ),
-				} }
-			/>
-		);
-
-	const value = field.getValue( { item: data } ) ?? '';
-
-	const onChangeControl = useCallback(
-		( newValue: string ) =>
-			onChange( {
-				[ id ]: newValue,
-			} ),
-		[ id, onChange ]
-	);
-
-	const options = useMemo(
-		() => [
-			{
-				label: isLoading
-					? __( 'Loading…', 'woocommerce' )
-					: __( 'Select a page…', 'woocommerce' ),
-				value: '',
-				disabled: true,
-			},
-			...( pages ?? [] ).map( ( page ) => ( {
-				value: page.id.toString(),
-				label: page.title.rendered,
-			} ) ),
-		],
-		[ isLoading, pages ]
-	);
-
-	const getSuffix = () => {
-		if ( isLoading ) {
-			return <Spinner />;
-		}
-
-		if ( value ) {
-			return (
-				<Button
-					icon={ close }
-					iconSize={ 16 }
-					size="compact"
-					onClick={ () => onChangeControl( '' ) }
-				/>
-			);
-		}
-
-		return null;
-	};
-
-	return (
-		<SelectControl
-			className={ className }
-			suffix={ getSuffix() }
-			id={ id }
-			label={ label }
-			value={ value }
-			help={ help }
-			options={ options }
-			onChange={ onChangeControl }
-			__next40pxDefaultSize
-			__nextHasNoMarginBottom
-			hideLabelFromVision={ hideLabelFromVision }
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/form-controls/style.scss b/packages/js/settings-editor/src/form-controls/style.scss
deleted file mode 100644
index b26a0fae1ab..00000000000
--- a/packages/js/settings-editor/src/form-controls/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.woocommerce-single-select-page-with-search__menu-loading {
-	display: flex;
-	align-items: center;
-	justify-content: center;
-	padding: $grid-unit;
-	height: $grid-unit-60 + 2px;
-}
-
-.woocommerce-experimental-select-control__popover-menu-container,
-.woocommerce-experimental-select-control__menu-item {
-	cursor: pointer;
-}
\ No newline at end of file
diff --git a/packages/js/settings-editor/src/form-controls/textarea.tsx b/packages/js/settings-editor/src/form-controls/textarea.tsx
deleted file mode 100644
index 6b398dcf31e..00000000000
--- a/packages/js/settings-editor/src/form-controls/textarea.tsx
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-import type { DataFormControlProps } from '@wordpress/dataviews';
-import { TextareaControl } from '@wordpress/components';
-
-/**
- * Internal dependencies
- */
-import type { DataFormItem } from '../types';
-
-type TextareaProps = DataFormControlProps< DataFormItem > & {
-	help?: React.ReactNode;
-};
-
-export const Textarea = ( { field, onChange, data, help }: TextareaProps ) => {
-	const { id, getValue, placeholder } = field;
-	const label = field.label === id ? undefined : field.label;
-	const value = getValue( { item: data } );
-
-	return (
-		<TextareaControl
-			__nextHasNoMarginBottom
-			help={ help }
-			label={ label }
-			placeholder={ placeholder }
-			onChange={ ( newValue ) => {
-				onChange( {
-					[ id ]: newValue,
-				} );
-			} }
-			value={ value }
-			id={ id }
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/hooks/test/use-settings-form.test.tsx b/packages/js/settings-editor/src/hooks/test/use-settings-form.test.tsx
deleted file mode 100644
index 2c664a60c9f..00000000000
--- a/packages/js/settings-editor/src/hooks/test/use-settings-form.test.tsx
+++ /dev/null
@@ -1,143 +0,0 @@
-/**
- * External dependencies
- */
-import { renderHook, act } from '@testing-library/react';
-
-/**
- * Internal dependencies
- */
-import { useSettingsForm } from '../use-settings-form';
-
-describe( 'useSettingsForm', () => {
-	const mockSettings: SettingsField[] = [
-		{
-			id: 'text1',
-			type: 'text',
-			title: 'Text Input',
-			desc: 'Text Description',
-			value: 'hello',
-		},
-		{
-			id: 'group1',
-			type: 'checkboxgroup',
-			title: 'Checkbox Group',
-			settings: [
-				{
-					id: 'check1',
-					type: 'checkbox',
-					value: 'yes',
-					desc: 'Check 1',
-				},
-				{
-					id: 'check2',
-					type: 'checkbox',
-					value: 'no',
-					desc: 'Check 2',
-				},
-			],
-		},
-	];
-
-	it( 'should initialize with correct data', () => {
-		const { result } = renderHook( () => useSettingsForm( mockSettings ) );
-
-		// Check initial data
-		expect( result.current.data ).toEqual( {
-			text1: 'hello',
-			check1: 'yes',
-			check2: 'no',
-		} );
-
-		// Check fields
-		expect( result.current.fields ).toHaveLength( 3 ); // text1 + 2 checkboxes
-		expect( result.current.fields[ 0 ] ).toEqual( {
-			id: 'text1',
-			type: 'text',
-			label: 'Text Description',
-			Edit: expect.any( Function ),
-		} );
-
-		// Check form structure
-		expect( result.current.form.type ).toBe( 'regular' );
-		expect( result.current.form.labelPosition ).toBe( 'top' );
-		expect( result.current.form.fields ).toHaveLength( 2 ); // text1 + group1
-	} );
-
-	it( 'should update field values', () => {
-		const { result } = renderHook( () => useSettingsForm( mockSettings ) );
-
-		act( () => {
-			result.current.updateField( { text1: 'updated' } );
-		} );
-
-		expect( result.current.data.text1 ).toBe( 'updated' );
-		expect( result.current.isDirty ).toBe( true );
-	} );
-
-	it( 'should reset form to initial values', () => {
-		const { result } = renderHook( () => useSettingsForm( mockSettings ) );
-
-		// Make changes
-		act( () => {
-			result.current.updateField( { text1: 'changed' } );
-			result.current.updateField( { check1: 'no' } );
-		} );
-
-		// Verify changes
-		expect( result.current.data.text1 ).toBe( 'changed' );
-		expect( result.current.data.check1 ).toBe( 'no' );
-		expect( result.current.isDirty ).toBe( true );
-
-		// Reset form
-		act( () => {
-			result.current.resetForm();
-		} );
-
-		// Verify reset
-		expect( result.current.data.text1 ).toBe( 'hello' );
-		expect( result.current.data.check1 ).toBe( 'yes' );
-		expect( result.current.isDirty ).toBe( false );
-	} );
-
-	it( 'should track dirty state correctly', () => {
-		const { result } = renderHook( () => useSettingsForm( mockSettings ) );
-
-		// Initially clean
-		expect( result.current.isDirty ).toBe( false );
-
-		// Make a change
-		act( () => {
-			result.current.updateField( { text1: 'changed' } );
-		} );
-
-		// Should be dirty
-		expect( result.current.isDirty ).toBe( true );
-
-		// Change back to original value
-		act( () => {
-			result.current.updateField( { text1: 'hello' } );
-		} );
-
-		// Should be clean again
-		expect( result.current.isDirty ).toBe( false );
-	} );
-
-	it( 'should handle multiple field updates', () => {
-		const { result } = renderHook( () => useSettingsForm( mockSettings ) );
-
-		act( () => {
-			result.current.updateField( {
-				text1: 'changed',
-				check1: 'no',
-				check2: 'yes',
-			} );
-		} );
-
-		expect( result.current.data ).toEqual( {
-			text1: 'changed',
-			check1: 'no',
-			check2: 'yes',
-		} );
-		expect( result.current.isDirty ).toBe( true );
-	} );
-} );
diff --git a/packages/js/settings-editor/src/hooks/use-settings-form.ts b/packages/js/settings-editor/src/hooks/use-settings-form.ts
deleted file mode 100644
index 6d9f39fd934..00000000000
--- a/packages/js/settings-editor/src/hooks/use-settings-form.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * External dependencies
- */
-import { useMemo, useCallback, useState } from '@wordpress/element';
-import type { Field, FormField } from '@wordpress/dataviews';
-
-/**
- * Internal dependencies
- */
-import {
-	transformToInitialData,
-	transformToField,
-	transformToFormField,
-} from './utils/transformers';
-import type { DataFormItem } from '../types';
-
-/**
- * Hook for managing settings form state and transformations.
- *
- * @param settings Array of settings to transform into form fields
- * @return Object containing form fields, layout, data and utility functions
- */
-export function useSettingsForm( settings: SettingsField[] ) {
-	// Memoize initial data to avoid recalculation
-	const initialData = useMemo( () => {
-		return settings.reduce< DataFormItem >(
-			( acc, setting ) => transformToInitialData( setting, acc ),
-			{}
-		);
-	}, [ settings ] );
-
-	// Track current form data
-	const [ formData, setFormData ] = useState< DataFormItem >( initialData );
-
-	// Memoize field configurations
-	const fields = useMemo( () => {
-		return settings.reduce< Field< DataFormItem >[] >( ( acc, setting ) => {
-			const field = transformToField( setting );
-			return Array.isArray( field )
-				? [ ...acc, ...field ]
-				: [ ...acc, field ];
-		}, [] );
-	}, [ settings ] );
-
-	// Memoize form layout
-	const form = useMemo(
-		() => ( {
-			type: 'regular' as const,
-			labelPosition: 'top' as const,
-			fields: settings
-				.map( transformToFormField )
-				.filter(
-					( field ): field is FormField | string => field !== false
-				),
-		} ),
-		[ settings ]
-	);
-
-	// Update a single field value
-	const updateField = useCallback( ( changedField: DataFormItem ) => {
-		setFormData( ( prevData: DataFormItem ) => ( {
-			...prevData,
-			...changedField,
-		} ) );
-	}, [] );
-
-	// Reset form to initial values
-	const resetForm = useCallback( () => {
-		setFormData( initialData );
-	}, [ initialData ] );
-
-	// Check if form has unsaved changes
-	const isDirty = useMemo( () => {
-		return Object.keys( formData ).some(
-			( key ) => formData[ key ] !== initialData[ key ]
-		);
-	}, [ formData, initialData ] );
-
-	return {
-		// Dataforms props
-		fields,
-		form,
-		data: formData,
-
-		// Utility methods
-		updateField,
-		resetForm,
-		isDirty,
-	};
-}
diff --git a/packages/js/settings-editor/src/hooks/utils/test/transformers.test.tsx b/packages/js/settings-editor/src/hooks/utils/test/transformers.test.tsx
deleted file mode 100644
index dd457eaac88..00000000000
--- a/packages/js/settings-editor/src/hooks/utils/test/transformers.test.tsx
+++ /dev/null
@@ -1,373 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import {
-	transformToInitialData,
-	transformToField,
-	transformToFormField,
-	getLabelAndHelp,
-} from '../transformers';
-
-describe( 'dataforms-transformers', () => {
-	describe( 'transformToInitialData', () => {
-		it( 'should transform checkbox group settings correctly', () => {
-			const settings: CheckboxGroupSettingsField = {
-				id: 'group1',
-				type: 'checkboxgroup',
-				title: 'Group 1',
-				settings: [
-					{ id: 'setting1', type: 'checkbox', value: 'yes' },
-					{ id: 'setting2', type: 'checkbox', value: 'no' },
-					{ id: 'setting3', type: 'checkbox', value: false },
-				],
-			};
-
-			const result = transformToInitialData( settings, {} );
-			expect( result ).toEqual( {
-				setting1: 'yes',
-				setting2: 'no',
-				setting3: 'no',
-			} );
-		} );
-
-		it( 'should handle regular settings correctly', () => {
-			const settings: SettingsField[] = [
-				{ id: 'text1', type: 'text', value: 'hello' },
-				{ id: 'select1', type: 'select', value: 'option1' },
-				{ id: 'empty1', type: 'text', value: '' },
-			];
-
-			const result = settings.reduce(
-				( acc, setting ) => transformToInitialData( setting, acc ),
-				{}
-			);
-			expect( result ).toEqual( {
-				text1: 'hello',
-				select1: 'option1',
-				empty1: '',
-			} );
-		} );
-	} );
-
-	describe( 'transformToField', () => {
-		it( 'should transform text input fields correctly', () => {
-			const setting: SettingsField = {
-				id: 'text1',
-				type: 'text',
-				desc: 'Text Input',
-				value: 'hello',
-			};
-
-			const result = transformToField( setting );
-			expect( result ).toEqual( {
-				id: 'text1',
-				type: 'text',
-				label: 'Text Input',
-				Edit: expect.any( Function ),
-			} );
-		} );
-
-		it( 'should transform checkbox fields correctly', () => {
-			const setting: SettingsField = {
-				id: 'check1',
-				type: 'checkbox',
-				desc: 'Checkbox Input',
-				value: 'yes',
-			};
-
-			const result = transformToField( setting );
-			expect( result ).toEqual( {
-				id: 'check1',
-				type: 'text',
-				label: 'Checkbox Input',
-				Edit: expect.any( Function ),
-			} );
-		} );
-
-		it( 'should transform select fields with options correctly', () => {
-			const setting: SettingsField = {
-				id: 'select1',
-				type: 'select',
-				desc: 'Select Input',
-				value: 'value1',
-				options: {
-					value1: 'Option 1',
-					value2: 'Option 2',
-				},
-			};
-
-			const result = transformToField( setting );
-			expect( result ).toEqual( {
-				id: 'select1',
-				type: 'text',
-				label: 'Select Input',
-				elements: [
-					{ label: 'Option 1', value: 'value1' },
-					{ label: 'Option 2', value: 'value2' },
-				],
-				Edit: expect.any( Function ),
-			} );
-		} );
-
-		it( 'should transform custom fields correctly', () => {
-			const setting: CustomSettingsField = {
-				id: 'custom1',
-				type: 'custom',
-				content: '<div>Custom Content</div>',
-			};
-
-			const result = transformToField( setting );
-			expect( result ).toEqual( {
-				id: 'custom1',
-				type: 'text',
-				Edit: expect.any( Function ),
-			} );
-		} );
-
-		it( 'should transform group fields correctly', () => {
-			const setting: GroupSettingsField = {
-				id: 'group1',
-				type: 'group',
-				settings: [ { id: 'field1', type: 'text', value: 'value1' } ],
-			};
-
-			const result = transformToField( setting );
-			expect( result ).toEqual( {
-				id: 'group1',
-				label: '',
-				Edit: expect.any( Function ),
-			} );
-		} );
-
-		it( 'should transform checkbox group into multiple fields', () => {
-			const setting: CheckboxGroupSettingsField = {
-				id: 'group1',
-				type: 'checkboxgroup',
-				title: 'Group 1',
-				settings: [
-					{
-						id: 'check1',
-						type: 'checkbox',
-						desc: 'Check 1',
-						value: 'yes',
-					},
-					{
-						id: 'check2',
-						type: 'checkbox',
-						desc: 'Check 2',
-						value: 'no',
-					},
-				],
-			};
-
-			const result = transformToField( setting );
-			expect( Array.isArray( result ) ).toBe( true );
-			expect( result ).toEqual( [
-				{
-					id: 'check1',
-					type: 'text',
-					label: 'Check 1',
-					Edit: expect.any( Function ),
-				},
-				{
-					id: 'check2',
-					type: 'text',
-					label: 'Check 2',
-					Edit: expect.any( Function ),
-				},
-			] );
-		} );
-
-		it( 'should transform info view fields correctly', () => {
-			const setting: InfoSettingsField = {
-				id: 'info1',
-				type: 'info',
-				title: 'Info View',
-				text: 'Info View',
-			};
-
-			const result = transformToField( setting );
-			expect( result ).toEqual( {
-				id: 'info1',
-				label: 'Info View',
-				type: 'text',
-				Edit: expect.any( Function ),
-			} );
-		} );
-	} );
-
-	describe( 'transformToFormField', () => {
-		it( 'should transform regular fields correctly', () => {
-			const setting: SettingsField = {
-				id: 'text1',
-				type: 'text',
-				title: 'Text Input',
-				value: 'hello',
-			};
-
-			const result = transformToFormField( setting );
-			expect( result ).toEqual( {
-				id: 'text1',
-				label: 'Text Input',
-				children: [ 'text1' ],
-			} );
-		} );
-
-		it( 'should transform checkbox group correctly', () => {
-			const setting: CheckboxGroupSettingsField = {
-				id: 'group1',
-				type: 'checkboxgroup',
-				title: 'Group 1',
-				settings: [
-					{ id: 'check1', type: 'checkbox', value: 'yes' },
-					{ id: 'check2', type: 'checkbox', value: 'no' },
-				],
-			};
-
-			const result = transformToFormField( setting );
-			expect( result ).toEqual( {
-				id: 'group1',
-				label: 'Group 1',
-				children: [ 'check1', 'check2' ],
-			} );
-		} );
-
-		it( 'should return false for title and sectionend', () => {
-			const title: SettingsField = {
-				id: 'title1',
-				type: 'title',
-				value: '',
-			};
-			const sectionend: SettingsField = {
-				id: 'end1',
-				type: 'sectionend',
-				value: '',
-			};
-
-			expect( transformToFormField( title ) ).toBe( false );
-			expect( transformToFormField( sectionend ) ).toBe( false );
-		} );
-
-		it( 'should return id for special fields', () => {
-			const custom: CustomSettingsField = {
-				id: 'custom1',
-				type: 'custom',
-				content: '<div>Custom</div>',
-			};
-			const group: GroupSettingsField = {
-				id: 'group1',
-				type: 'group',
-				settings: [],
-			};
-			const slotfill: SettingsField = {
-				id: 'slot1',
-				type: 'slotfill_placeholder',
-				value: '',
-				class: 'my-slot',
-			};
-
-			expect( transformToFormField( custom ) ).toBe( 'custom1' );
-			expect( transformToFormField( group ) ).toBe( 'group1' );
-			expect( transformToFormField( slotfill ) ).toBe( 'slot1' );
-		} );
-	} );
-
-	describe( 'getLabelAndHelp', () => {
-		it( 'should set help text to desc when desc_tip is true', () => {
-			const setting: BaseSettingsField = {
-				id: 'test',
-				type: 'text',
-				desc: 'Test description',
-				desc_tip: true,
-				value: 'test',
-			};
-
-			const result = getLabelAndHelp( setting );
-			expect( result ).toEqual( {
-				label: '',
-				help: 'Test description',
-			} );
-		} );
-
-		it( 'should set label and help text when both desc and desc_tip are provided', () => {
-			const setting: BaseSettingsField = {
-				id: 'test',
-				type: 'text',
-				desc: 'Main description',
-				desc_tip: 'Helpful tip',
-				value: 'test',
-			};
-
-			const result = getLabelAndHelp( setting );
-			expect( result ).toEqual( {
-				label: 'Main description',
-				help: 'Helpful tip',
-			} );
-		} );
-
-		it( 'should set empty help text when desc_tip is false', () => {
-			const setting: BaseSettingsField = {
-				id: 'test',
-				type: 'text',
-				desc: 'Test description',
-				desc_tip: false,
-				value: 'test',
-			};
-
-			const result = getLabelAndHelp( setting );
-			expect( result ).toEqual( {
-				label: 'Test description',
-				help: '',
-			} );
-		} );
-
-		it( 'should handle desc_tip undefined', () => {
-			const setting: BaseSettingsField = {
-				id: 'test',
-				type: 'text',
-				desc: 'Test description',
-				value: 'test',
-			};
-
-			const result = getLabelAndHelp( setting );
-			expect( result ).toEqual( {
-				label: 'Test description',
-				help: '',
-			} );
-		} );
-
-		it( 'should use description if desc is not provided', () => {
-			const setting: BaseSettingsField = {
-				id: 'test',
-				type: 'text',
-				description: 'Test description',
-				value: 'test',
-			};
-
-			const result = getLabelAndHelp( setting );
-			expect( result ).toEqual( {
-				label: 'Test description',
-				help: '',
-			} );
-		} );
-
-		it( 'should handle empty descriptions', () => {
-			const setting: BaseSettingsField = {
-				id: 'test',
-				type: 'text',
-				value: 'test',
-			};
-
-			const result = getLabelAndHelp( setting );
-			expect( result ).toEqual( {
-				label: '',
-				help: '',
-			} );
-		} );
-	} );
-} );
diff --git a/packages/js/settings-editor/src/hooks/utils/transformers.tsx b/packages/js/settings-editor/src/hooks/utils/transformers.tsx
deleted file mode 100644
index 9983f9e137c..00000000000
--- a/packages/js/settings-editor/src/hooks/utils/transformers.tsx
+++ /dev/null
@@ -1,312 +0,0 @@
-// Transform settings to DataForms accepted data
-
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-import type { Field, FormField } from '@wordpress/dataviews';
-
-/**
- * Internal dependencies
- */
-import { SettingsGroup } from '../../components/settings-group';
-import { CustomView } from '../../components/custom-view';
-import { InfoView } from '../../components/info-view';
-import { Checkbox } from '../../form-controls/checkbox';
-import { Input } from '../../form-controls/input';
-import { Textarea } from '../../form-controls/textarea';
-import { Color } from '../../form-controls/color';
-import { Select } from '../../form-controls/select';
-import { Radio } from '../../form-controls/radio';
-import { SingleSelectPage } from '../../form-controls/single-select-page';
-import { SingleSelectPageWithSearch } from '../../form-controls/single-select-page-with-search';
-
-export type DataItem = Record< string, BaseSettingsField[ 'value' ] >;
-
-/**
- * Helper function to determine label and help text from setting.
- *
- * @param setting The setting object containing description and tip information
- * @return Object with label and help text
- *
- * Cases:
- * - desc_tip === true: description becomes help text, empty label
- * - desc_tip is string: string becomes help text, description becomes label
- * - desc_tip === false: empty help text, description becomes label
- * - desc_tip undefined: empty help text, description becomes label
- */
-export const getLabelAndHelp = (
-	setting: BaseSettingsField | CheckboxSettingsField
-) => {
-	const description = setting.desc || setting.description || '';
-
-	if ( setting.desc_tip === true ) {
-		return {
-			label: '',
-			help: description,
-		};
-	}
-
-	return {
-		label: description,
-		help: typeof setting.desc_tip === 'string' ? setting.desc_tip : '',
-	};
-};
-
-/**
- * Transforms a single setting into initial form data.
- * For checkbox groups, it initializes each sub-setting with its value or 'no'.
- * For other fields, it uses the setting's value or an empty string.
- *
- * @param setting The setting to transform
- * @param acc     Accumulator object containing the form data
- * @return         Updated accumulator with the setting's initial data
- */
-export const transformToInitialData = (
-	setting: SettingsField,
-	acc: DataItem
-) => {
-	switch ( setting.type ) {
-		case 'checkboxgroup':
-			if ( setting.settings?.length ) {
-				setting.settings.forEach( ( subSetting ) => {
-					acc[ subSetting.id ] =
-						subSetting.value === 'yes' ? 'yes' : 'no';
-				} );
-			}
-			break;
-		default:
-			acc[ setting.id ] = 'value' in setting ? setting.value : '';
-	}
-	return acc;
-};
-
-/**
- * Transforms a WooCommerce setting into a DataViews Field configuration.
- * Handles various field types including groups, checkboxes, text inputs, and selects.
- *
- * @param setting The setting to transform
- * @return         A Field configuration or array of Field configurations
- */
-export const transformToField = (
-	setting: SettingsField
-): Field< DataItem >[] | Field< DataItem > => {
-	switch ( setting.type ) {
-		case 'group':
-			return {
-				id: setting.id,
-				label: '',
-				Edit: () => <SettingsGroup { ...setting } />,
-			};
-
-		case 'checkboxgroup':
-			return setting.settings?.map( ( subSetting ) => {
-				const { label, help } = getLabelAndHelp( subSetting );
-
-				return {
-					id: subSetting.id,
-					type: 'text',
-					label,
-					Edit: ( props ) => <Checkbox { ...props } help={ help } />,
-				};
-			} );
-
-		case 'checkbox': {
-			const { label, help } = getLabelAndHelp( setting );
-			return {
-				id: setting.id,
-				type: 'text',
-				label,
-				Edit: ( props ) => <Checkbox { ...props } help={ help } />,
-			};
-		}
-		case 'text':
-		case 'password':
-		case 'datetime':
-		case 'datetime-local':
-		case 'date':
-		case 'month':
-		case 'time':
-		case 'week':
-		case 'number':
-		case 'email':
-		case 'url':
-		case 'tel': {
-			const { label, help } = getLabelAndHelp( setting );
-
-			return {
-				id: setting.id,
-				type: 'text',
-				label,
-				placeholder: setting.placeholder,
-				Edit: ( props ) => (
-					<Input { ...props } type={ setting.type } help={ help } />
-				),
-			};
-		}
-		case 'select': {
-			const { label, help } = getLabelAndHelp( setting );
-
-			return {
-				id: setting.id,
-				type: 'text',
-				label,
-				elements: Object.entries( setting.options || {} ).map(
-					( [ value, _label ] ) => ( {
-						label: _label,
-						value,
-					} )
-				),
-				Edit: ( props ) => <Select { ...props } help={ help } />,
-			};
-		}
-		case 'single_select_page': {
-			const { label, help } = getLabelAndHelp( setting );
-
-			return {
-				id: setting.id,
-				type: 'text',
-				label,
-				Edit: ( props ) => (
-					<SingleSelectPage { ...props } help={ help } />
-				),
-			};
-		}
-		case 'single_select_page_with_search': {
-			const { label, help } = getLabelAndHelp( setting );
-
-			return {
-				id: setting.id,
-				type: 'text',
-				label,
-				Edit: ( props ) => (
-					<SingleSelectPageWithSearch
-						{ ...props }
-						help={ help }
-						className={ setting.class }
-						exclude={ setting.exclude }
-					/>
-				),
-			};
-		}
-		case 'textarea': {
-			const { label, help } = getLabelAndHelp( setting );
-
-			return {
-				id: setting.id,
-				type: 'text',
-				placeholder: setting.placeholder,
-				label,
-				Edit: ( props ) => <Textarea { ...props } help={ help } />,
-			};
-		}
-
-		case 'radio': {
-			const { label, help } = getLabelAndHelp( setting );
-
-			return {
-				id: setting.id,
-				type: 'text',
-				label,
-				elements: Object.entries( setting.options || {} ).map(
-					( [ value, _label ] ) => ( {
-						label: _label,
-						value,
-					} )
-				),
-				Edit: ( props ) => <Radio { ...props } help={ help } />,
-			};
-		}
-
-		case 'color':
-			return {
-				id: setting.id,
-				type: 'text',
-				label: setting.desc,
-				Edit: Color,
-			};
-
-		case 'info':
-			return {
-				id: setting.id,
-				type: 'text',
-				label: setting.title,
-				Edit: () => (
-					<InfoView
-						text={ setting.text }
-						className={ setting.row_class }
-						css={ setting.css }
-					/>
-				),
-			};
-
-		case 'custom':
-			return {
-				id: setting.id,
-				type: 'text',
-				Edit: () => <CustomView html={ setting.content } />,
-			};
-
-		case 'slotfill_placeholder':
-			return {
-				id: setting.id,
-				type: 'text' as const,
-				Edit: () => (
-					<div id={ setting.id } className={ setting.class }></div>
-				),
-			};
-
-		case 'sectionend':
-			return {
-				id: setting.id,
-				type: 'text' as const,
-				Edit: () => null,
-			};
-
-		default:
-			return {
-				id: setting.id,
-				type: 'text',
-				label: setting.desc,
-				Edit: () => <div>To be implemented: { setting.type }</div>,
-			};
-	}
-};
-
-/**
- * Transforms a setting into a form layout field configuration.
- * Determines how the field should be structured in the form layout.
- *
- * @param setting The setting to transform
- * @return         FormField configuration, setting ID, or false if the field should be excluded
- */
-export const transformToFormField = (
-	setting: SettingsField
-): FormField | string | false => {
-	switch ( setting.type ) {
-		case 'checkboxgroup':
-			return {
-				id: setting.id,
-				label: setting.title,
-				children: setting.settings?.map(
-					( subSetting ) => subSetting.id
-				),
-			};
-
-		case 'sectionend':
-		case 'title':
-			return false;
-
-		case 'custom':
-		case 'group':
-		case 'slotfill_placeholder':
-			return setting.id;
-
-		default:
-			return {
-				id: setting.id,
-				label: setting.title,
-				children: [ setting.id ],
-			};
-	}
-};
diff --git a/packages/js/settings-editor/src/index.tsx b/packages/js/settings-editor/src/index.tsx
deleted file mode 100644
index 0c78c771f30..00000000000
--- a/packages/js/settings-editor/src/index.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, useContext, useEffect } from '@wordpress/element';
-import { useSelect, dispatch } from '@wordpress/data';
-import { SnackbarList } from '@wordpress/components';
-import { store as noticesStore } from '@wordpress/notices';
-import { RouterProvider } from '@automattic/site-admin';
-
-/**
- * Internal dependencies
- */
-import { Layout } from './layout';
-import { useActiveRoute } from './route';
-import { SettingsDataProvider, SettingsDataContext } from './data';
-
-const Notices = () => {
-	const notices: { id: string; content: string }[] = useSelect(
-		( select ) => {
-			const { getNotices } = select( noticesStore );
-			return getNotices();
-		},
-		[]
-	);
-
-	const onRemove = ( id: string ) => {
-		dispatch( noticesStore ).removeNotice( id );
-	};
-
-	return <SnackbarList notices={ notices } onRemove={ onRemove } />;
-};
-
-const appendSettingsScripts = ( scripts: string[] ) => {
-	return scripts.map( ( script ) => {
-		const scriptElement = document.createElement( 'script' );
-		scriptElement.src = script;
-		scriptElement.onerror = () => {
-			// eslint-disable-next-line no-console
-			console.error( `Failed to load script: ${ script }` );
-		};
-		document.body.appendChild( scriptElement );
-		return scriptElement;
-	} );
-};
-
-const removeSettingsScripts = ( scripts: HTMLScriptElement[] ) => {
-	scripts.forEach( ( script ) => {
-		document.body.removeChild( script );
-	} );
-};
-
-const SettingsApp = () => {
-	const { route, settingsPage, tabs, activeSection, activePage } =
-		useActiveRoute();
-	const { settingsScripts } = useContext( SettingsDataContext );
-
-	useEffect( () => {
-		if ( ! activePage ) {
-			return;
-		}
-
-		const scripts = Array.from(
-			new Set( [
-				...( settingsScripts._default || [] ),
-				...( settingsScripts[ activePage ] || [] ),
-			] )
-		);
-
-		const scriptsElements = appendSettingsScripts( scripts );
-
-		return () => {
-			removeSettingsScripts( scriptsElements );
-		};
-	}, [ activePage, activeSection ] );
-
-	return (
-		<Layout
-			route={ route }
-			settingsPage={ settingsPage }
-			tabs={ tabs }
-			activeSection={ activeSection }
-		/>
-	);
-};
-
-export const SettingsEditor = () => {
-	return (
-		<RouterProvider routes={ [] } pathArg="page">
-			<SettingsDataProvider>
-				<SettingsApp />
-				<Notices />
-			</SettingsDataProvider>
-		</RouterProvider>
-	);
-};
-
-export * from './components';
-export * from './legacy';
-export * from './route';
diff --git a/packages/js/settings-editor/src/layout.tsx b/packages/js/settings-editor/src/layout.tsx
deleted file mode 100644
index 37369a4b8b0..00000000000
--- a/packages/js/settings-editor/src/layout.tsx
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * External dependencies
- */
-import {
-	useViewportMatch,
-	useResizeObserver,
-	useReducedMotion,
-} from '@wordpress/compose';
-/* eslint-disable @woocommerce/dependency-group */
-import { EditorSnackbars } from '@wordpress/editor';
-import {
-	__unstableMotion as motion,
-	__unstableAnimatePresence as AnimatePresence,
-} from '@wordpress/components';
-import { createElement, Fragment } from '@wordpress/element';
-import { SidebarContent } from '@automattic/site-admin';
-
-/**
- * Internal dependencies
- */
-import { Route } from './types';
-import { SectionTabs, Header } from './components';
-
-const ANIMATION_DURATION = 0.3;
-
-type LayoutProps = {
-	route: Route;
-	settingsPage?: SettingsPage;
-	activeSection?: string;
-	tabs?: Array< { name: string; title: string } >;
-};
-
-export function Layout( {
-	route,
-	settingsPage,
-	tabs = [],
-	activeSection,
-}: LayoutProps ) {
-	const [ fullResizer ] = useResizeObserver();
-	const isMobileViewport = useViewportMatch( 'medium', '<' );
-	const disableMotion = useReducedMotion();
-
-	const { key: routeKey, areas, widths } = route;
-
-	return (
-		<>
-			{ fullResizer }
-			<div className="woocommerce-site-layout">
-				<div className="woocommerce-site-layout__content">
-					{ /*
-						The NavigableRegion must always be rendered and not use
-						`inert` otherwise `useNavigateRegions` will fail.
-						NOTE: NavigableRegion has been removed and will be replaced
-						with the new component from @automattic/site-admin.
-					*/ }
-					{ ( ! isMobileViewport || ! areas.mobile ) && (
-						<AnimatePresence>
-							<motion.div
-								initial={ { opacity: 0 } }
-								animate={ { opacity: 1 } }
-								exit={ { opacity: 0 } }
-								transition={ {
-									type: 'tween',
-									duration:
-										// Disable transition in mobile to emulate a full page transition.
-										disableMotion || isMobileViewport
-											? 0
-											: ANIMATION_DURATION,
-									ease: 'easeOut',
-								} }
-								className="woocommerce-site-layout__sidebar a8c-site-admin-sidebar"
-							>
-								<SidebarContent
-									shouldAnimate={ false }
-									routeKey={ routeKey }
-								>
-									{ areas.sidebar }
-								</SidebarContent>
-							</motion.div>
-						</AnimatePresence>
-					) }
-
-					<EditorSnackbars />
-
-					{ ! isMobileViewport && areas.content && (
-						<div
-							className="woocommerce-site-layout__area"
-							style={ {
-								maxWidth: widths?.content,
-							} }
-						>
-							<Header
-								hasTabs={ tabs.length > 1 }
-								pageTitle={ settingsPage?.label }
-							/>
-							<SectionTabs
-								tabs={ tabs }
-								activeSection={ activeSection }
-							>
-								{ areas.content }
-							</SectionTabs>
-						</div>
-					) }
-
-					{ ! isMobileViewport && areas.edit && (
-						<div
-							className="woocommerce-site-layout__area"
-							style={ {
-								maxWidth: widths?.edit,
-							} }
-						>
-							{ areas.edit }
-						</div>
-					) }
-				</div>
-			</div>
-		</>
-	);
-}
diff --git a/packages/js/settings-editor/src/legacy/content.tsx b/packages/js/settings-editor/src/legacy/content.tsx
deleted file mode 100644
index e6f80a41c66..00000000000
--- a/packages/js/settings-editor/src/legacy/content.tsx
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import { Form } from './form';
-
-export const LegacyContent = ( {
-	settingsPage,
-	activeSection,
-	settingsData,
-}: {
-	settingsPage: SettingsPage;
-	activeSection: string;
-	settingsData: SettingsData;
-} ) => {
-	const section = settingsPage.sections[ activeSection ];
-
-	if ( ! section ) {
-		return null;
-	}
-
-	return (
-		<Form
-			settings={ section.settings }
-			settingsData={ settingsData }
-			settingsPage={ settingsPage }
-			activeSection={ activeSection }
-		/>
-	);
-};
diff --git a/packages/js/settings-editor/src/legacy/form.tsx b/packages/js/settings-editor/src/legacy/form.tsx
deleted file mode 100644
index 203b4e8b1e0..00000000000
--- a/packages/js/settings-editor/src/legacy/form.tsx
+++ /dev/null
@@ -1,161 +0,0 @@
-/**
- * External dependencies
- */
-import {
-	createElement,
-	useRef,
-	useContext,
-	useState,
-} from '@wordpress/element';
-import { Button } from '@wordpress/components';
-import { __ } from '@wordpress/i18n';
-import { DataForm } from '@wordpress/dataviews';
-import { getNewPath } from '@woocommerce/navigation';
-import { useDispatch } from '@wordpress/data';
-import apiFetch from '@wordpress/api-fetch';
-import { addQueryArgs } from '@wordpress/url';
-
-/**
- * Internal dependencies
- */
-import { useSettingsForm } from '../hooks/use-settings-form';
-import { CustomView } from '../components/custom-view';
-import { SettingsDataContext } from '../data';
-
-export const Form = ( {
-	settings,
-	settingsData,
-	settingsPage,
-	activeSection,
-}: {
-	settings: SettingsField[];
-	settingsData: SettingsData;
-	settingsPage: SettingsPage;
-	activeSection: string;
-} ) => {
-	const { data, fields, form, updateField } = useSettingsForm( settings );
-	const formRef = useRef< HTMLFormElement >( null );
-	const { setSettingsData } = useContext( SettingsDataContext );
-	const [ isBusy, setIsBusy ] = useState( false );
-	const { createNotice } = useDispatch( 'core/notices' );
-
-	const getFormData = () => {
-		if ( ! formRef.current ) {
-			return {};
-		}
-		const formElements = formRef.current.querySelectorAll<
-			HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement
-		>( 'input, select, textarea' );
-
-		const formData: Record< string, string > = {};
-
-		formElements.forEach( ( input ) => {
-			const key = input.name || input.id;
-			// Avoid generic Gutenberg input ids. This will require upstream fixes.
-			if ( ! key || input.id?.startsWith( 'inspector-' ) ) {
-				return;
-			}
-
-			formData[ key ] = input.value;
-		} );
-
-		return formData;
-	};
-
-	const handleSubmit = async (
-		event: React.FormEvent< HTMLFormElement >
-	) => {
-		event.preventDefault();
-		setIsBusy( true );
-
-		const query: Record< string, string > = {
-			page: 'wc-settings',
-		};
-		if ( settingsPage.slug !== 'general' ) {
-			query.tab = settingsPage.slug;
-		}
-		if ( activeSection !== 'default' ) {
-			query.section = activeSection;
-		}
-
-		const updatedData = getFormData();
-		updatedData.save = 'Save changes';
-		updatedData._wpnonce = settingsData._wpnonce;
-		updatedData._w_http_referer = '/wp-admin/' + getNewPath( query );
-
-		const payload = new FormData();
-		for ( const [ key, value ] of Object.entries( updatedData ) ) {
-			payload.append( key, value );
-		}
-
-		apiFetch( {
-			path: addQueryArgs( '/wc-admin/legacy-settings', query ),
-			method: 'POST',
-			body: payload,
-		} )
-			.then( ( response ) => {
-				const {
-					data: { settingsData: responseSettingsData },
-					status,
-				} = response as {
-					data: { settingsData: SettingsData };
-					status: string;
-				};
-
-				if ( status === 'success' ) {
-					setSettingsData( responseSettingsData );
-					createNotice(
-						'success',
-						__( 'Settings saved successfully', 'woocommerce' )
-					);
-				} else {
-					createNotice(
-						'error',
-						__( 'Failed to save settings', 'woocommerce' )
-					);
-				}
-			} )
-			.catch( ( error ) => {
-				createNotice(
-					'error',
-					__( 'Failed to save settings: ', 'woocommerce' ) +
-						error.message
-				);
-			} )
-			.finally( () => {
-				setIsBusy( false );
-			} );
-	};
-
-	return (
-		<form ref={ formRef } id="mainform" onSubmit={ handleSubmit }>
-			{ settingsData.start && (
-				<CustomView html={ settingsData.start.content } />
-			) }
-			{ settingsPage.start && (
-				<CustomView html={ settingsPage.start.content } />
-			) }
-			<div className="woocommerce-settings-content">
-				<DataForm
-					fields={ fields }
-					form={ form }
-					data={ data }
-					onChange={ updateField }
-				/>
-			</div>
-			<div className="woocommerce-settings-content-footer">
-				<Button
-					variant="primary"
-					type="submit"
-					isBusy={ isBusy }
-					disabled={ isBusy }
-				>
-					{ __( 'Save', 'woocommerce' ) }
-				</Button>
-			</div>
-			{ settingsPage.end && (
-				<CustomView html={ settingsPage.end.content } />
-			) }
-		</form>
-	);
-};
diff --git a/packages/js/settings-editor/src/legacy/index.ts b/packages/js/settings-editor/src/legacy/index.ts
deleted file mode 100644
index 7b367d14630..00000000000
--- a/packages/js/settings-editor/src/legacy/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './content';
diff --git a/packages/js/settings-editor/src/route.tsx b/packages/js/settings-editor/src/route.tsx
deleted file mode 100644
index 24ec6397b51..00000000000
--- a/packages/js/settings-editor/src/route.tsx
+++ /dev/null
@@ -1,254 +0,0 @@
-/**
- * External dependencies
- */
-import {
-	createElement,
-	useEffect,
-	useMemo,
-	useState,
-	useRef,
-	useContext,
-} from '@wordpress/element';
-import { __ } from '@wordpress/i18n';
-import {
-	addAction,
-	applyFilters,
-	didFilter,
-	removeAction,
-} from '@wordpress/hooks';
-import { useLocation } from '@automattic/site-admin';
-
-/**
- * Internal dependencies
- */
-import { Sidebar } from './components';
-import { Route } from './types';
-import { LegacyContent } from './legacy';
-import { SettingsDataContext } from './data';
-
-const NotFound = () => {
-	return <h1>{ __( 'Page not found', 'woocommerce' ) }</h1>;
-};
-
-/**
- * Default route when active page is not found.
- *
- * @param {string}        activePage - The active page.
- * @param {settingsPages} settingsPages      - The settings pages.
- */
-const getNotFoundRoute = (
-	activePage: string,
-	settingsPages: SettingsPages
-): Route => ( {
-	key: activePage,
-	areas: {
-		sidebar: (
-			<Sidebar
-				activePage={ activePage }
-				pages={ settingsPages }
-				pageTitle={ __( 'Settings', 'woocommerce' ) }
-			/>
-		),
-		content: <NotFound />,
-		edit: null,
-	},
-	widths: {
-		content: undefined,
-		edit: undefined,
-	},
-} );
-
-/**
- * Get the tabs for a settings page.
- *
- * @param {settingsPage} settingsPage - The settings page.
- * @return {Array<{ name: string; title: string }>} The tabs.
- */
-const getSettingsPageTabs = (
-	settingsPage: SettingsPage
-): Array< {
-	name: string;
-	title: string;
-} > => {
-	const sections = Object.keys( settingsPage.sections );
-
-	return sections.map( ( key ) => ( {
-		name: key,
-		title: settingsPage.sections[ key ].label,
-	} ) );
-};
-
-/**
- * Creates a route configuration for legacy settings.
- *
- * @param {string}       activePage    - The active page.
- * @param {string}       activeSection - The active section.
- * @param {settingsPage} settingsPage  - The settings page.
- * @param {settingsData} settingsData  - The settings data.
- */
-const getLegacyRoute = (
-	activePage: string,
-	activeSection: string,
-	settingsPage: SettingsPage,
-	settingsData: SettingsData
-): Route => {
-	return {
-		key: activePage,
-		areas: {
-			sidebar: (
-				<Sidebar
-					activePage={ activePage }
-					pages={ settingsData.pages }
-					pageTitle={ __( 'Store settings', 'woocommerce' ) }
-				/>
-			),
-			content: (
-				<LegacyContent
-					settingsData={ settingsData }
-					settingsPage={ settingsPage }
-					activeSection={ activeSection }
-				/>
-			),
-			edit: null,
-		},
-		widths: {
-			content: undefined,
-			edit: undefined,
-		},
-	};
-};
-
-const PAGES_FILTER = 'woocommerce_admin_settings_pages';
-
-const getModernPages = () => {
-	/**
-	 * Get the modern settings pages.
-	 *
-	 * @return {Record<string, Route>} The pages.
-	 */
-	return applyFilters( PAGES_FILTER, {} ) as Record< string, Route >;
-};
-
-/**
- * Hook to get the modern settings pages.
- *
- * @return {Record<string, Route>} The pages.
- */
-export function useModernRoutes(): Record< string, Route > {
-	const [ routes, setRoutes ] = useState< Record< string, Route > >(
-		getModernPages()
-	);
-	const location = useLocation();
-	const isFirstRender = useRef( true );
-
-	/*
-	 * Handler for new pages being added after the initial filter has been run,
-	 * so that if any routing pages are added later, they can still be rendered
-	 * instead of falling back to the `NoMatch` page.
-	 */
-	useEffect( () => {
-		const handleHookAdded = ( hookName: string ) => {
-			if ( hookName !== PAGES_FILTER ) {
-				return;
-			}
-
-			const filterCount = didFilter( PAGES_FILTER );
-			if ( filterCount && filterCount > 0 ) {
-				setRoutes( getModernPages() );
-			}
-		};
-
-		const namespace = `woocommerce/woocommerce/watch_${ PAGES_FILTER }`;
-		addAction( 'hookAdded', namespace, handleHookAdded );
-
-		return () => {
-			removeAction( 'hookAdded', namespace );
-		};
-	}, [] );
-
-	// Update modern pages when the location changes.
-	useEffect( () => {
-		if ( isFirstRender.current ) {
-			// Prevent updating routes again on first render.
-			isFirstRender.current = false;
-			return;
-		}
-
-		setRoutes( getModernPages() );
-	}, [ location.query ] );
-
-	return routes;
-}
-
-/**
- * Hook to determine and return the active route based on the current path.
- */
-export const useActiveRoute = (): {
-	route: Route;
-	settingsPage?: SettingsPage;
-	activePage?: string;
-	activeSection?: string;
-	tabs?: Array< { name: string; title: string } >;
-} => {
-	const { settingsData } = useContext( SettingsDataContext );
-	const location = useLocation();
-	const modernRoutes = useModernRoutes();
-
-	return useMemo( () => {
-		const { tab: activePage = 'general', section: activeSection } =
-			location.query || {};
-		const settingsPage = settingsData?.pages?.[ activePage ];
-
-		if ( ! settingsPage ) {
-			return {
-				route: getNotFoundRoute( activePage, settingsData.pages ),
-			};
-		}
-
-		const tabs = getSettingsPageTabs( settingsPage );
-
-		// Handle legacy pages.
-		if ( ! settingsPage.is_modern ) {
-			return {
-				route: getLegacyRoute(
-					activePage,
-					activeSection || 'default',
-					settingsPage,
-					settingsData
-				),
-				settingsPage,
-				activePage,
-				activeSection,
-				tabs,
-			};
-		}
-
-		const modernRoute = modernRoutes[ activePage ];
-
-		// Handle modern pages.
-		if ( ! modernRoute ) {
-			return {
-				route: getNotFoundRoute( activePage, settingsData.pages ),
-			};
-		}
-
-		// Sidebar is responsibility of WooCommerce, not extensions so add it here.
-		modernRoute.areas.sidebar = (
-			<Sidebar
-				activePage={ activePage }
-				pages={ settingsData.pages }
-				pageTitle={ __( 'Store settings', 'woocommerce' ) }
-			/>
-		);
-		// Make sure we have a key.
-		modernRoute.key = activePage;
-
-		return {
-			route: modernRoute,
-			settingsPage,
-			activePage,
-			activeSection,
-			tabs,
-		};
-	}, [ settingsData, location.query ] );
-};
diff --git a/packages/js/settings-editor/src/style.scss b/packages/js/settings-editor/src/style.scss
deleted file mode 100644
index a5865e6b007..00000000000
--- a/packages/js/settings-editor/src/style.scss
+++ /dev/null
@@ -1,103 +0,0 @@
-// Import WordPress base styles first
-@import "@wordpress/base-styles/variables";
-@import "@wordpress/base-styles/mixins";
-
-@import "@wordpress/dataviews/build-style/style.css";
-
-// Import site-admin component styles
-@import "@automattic/site-admin/src/components/sidebar/style.scss";
-@import "@automattic/site-admin/src/components/sidebar-button/style.scss";
-@import "@automattic/site-admin/src/components/sidebar-navigation-item/style.scss";
-@import "@automattic/site-admin/src/components/sidebar-navigation-screen/style.scss";
-@import "@automattic/site-admin/src/components/site-icon/style.scss";
-
-// Import form controls styles
-@import "./form-controls/style.scss";
-
-.woocommerce-settings-header {
-	&.woocommerce-site-page-header.woocommerce-settings-header--has-tabs {
-		border-bottom: none;
-	}
-}
-
-.woocommerce-settings-section-tabs {
-	.components-tab-panel__tabs {
-		border-bottom: 1px solid #f0f0f0;
-		padding: 0 32px;
-		z-index: 1;
-	}
-}
-
-#wc-settings-page .woocommerce-site-layout__area {
-	overflow: scroll;
-}
-
-.components-tab-panel__tabs {
-	position: sticky;
-	top: 60px; // For now
-	background-color: #fff;
-}
-
-.woocommerce-settings-content {
-	padding-inline: 48px;
-	display: flex;
-	flex-direction: column;
-}
-
-.woocommerce-settings-group {
-	display: flex;
-	gap: 48px;
-
-	.dataforms-layouts-regular__header:not(:first-child) {
-		margin-top: 40px;
-	}
-
-	@media (max-width: 960px) {
-		flex-direction: column;
-	}
-}
-
-.dataforms-layouts-regular__field:has(> .woocommerce-settings-group) {
-	padding-block: 48px;
-
-	&:not(:last-child) {
-		border-bottom: 1px solid #f0f0f0;
-	}
-}
-
-.woocommerce-settings-group-title {
-	flex: 1;
-	max-width: 400px;
-}
-
-.woocommerce-settings-group-content {
-	flex: 2;
-	display: flex;
-	flex-direction: column;
-	gap: 48px;
-}
-
-.woocommerce-settings-content-footer {
-	display: flex;
-	justify-content: flex-end;
-	padding: 48px;
-}
-
-#wc-settings-page {
-	.components-input-control__label {
-		white-space: normal;
-	}
-
-	.components-snackbar-list {
-		bottom: 24px;
-		left: 308px;
-	}
-}
-
-.woocommerce-settings-color-picker {
-	display: flex;
-	flex-direction: row;
-	gap: 10px;
-	margin: 8px 0;
-}
-
diff --git a/packages/js/settings-editor/src/test/route.test.tsx b/packages/js/settings-editor/src/test/route.test.tsx
deleted file mode 100644
index 5cfac536e7c..00000000000
--- a/packages/js/settings-editor/src/test/route.test.tsx
+++ /dev/null
@@ -1,191 +0,0 @@
-/**
- * External dependencies
- */
-import { createElement, useContext } from '@wordpress/element';
-import { screen, render, renderHook } from '@testing-library/react';
-import { addAction, applyFilters, didFilter } from '@wordpress/hooks';
-/* eslint-disable @woocommerce/dependency-group */
-// @ts-ignore No types for this exist yet.
-import { useLocation } from '@automattic/site-admin';
-/* eslint-enable @woocommerce/dependency-group */
-
-/**
- * Internal dependencies
- */
-import { useActiveRoute, useModernRoutes } from '../route';
-
-// Mock external dependencies
-jest.mock( '@wordpress/hooks', () => ( {
-	addAction: jest.fn(),
-	removeAction: jest.fn(),
-	applyFilters: jest.fn(),
-	didFilter: jest.fn(),
-	addFilter: jest.fn(),
-} ) );
-
-jest.mock( '@automattic/site-admin', () => ( {
-	useLocation: jest.fn(),
-} ) );
-
-jest.mock( '../components/sidebar', () => ( {
-	__esModule: true,
-	Sidebar: ( { children }: { children: React.ReactNode } ) => (
-		<div data-testid="sidebar-navigation-screen">{ children }</div>
-	),
-} ) );
-
-jest.mock( '@wordpress/element', () => ( {
-	...jest.requireActual( '@wordpress/element' ),
-	useContext: jest.fn(),
-} ) );
-
-const mockSettingsPages = {
-	pages: {
-		general: {
-			label: 'General',
-			icon: 'settings',
-			slug: 'general',
-			sections: {
-				default: {
-					label: 'General',
-					settings: [
-						{
-							title: 'Store Address',
-							type: 'title' as const,
-							desc: 'This is where your business is located.',
-							id: 'store_address',
-							value: false,
-						},
-					],
-				},
-			},
-			is_modern: false,
-			start: null,
-			end: null,
-		},
-	},
-	start: null,
-	_wpnonce: 'test-nonce',
-};
-
-describe( 'route.tsx', () => {
-	beforeEach( () => {
-		// Reset all mocks
-		jest.clearAllMocks();
-
-		// Mock window.wcSettings
-		window.wcSettings = {
-			admin: {
-				settingsData: mockSettingsPages,
-				settingsScripts: {},
-			},
-		};
-
-		( useContext as jest.Mock ).mockReturnValue( {
-			settingsData: mockSettingsPages,
-		} );
-
-		// Mock default location
-		( useLocation as jest.Mock ).mockReturnValue( {
-			query: { tab: 'general' },
-		} );
-	} );
-
-	describe( 'useActiveRoute', () => {
-		it( 'should return legacy route for non-modern pages', () => {
-			const { result } = renderHook( () => useActiveRoute() );
-
-			expect( result.current.route.key ).toBe( 'general' );
-			expect( result.current.route.areas.content ).toBeDefined();
-			expect( result.current.route.areas.sidebar ).toBeDefined();
-
-			render( result.current.route.areas.sidebar as JSX.Element );
-			expect(
-				screen.getByTestId( 'sidebar-navigation-screen' )
-			).toBeInTheDocument();
-
-			expect( result.current.route.areas.edit ).toBeNull();
-		} );
-
-		it( 'should return not found route for non-existent pages', () => {
-			// Mock location for non-existent page
-			( useLocation as jest.Mock ).mockReturnValue( {
-				query: { tab: 'non-existent' },
-			} );
-
-			const { result } = renderHook( () => useActiveRoute() );
-
-			expect( result.current.route.key ).toBe( 'non-existent' );
-			render( result.current.route.areas.content as JSX.Element );
-			expect( screen.getByText( 'Page not found' ) ).toBeInTheDocument();
-			expect( result.current.route.areas.sidebar ).toBeDefined();
-		} );
-
-		it( 'should return modern route for modern pages', () => {
-			( useLocation as jest.Mock ).mockReturnValue( {
-				query: { tab: 'modern' },
-			} );
-
-			// Mock a modern page
-			const mockModernPages = {
-				pages: {
-					modern: {
-						label: 'Modern',
-						icon: 'published',
-						slug: 'modern',
-						sections: {},
-						is_modern: true,
-						start: null,
-						end: null,
-					},
-				},
-				start: null,
-				_wpnonce: 'test-nonce',
-			};
-
-			( useContext as jest.Mock ).mockReturnValue( {
-				settingsData: mockModernPages,
-			} );
-
-			( applyFilters as jest.Mock ).mockReturnValue( {
-				modern: {
-					areas: {
-						content: <div>Modern Page</div>,
-					},
-				},
-			} );
-
-			const { result } = renderHook( () => useActiveRoute() );
-			expect( result.current.route.key ).toBe( 'modern' );
-			expect( result.current.route.areas.sidebar ).toBeDefined();
-		} );
-	} );
-
-	describe( 'useModernRoutes', () => {
-		it( 'should update routes when new hooks are added', () => {
-			renderHook( () => useModernRoutes() );
-
-			// Simulate hook added
-			( didFilter as jest.Mock ).mockReturnValue( 1 );
-			const hookAddedCallback = ( addAction as jest.Mock ).mock
-				.calls[ 0 ][ 2 ];
-			hookAddedCallback( 'woocommerce_admin_settings_pages' );
-
-			expect( applyFilters ).toHaveBeenCalledWith(
-				'woocommerce_admin_settings_pages',
-				{}
-			);
-		} );
-
-		it( 'should not update routes for unrelated hooks', () => {
-			renderHook( () => useModernRoutes() );
-
-			// Simulate unrelated hook added
-			const hookAddedCallback = ( addAction as jest.Mock ).mock
-				.calls[ 0 ][ 2 ];
-			hookAddedCallback( 'unrelated_hook' );
-
-			expect( applyFilters ).toHaveBeenCalledTimes( 1 ); // Only initial call
-		} );
-	} );
-} );
diff --git a/packages/js/settings-editor/src/types.ts b/packages/js/settings-editor/src/types.ts
deleted file mode 100644
index 562ddbbd227..00000000000
--- a/packages/js/settings-editor/src/types.ts
+++ /dev/null
@@ -1,53 +0,0 @@
-export type Route = {
-	/**
-	 * The page id.
-	 */
-	key: string;
-	areas: {
-		/**
-		 * The sidebar component.
-		 */
-		sidebar: React.ReactNode;
-		/**
-		 * The content component.
-		 */
-		content?: React.ReactNode;
-		/**
-		 * The edit component.
-		 */
-		edit?: React.ReactNode;
-		/**
-		 * The mobile component.
-		 */
-		mobile?: React.ReactNode;
-		/**
-		 * Whether the page can be previewed.
-		 */
-		preview?: boolean;
-	};
-	widths?: {
-		/**
-		 * The sidebar width.
-		 */
-		sidebar?: number;
-		/**
-		 * The main content width.
-		 */
-		content?: number;
-		/**
-		 * The edit component width.
-		 */
-		edit?: number;
-	};
-};
-
-export type Location = {
-	pathname: string;
-	search: string;
-	hash: string;
-	state: null;
-	key: string;
-	params: Record< string, string >;
-};
-
-export type DataFormItem = Record< string, BaseSettingsField[ 'value' ] >;
diff --git a/packages/js/settings-editor/src/utils/index.ts b/packages/js/settings-editor/src/utils/index.ts
deleted file mode 100644
index d38d31197a2..00000000000
--- a/packages/js/settings-editor/src/utils/index.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * External dependencies
- */
-import { getSetting } from '@woocommerce/settings';
-import { sanitizeHTML as sanitizeHTMLFromPackage } from '@woocommerce/sanitize';
-
-export function isGutenbergVersionAtLeast( version: number ) {
-	const adminSettings: { gutenberg_version?: string } = getSetting( 'admin' );
-	if ( adminSettings.gutenberg_version ) {
-		return parseFloat( adminSettings?.gutenberg_version ) >= version;
-	}
-	return false;
-}
-
-const ALLOWED_TAGS = [
-	'a',
-	'b',
-	'em',
-	'i',
-	'strong',
-	'p',
-	'br',
-	'code',
-	'mark',
-	'sub',
-	'sup',
-	'pre',
-	'span',
-	'ul',
-	'ol',
-	'li',
-	'blockquote',
-	'hr',
-];
-
-/**
- * Sanitizes HTML content to ensure it only contains allowed tags and attributes.
- *
- * @param html - The HTML content to sanitize.
- * @return Sanitized HTML content.
- */
-export function sanitizeHTML( html: string ) {
-	return sanitizeHTMLFromPackage( html, { tags: ALLOWED_TAGS } );
-}
diff --git a/packages/js/settings-editor/tsconfig-cjs.json b/packages/js/settings-editor/tsconfig-cjs.json
deleted file mode 100644
index 85aaba3ff0b..00000000000
--- a/packages/js/settings-editor/tsconfig-cjs.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
-	"extends": "@woocommerce/internal-ts-config/tsconfig-cjs.json",
-	"compilerOptions": {
-		"rootDir": "src",
-		"outDir": "build",
-		"resolveJsonModule": true,
-		"typeRoots": [
-			"./typings",
-			"./node_modules/@types"
-		]
-	},
-	"include": [
-		"typings/**/*",
-		"src/**/*"
-	],
-	"exclude": [
-		"**/test/**"
-	]
-}
diff --git a/packages/js/settings-editor/tsconfig.json b/packages/js/settings-editor/tsconfig.json
deleted file mode 100644
index a9db81a9a2d..00000000000
--- a/packages/js/settings-editor/tsconfig.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-	"extends": "@woocommerce/internal-ts-config/tsconfig.json",
-	"compilerOptions": {
-		"rootDir": "src",
-		"outDir": "build-module",
-		"declaration": true,
-		"declarationMap": true,
-		"declarationDir": "./build-types",
-		"resolveJsonModule": true,
-		"typeRoots": [
-			"./typings",
-			"./node_modules/@types"
-		],
-		"composite": true
-	},
-	"include": [
-		"typings/**/*",
-		"src/**/*"
-	],
-	"exclude": [
-		"**/test/**"
-	],
-	"references": [
-		{
-			"path": "../components"
-		},
-		{
-			"path": "../navigation"
-		},
-		{
-			"path": "../product-editor"
-		},
-		{
-			"path": "../sanitize"
-		},
-		{
-			"path": "../tracks"
-		}
-	]
-}
diff --git a/packages/js/settings-editor/typings/global.d.ts b/packages/js/settings-editor/typings/global.d.ts
deleted file mode 100644
index 437c6aa8634..00000000000
--- a/packages/js/settings-editor/typings/global.d.ts
+++ /dev/null
@@ -1,140 +0,0 @@
-declare global {
-	interface BaseSettingsField {
-		title?: string;
-		type:
-			| 'text'
-			| 'password'
-			| 'title'
-			| 'multi_select_countries'
-			| 'color'
-			| 'datetime'
-			| 'datetime-local'
-			| 'date'
-			| 'month'
-			| 'time'
-			| 'week'
-			| 'number'
-			| 'email'
-			| 'url'
-			| 'tel'
-			| 'select'
-			| 'radio'
-			| 'relative_date_selector'
-			| 'textarea'
-			| 'sectionend'
-			| 'single_select_page'
-			| 'single_select_page_with_search'
-			| 'single_select_country'
-			| 'slotfill_placeholder';
-		id: string;
-		desc?: string;
-		description?: string;
-		desc_tip?: boolean | string;
-		skip_initial_save?: boolean;
-		default?: string | number | boolean | object;
-		value: string | number | boolean | object;
-		placeholder?: string;
-		custom_attributes?: {
-			[ key: string ]: string | number;
-		};
-		options?: {
-			[ key: string ]: string;
-		};
-		css?: string;
-		class?: string;
-		autoload?: boolean;
-		show_if_checked?: string;
-		content?: string;
-		[ key: string ]: any;
-	}
-
-	interface CustomSettingsField {
-		id: string;
-		type: 'custom';
-		content: string;
-	}
-
-	interface GroupSettingsField {
-		type: 'group';
-		id: string;
-		settings: Exclude< SettingsField, GroupSettingsField >[];
-		label?: string;
-		desc?: string;
-		title?: string;
-	}
-
-	interface CheckboxSettingsField extends BaseSettingsField {
-		type: 'checkbox';
-		checkboxgroup?: 'start' | 'end' | '';
-	}
-
-	interface CheckboxGroupSettingsField {
-		id: string;
-		type: 'checkboxgroup';
-		title: string;
-		settings: CheckboxSettingsField[];
-	}
-
-	interface InfoSettingsField {
-		id: string;
-		title: string;
-		type: 'info';
-		text: string;
-		row_class?: string;
-		css?: string;
-	}
-
-	type SettingsField =
-		| BaseSettingsField
-		| CustomSettingsField
-		| GroupSettingsField
-		| CheckboxGroupSettingsField
-		| CheckboxSettingsField
-		| InfoSettingsField;
-
-	interface SettingsSection {
-		label: string;
-		settings: SettingsField[];
-	}
-
-	interface SettingsPage {
-		label: string;
-		slug: string;
-		icon: string;
-		sections: {
-			[ key: string ]: SettingsSection;
-		};
-		is_modern: boolean;
-		start: CustomSettingsField | null;
-		end: CustomSettingsField | null;
-	}
-
-	interface SettingsPages {
-		[ key: string ]: SettingsPage;
-	}
-
-	interface SettingsData {
-		start: CustomSettingsField | null;
-		pages: SettingsPages;
-		_wpnonce: string;
-	}
-}
-
-declare global {
-	interface Window {
-		wcSettings: {
-			admin: {
-				settingsData: SettingsData;
-				settingsScripts: Record< string, string[] >;
-			};
-		};
-		wcTracks: {
-			isEnabled: boolean;
-			validateEvent: ( name: string, properties: unknown ) => void;
-			recordEvent: ( name: string, properties: unknown ) => void;
-		};
-	}
-}
-
-/*~ If your module exports nothing, you'll need this line. Otherwise, delete it */
-export {};
diff --git a/packages/js/settings-editor/typings/index.d.ts b/packages/js/settings-editor/typings/index.d.ts
deleted file mode 100644
index 4d11d9a97aa..00000000000
--- a/packages/js/settings-editor/typings/index.d.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-declare module '@woocommerce/settings' {
-	export declare function getAdminLink( path: string ): string;
-	export declare function getSetting< T >(
-		name: string,
-		fallback?: unknown,
-		filter = ( val: unknown, fb: unknown ) =>
-			typeof val !== 'undefined' ? val : fb
-	): T;
-	export declare function isWpVersion(
-		version: string,
-		operator: '>' | '>=' | '=' | '<' | '<='
-	): boolean;
-}
diff --git a/packages/js/settings-editor/typings/monorepo-enhancements.d.ts b/packages/js/settings-editor/typings/monorepo-enhancements.d.ts
deleted file mode 100644
index 2000ac9d7b1..00000000000
--- a/packages/js/settings-editor/typings/monorepo-enhancements.d.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import '@woocommerce/internal-ts-config/types/@wordpress/data';
-import '@woocommerce/internal-ts-config/types/@wordpress/core-data';
-import '@woocommerce/internal-ts-config/types/@wordpress/block-editor';
-import '@woocommerce/internal-ts-config/types/@wordpress/editor';
diff --git a/packages/js/settings-editor/webpack.config.js b/packages/js/settings-editor/webpack.config.js
deleted file mode 100644
index fedf05849be..00000000000
--- a/packages/js/settings-editor/webpack.config.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * External dependencies
- */
-const RemoveEmptyScriptsPlugin = require( 'webpack-remove-empty-scripts' );
-const path = require( 'path' );
-
-/**
- * Internal dependencies
- */
-const {
-	webpackConfig,
-	plugin,
-	StyleAssetPlugin,
-	WebpackRTLPlugin,
-} = require( '@woocommerce/internal-style-build' );
-
-const NODE_ENV = process.env.NODE_ENV || 'development';
-
-module.exports = {
-	mode: NODE_ENV,
-	cache: ( process.env.CI && { type: 'memory' } ) || {
-		type: 'filesystem',
-		cacheDirectory: path.resolve(
-			__dirname,
-			'node_modules/.cache/webpack'
-		),
-		buildDependencies: {
-			config: [
-				__filename,
-				path.resolve( __dirname, '../../../pnpm-lock.yaml' ),
-				require.resolve( '@woocommerce/internal-style-build' ),
-			],
-		},
-	},
-	entry: {
-		'build-style': __dirname + '/src/style.scss',
-	},
-	output: {
-		path: __dirname,
-	},
-	module: {
-		parser: webpackConfig.parser,
-		rules: webpackConfig.rules,
-	},
-	plugins: [
-		new RemoveEmptyScriptsPlugin(),
-		new plugin( {
-			filename: ( data ) => {
-				return data.chunk.name.startsWith( '/build/blocks' )
-					? `[name].css`
-					: `[name]/style.css`;
-			},
-			chunkFilename: 'chunks/[id].style.css',
-		} ),
-		new WebpackRTLPlugin(),
-		new StyleAssetPlugin(),
-	],
-};
diff --git a/plugins/woocommerce/changelog/remove-settings-editor-slotfills b/plugins/woocommerce/changelog/remove-settings-editor-slotfills
new file mode 100644
index 00000000000..606799cb05b
--- /dev/null
+++ b/plugins/woocommerce/changelog/remove-settings-editor-slotfills
@@ -0,0 +1,4 @@
+Significance: patch
+Type: dev
+
+Remove the unused settings editor package and related feature flag paths.
diff --git a/plugins/woocommerce/client/admin/client/settings/index.js b/plugins/woocommerce/client/admin/client/settings/index.js
deleted file mode 100644
index fcc32f94adf..00000000000
--- a/plugins/woocommerce/client/admin/client/settings/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- * External dependencies
- */
-import { createRoot } from '@wordpress/element';
-import { SettingsEditor } from '@woocommerce/settings-editor';
-
-/**
- * Internal dependencies
- */
-import './settings.scss';
-
-const node = document.getElementById( 'wc-settings-page' );
-
-createRoot( node ).render( <SettingsEditor /> );
diff --git a/plugins/woocommerce/client/admin/client/settings/settings.scss b/plugins/woocommerce/client/admin/client/settings/settings.scss
deleted file mode 100644
index 666a4a2c73c..00000000000
--- a/plugins/woocommerce/client/admin/client/settings/settings.scss
+++ /dev/null
@@ -1,110 +0,0 @@
-@include wordpress-admin-schemes();
-
-body.woocommerce_page_wc-settings {
-	#wpcontent {
-		margin-left: 0 !important;
-		padding-left: 0 !important;
-	}
-	#wpadminbar,
-	#adminmenumain,
-	#screen-meta-links {
-		display: none;
-	}
-
-	#wc-settings-page #mainform {
-		background: initial;
-	}
-
-	#wpbody {
-		margin-top: 0;
-
-		@media (max-width: 782px) {
-			margin-top: -14px;
-		}
-
-		@media (max-width: 600px) {
-			margin-top: 32px;
-		}
-	}
-
-	#wc-settings-page {
-		// Because this uses negative margins, we have to compensate for the height.
-		margin-top: -32px;
-		min-height: 100vh;
-		position: absolute;
-		top: 0;
-		right: 0;
-		bottom: 0;
-		left: 0;
-		display: flex !important;
-
-		.woocommerce-site-layout {
-			height: 100%;
-			background: $gray-900;
-			color: $gray-400;
-			display: flex;
-			flex-direction: column;
-			flex: 1 1 0;
-			min-height: 100%;
-			height: auto;
-		}
-	}
-
-	.notice {
-		display: none;
-	}
-
-	.woocommerce-site-layout__area {
-		background: #fff;
-		color: #1e1e1e;
-		flex-grow: 1;
-		margin: 0;
-
-		@media (min-width: 782px) {
-			border-radius: 8px;
-			margin: 16px 16px 16px 0;
-		}
-	}
-
-	.woocommerce-site-layout__content {
-		height: 100%;
-		flex-grow: 1;
-		display: flex;
-	}
-
-	.woocommerce-site-layout__sidebar {
-		width: 300px;
-		flex-shrink: 0;
-	}
-
-	.woocommerce-site-page-header {
-		padding: $grid-unit-20 $grid-unit-60;
-		border-bottom: 1px solid $gray-100;
-		background: $white;
-		position: sticky;
-		top: 0;
-		z-index: z-index(".edit-site-page-header");
-
-		@media not (prefers-reduced-motion) {
-			transition: padding ease-out 0.1s;
-		}
-
-		.components-heading {
-			color: $gray-900;
-		}
-
-		.edit-site-page-header__page-title {
-			min-height: $grid-unit-50;
-
-			.components-heading {
-				flex-grow: 1;
-				flex-basis: 0;
-				white-space: nowrap;
-			}
-		}
-
-		.edit-site-page-header__sub-title {
-			margin-bottom: $grid-unit-10;
-		}
-	}
-}
diff --git a/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/container.js b/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/container.js
deleted file mode 100644
index 4e83dab34c6..00000000000
--- a/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/container.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/**
- * External dependencies
- */
-import { __ } from '@wordpress/i18n';
-import { useState, useEffect, useRef } from '@wordpress/element';
-import { Button, Modal, CheckboxControl } from '@wordpress/components';
-import { withDispatch } from '@wordpress/data';
-import { compose } from '@wordpress/compose';
-import { optionsStore } from '@woocommerce/data';
-import { recordEvent } from '@woocommerce/tracks';
-import { initializeExPlat } from '@woocommerce/explat';
-
-const BetaFeaturesTrackingModal = ( { updateOptions } ) => {
-	const [ isModalOpen, setIsModalOpen ] = useState( false );
-	const [ isChecked, setIsChecked ] = useState( false );
-	const enableNavigationCheckbox = useRef(
-		document.querySelector( '#woocommerce_navigation_enabled' )
-	);
-
-	const setTracking = async ( allow ) => {
-		if ( typeof window.wcTracks.enable === 'function' ) {
-			if ( allow ) {
-				window.wcTracks.enable( () => {
-					initializeExPlat();
-				} );
-			} else {
-				window.wcTracks.isEnabled = false;
-			}
-		}
-
-		if ( allow ) {
-			recordEvent( 'settings_features_tracking_enabled' );
-		}
-
-		return updateOptions( {
-			woocommerce_allow_tracking: allow ? 'yes' : 'no',
-		} );
-	};
-
-	useEffect( () => {
-		if ( ! enableNavigationCheckbox.current ) {
-			return;
-		}
-		const listener = ( e ) => {
-			if ( e.target.checked ) {
-				e.target.checked = false;
-				setIsModalOpen( true );
-			}
-		};
-
-		const checkbox = enableNavigationCheckbox.current;
-
-		checkbox.addEventListener( 'change', listener, false );
-
-		return () => checkbox.removeEventListener( 'change', listener );
-	}, [] );
-
-	if ( ! enableNavigationCheckbox.current ) {
-		return null;
-	}
-
-	if ( ! isModalOpen ) {
-		return null;
-	}
-
-	return (
-		<Modal
-			title={ __( 'Build a Better WooCommerce', 'woocommerce' ) }
-			onRequestClose={ () => setIsModalOpen( false ) }
-			className="woocommerce-beta-features-tracking-modal"
-		>
-			<p>
-				{ __(
-					'Testing new features requires sharing non-sensitive data via ',
-					'woocommerce'
-				) }
-				<a href="https://woocommerce.com/usage-tracking?utm_medium=product">
-					{ __( 'usage tracking', 'woocommerce' ) }
-				</a>
-				{ __(
-					'. Gathering usage data allows us to make WooCommerce better — your store will be considered as we evaluate new features, judge the quality of an update, or determine if an improvement makes sense. No personal data is tracked or stored and you can opt-out at any time.',
-					'woocommerce'
-				) }
-			</p>
-			<div className="woocommerce-beta-features-tracking-modal__checkbox">
-				<CheckboxControl
-					label="Enable usage tracking"
-					onChange={ setIsChecked }
-					checked={ isChecked }
-				/>
-			</div>
-			<div className="woocommerce-beta-features-tracking-modal__actions">
-				<Button
-					isPrimary
-					onClick={ async () => {
-						if ( isChecked ) {
-							await setTracking( true );
-							enableNavigationCheckbox.current.checked = true;
-						} else {
-							await setTracking( false );
-						}
-						setIsModalOpen( false );
-					} }
-				>
-					{ __( 'Save', 'woocommerce' ) }
-				</Button>
-			</div>
-		</Modal>
-	);
-};
-
-export const BetaFeaturesTrackingContainer = compose(
-	withDispatch( ( dispatch ) => {
-		const { updateOptions } = dispatch( optionsStore );
-		return { updateOptions };
-	} )
-)( BetaFeaturesTrackingModal );
diff --git a/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/index.js b/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/index.js
deleted file mode 100644
index 1ae8edf77d5..00000000000
--- a/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * External dependencies
- */
-import { createRoot } from '@wordpress/element';
-
-/**
- * Internal dependencies
- */
-import { BetaFeaturesTrackingContainer } from './container';
-import './style.scss';
-
-const betaFeaturesRoot = document.createElement( 'div' );
-
-betaFeaturesRoot.setAttribute( 'id', 'beta-features-tracking' );
-createRoot( document.body.appendChild( betaFeaturesRoot ) ).render(
-	<BetaFeaturesTrackingContainer />
-);
diff --git a/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/style.scss b/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/style.scss
deleted file mode 100644
index c401efa62da..00000000000
--- a/plugins/woocommerce/client/admin/client/wp-admin-scripts/beta-features-tracking-modal/style.scss
+++ /dev/null
@@ -1,12 +0,0 @@
-.woocommerce-beta-features-tracking-modal__actions {
-	text-align: right;
-	margin-top: $gap-large;
-
-	.components-button.is-primary {
-		margin-left: $gap;
-	}
-}
-
-.woocommerce-beta-features-tracking-modal__checkbox {
-	padding: $gap 0;
-}
diff --git a/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/hooks/use-update-banner.ts b/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/hooks/use-update-banner.ts
index be9da517441..82ccf226e42 100644
--- a/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/hooks/use-update-banner.ts
+++ b/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/hooks/use-update-banner.ts
@@ -29,8 +29,6 @@ import {
  * Numeric semver compare. Returns negative if `a < b`, zero if equal, positive
  * if `a > b`. Lightweight implementation — template versions don't carry
  * pre-release / build metadata so we don't need full semver semantics.
- * Mirrors the helper in `settings-email-listing-update-cell.tsx` so the
- * banner and the list cell stay in lockstep.
  */
 function compareTemplateVersions( a: string, b: string ): number {
 	const partsA = a.split( '.' ).map( ( s ) => parseInt( s, 10 ) || 0 );
@@ -243,8 +241,7 @@ export function useUpdateBanner(): UseUpdateBannerResult {
 	// the merchant's stored version is at-or-above the registry's current,
 	// so they've reviewed this release — even if status stays
 	// `core_updated_customized` because they kept some customizations on
-	// purpose during a drawer apply. Hide the indicator; the cell uses
-	// the same check via `currentVersion` on the slotfill payload.
+	// purpose during a drawer apply. Hide the indicator.
 	const summaryShowsReviewed =
 		effectiveSummary !== null &&
 		effectiveSummary.version_from !== '' &&
diff --git a/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/tracks/build-shared-payload.ts b/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/tracks/build-shared-payload.ts
index a5fb09cdf19..1c0ed8ad9e9 100644
--- a/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/tracks/build-shared-payload.ts
+++ b/plugins/woocommerce/client/admin/client/wp-admin-scripts/email-editor-integration/tracks/build-shared-payload.ts
@@ -33,9 +33,8 @@ export type ViewedFrom =
  * should be able to query by any of these regardless of which surface fired
  * the event.
  *
- * Each event adds its own extension fields on top — see the individual call
- * sites (`use-update-banner.ts`, `settings-email-listing-update-cell.tsx`,
- * and the PHP tracker class) for the per-event keys.
+ * Each event adds its own extension fields on top. See the individual call
+ * sites for the per-event keys.
  */
 export interface SharedTracksPayload {
 	email_id: string;
diff --git a/plugins/woocommerce/client/admin/config/core.json b/plugins/woocommerce/client/admin/config/core.json
index e23a9cd8e42..b4cf5e4a387 100644
--- a/plugins/woocommerce/client/admin/config/core.json
+++ b/plugins/woocommerce/client/admin/config/core.json
@@ -31,7 +31,6 @@
 		"remote-free-extensions": true,
 		"payment-gateway-suggestions": true,
 		"printful": true,
-		"settings": false,
 		"shipping-label-banner": true,
 		"subscriptions": true,
 		"store-alerts": true,
diff --git a/plugins/woocommerce/client/admin/config/development.json b/plugins/woocommerce/client/admin/config/development.json
index 309d026dfd8..756db8d4b46 100644
--- a/plugins/woocommerce/client/admin/config/development.json
+++ b/plugins/woocommerce/client/admin/config/development.json
@@ -31,7 +31,6 @@
 		"printful": true,
 		"remote-inbox-notifications": true,
 		"remote-free-extensions": true,
-		"settings": false,
 		"shipping-label-banner": true,
 		"subscriptions": true,
 		"store-alerts": true,
diff --git a/plugins/woocommerce/client/admin/package.json b/plugins/woocommerce/client/admin/package.json
index d905a96880a..1151c5d3e22 100644
--- a/plugins/woocommerce/client/admin/package.json
+++ b/plugins/woocommerce/client/admin/package.json
@@ -71,7 +71,6 @@
 		"@woocommerce/product-editor": "workspace:*",
 		"@woocommerce/remote-logging": "workspace:*",
 		"@woocommerce/sanitize": "workspace:*",
-		"@woocommerce/settings-editor": "workspace:*",
 		"@woocommerce/tracks": "workspace:*",
 		"@wordpress/a11y": "catalog:wp-min",
 		"@wordpress/api-fetch": "catalog:wp-min",
@@ -331,9 +330,6 @@
 				"node_modules/@woocommerce/sanitize/build",
 				"node_modules/@woocommerce/sanitize/build-style",
 				"node_modules/@woocommerce/sanitize/build-types",
-				"node_modules/@woocommerce/settings-editor/build",
-				"node_modules/@woocommerce/settings-editor/build-style",
-				"node_modules/@woocommerce/settings-editor/build-types",
 				"node_modules/@woocommerce/tracks/build",
 				"node_modules/@woocommerce/tracks/build-types",
 				"node_modules/@woocommerce/block-templates/build",
diff --git a/plugins/woocommerce/client/admin/tsconfig.json b/plugins/woocommerce/client/admin/tsconfig.json
index 4fd038cc64d..89d37c8d5a2 100644
--- a/plugins/woocommerce/client/admin/tsconfig.json
+++ b/plugins/woocommerce/client/admin/tsconfig.json
@@ -77,9 +77,6 @@
 		{
 			"path": "../../../../packages/js/sanitize"
 		},
-		{
-			"path": "../../../../packages/js/settings-editor"
-		},
 		{
 			"path": "../../../../packages/js/tracks"
 		}
diff --git a/plugins/woocommerce/client/admin/webpack.config.js b/plugins/woocommerce/client/admin/webpack.config.js
index e98eb13eb42..545415cec91 100644
--- a/plugins/woocommerce/client/admin/webpack.config.js
+++ b/plugins/woocommerce/client/admin/webpack.config.js
@@ -59,7 +59,6 @@ const wcAdminPackages = [
 	'block-templates',
 	'product-editor',
 	'sanitize',
-	'settings-editor',
 	'remote-logging',
 	'email-editor',
 ];
@@ -68,7 +67,6 @@ const getEntryPoints = () => {
 	const entryPoints = {
 		app: './client/index.tsx',
 		embed: './client/embed.tsx',
-		settings: './client/settings/index.js',
 	};
 	wcAdminPackages.forEach( ( name ) => {
 		entryPoints[ name ] = `${ WC_ADMIN_PACKAGES_DIR }/${ name }`;
diff --git a/plugins/woocommerce/includes/admin/class-wc-admin-menus.php b/plugins/woocommerce/includes/admin/class-wc-admin-menus.php
index f6c27cf4d59..edec527db3e 100644
--- a/plugins/woocommerce/includes/admin/class-wc-admin-menus.php
+++ b/plugins/woocommerce/includes/admin/class-wc-admin-menus.php
@@ -6,7 +6,6 @@
  * @version 2.5.0
  */

-use Automattic\WooCommerce\Admin\Features\Features;
 use Automattic\WooCommerce\Internal\Admin\Marketplace;
 use Automattic\WooCommerce\Internal\Admin\Orders\COTRedirectionController;
 use Automattic\WooCommerce\Internal\Admin\Orders\PageController as Custom_Orders_PageController;
@@ -375,11 +374,7 @@ class WC_Admin_Menus {
 	 * @return void
 	 */
 	public function settings_page() {
-		if ( Features::is_enabled( 'settings' ) ) {
-			echo '<div id="wc-settings-page"/>';
-		} else {
-			WC_Admin_Settings::output();
-		}
+		WC_Admin_Settings::output();
 	}

 	/**
diff --git a/plugins/woocommerce/includes/admin/settings/class-wc-settings-page.php b/plugins/woocommerce/includes/admin/settings/class-wc-settings-page.php
index 244747e839e..b72872f0b3e 100644
--- a/plugins/woocommerce/includes/admin/settings/class-wc-settings-page.php
+++ b/plugins/woocommerce/includes/admin/settings/class-wc-settings-page.php
@@ -8,9 +8,6 @@

 declare( strict_types = 1);

-use Automattic\WooCommerce\Admin\Features\Features;
-
-
 if ( ! defined( 'ABSPATH' ) ) {
 	exit; // Exit if accessed directly.
 }
@@ -70,42 +67,6 @@ if ( ! class_exists( 'WC_Settings_Page', false ) ) :
 		const TYPE_RELATIVE_DATE_SELECTOR         = 'relative_date_selector';
 		const TYPE_SLOTFILL_PLACEHOLDER           = 'slotfill_placeholder';

-		/**
-		 * Settings field types which are known.
-		 *
-		 * @var string[]
-		 */
-		protected $types = array(
-			self::TYPE_TITLE,
-			self::TYPE_INFO,
-			self::TYPE_SECTIONEND,
-			self::TYPE_TEXT,
-			self::TYPE_PASSWORD,
-			self::TYPE_DATETIME,
-			self::TYPE_DATETIME_LOCAL,
-			self::TYPE_DATE,
-			self::TYPE_MONTH,
-			self::TYPE_TIME,
-			self::TYPE_WEEK,
-			self::TYPE_NUMBER,
-			self::TYPE_EMAIL,
-			self::TYPE_URL,
-			self::TYPE_TEL,
-			self::TYPE_COLOR,
-			self::TYPE_TEXTAREA,
-			self::TYPE_SELECT,
-			self::TYPE_MULTISELECT,
-			self::TYPE_RADIO,
-			self::TYPE_CHECKBOX,
-			self::TYPE_IMAGE_WIDTH,
-			self::TYPE_SINGLE_SELECT_PAGE,
-			self::TYPE_SINGLE_SELECT_PAGE_WITH_SEARCH,
-			self::TYPE_SINGLE_SELECT_COUNTRY,
-			self::TYPE_MULTI_SELECT_COUNTRIES,
-			self::TYPE_RELATIVE_DATE_SELECTOR,
-			self::TYPE_SLOTFILL_PLACEHOLDER,
-		);
-
 		/**
 		 * Setting page label.
 		 *
@@ -113,20 +74,6 @@ if ( ! class_exists( 'WC_Settings_Page', false ) ) :
 		 */
 		protected $label = '';

-		/**
-		 * Setting page is modern.
-		 *
-		 * @var bool
-		 */
-		protected $is_modern = false;
-
-		/**
-		 * Whether the output method has been called.
-		 *
-		 * @var bool
-		 */
-		private $output_called = false;
-
 		/**
 		 * Constructor.
 		 */
@@ -180,187 +127,6 @@ if ( ! class_exists( 'WC_Settings_Page', false ) ) :
 			return $pages;
 		}

-		/**
-		 * Get page settings data to populate the settings editor.
-		 *
-		 * @param array $pages The settings array where we'll add data.
-		 *
-		 * @return array
-		 */
-		public function add_settings_page_data( $pages ) {
-			global $current_section;
-
-			$saved_current_section = $current_section;
-			$sections              = $this->get_sections();
-			$sections_data         = array();
-
-			// Loop through each section and get the settings for that section.
-			foreach ( $sections as $section_id => $section_label ) {
-				$current_section       = $section_id;
-				$section_settings_data = $this->get_section_settings_data( $section_id, $sections );
-
-				// Replace empty string section ids with 'default'.
-				$normalized_section_id                   = '' === $section_id ? 'default' : $section_id;
-				$sections_data[ $normalized_section_id ] = array(
-					'label'    => html_entity_decode( esc_html( $section_label ) ),
-					'settings' => $section_settings_data,
-				);
-			}
-
-			// Reset the current section to the saved current section.
-			$current_section = $saved_current_section;
-
-			$pages[ $this->id ] = array(
-				'label'     => html_entity_decode( $this->label ),
-				'slug'      => $this->id,
-				'icon'      => $this->icon,
-				'sections'  => $sections_data,
-				'is_modern' => $this->is_modern,
-			);
-
-			$pages[ $this->id ]['start'] = $this->get_custom_view( 'woocommerce_before_settings_' . $this->id );
-			$pages[ $this->id ]['end']   = $this->get_custom_view( 'woocommerce_after_settings_' . $this->id );
-
-			return $pages;
-		}
-
-		/**
-		 * Get settings data for a specific section.
-		 *
-		 * @param string $section_id The ID of the section.
-		 * @param array  $sections   All sections available.
-		 * @return array Settings data for the section.
-		 */
-		protected function get_section_settings_data( $section_id, $sections ) {
-			$section_settings_data = array();
-
-			$custom_view = $this->get_custom_view( 'woocommerce_settings_' . $this->id, $section_id );
-			// We only want to loop through the settings object if the parent class's output method is being rendered during the get_custom_view call.
-			if ( $this->output_called ) {
-				$section_settings = count( $sections ) > 1
-					? $this->get_settings_for_section( $section_id )
-					: $this->get_settings();
-
-				// Loop through each setting in the section and add the value to the settings data.
-				foreach ( $section_settings as $section_setting ) {
-					// Add custom views for sectionend.
-					if ( 'sectionend' === $section_setting['type'] && ! empty( $section_setting['id'] ) ) {
-						$section_settings_data[] = $this->get_custom_view( 'woocommerce_settings_' . $section_setting['id'] . '_end' );
-						$section_settings_data[] = $this->get_custom_view( 'woocommerce_settings_' . $section_setting['id'] . '_after' );
-					}
-
-					$section_settings_data[] = $this->populate_setting_value( $section_setting );
-
-					// Add custom views for title.
-					if ( 'title' === $section_setting['type'] && ! empty( $section_setting['id'] ) ) {
-						$section_settings_data[] = $this->get_custom_view( 'woocommerce_settings_' . $section_setting['id'] );
-					}
-				}
-			}
-
-			// If the custom view has output, add it to the settings data.
-			if ( ! empty( $custom_view ) ) {
-				$section_settings_data[] = $custom_view;
-			}
-
-			// Reset the output_called property.
-			$this->output_called = false;
-
-			return $section_settings_data;
-		}
-
-		/**
-		 * Populate the value for a given section setting.
-		 *
-		 * @param array $section_setting The setting array to populate.
-		 * @return array The setting array with populated value.
-		 */
-		protected function populate_setting_value( $section_setting ) {
-			if ( isset( $section_setting['id'] ) ) {
-				$section_setting['value'] = isset( $section_setting['default'] )
-					// Fallback to the default value if it exists.
-					? get_option( $section_setting['id'], $section_setting['default'] )
-					// Otherwise, fallback to false.
-					: get_option( $section_setting['id'] );
-			}
-
-			$type = $section_setting['type'];
-			if ( ! in_array( $type, $this->types, true ) ) {
-				$section_setting = $this->get_custom_type_field( 'woocommerce_admin_field_' . $type, $section_setting );
-			}
-
-			return $section_setting;
-		}
-
-		/**
-		 * Get the custom view given the current tab and section.
-		 *
-		 * @param string $action The action to call.
-		 * @param string $section_id The section id.
-		 * @return string The custom view. HTML output.
-		 */
-		public function get_custom_view( $action, $section_id = false ) {
-			global $current_section;
-
-			if ( $section_id ) {
-				// Make sure the current section is set to the sectionid here. Reset it at the end of the function.
-				$saved_current_section = $current_section;
-				// set global current_section to the section_id.
-				$current_section = $section_id;
-			}
-
-			ob_start();
-			/**
-			 * Output the custom view given the current tab and section by calling the action.
-			 *
-			 * @since 2.1.0
-			 */
-			do_action( $action );
-			$html = ob_get_contents();
-			ob_end_clean();
-
-			// Reset the global variable.
-			if ( $section_id ) {
-				$current_section = $saved_current_section;
-			}
-
-			$content = trim( $html );
-
-			if ( empty( $content ) ) {
-				return null;
-			}
-
-			return array(
-				'id'      => wp_unique_prefixed_id( 'settings_custom_view' ),
-				'type'    => 'custom',
-				'content' => $content,
-			);
-		}
-
-		/**
-		 * Get the custom type field by calling the action and returning the setting with the content, id, and type.
-		 *
-		 * @param string $action  The action to call.
-		 * @param array  $setting The setting to pass to the action.
-		 * @return array The setting with the content, id, and type.
-		 */
-		public function get_custom_type_field( $action, $setting ) {
-			ob_start();
-			/**
-			 * Output the custom type field by calling the action.
-			 *
-			 * @since 3.3.0
-			 */
-			do_action( $action, $setting );
-			$html = ob_get_contents();
-			ob_end_clean();
-			$setting['content'] = trim( $html );
-			$setting['id']      = isset( $setting['id'] ) ? $setting['id'] : wp_unique_prefixed_id( 'settings_custom_view' );
-			$setting['type']    = 'custom';
-
-			return $setting;
-		}
-
 		/**
 		 * Get settings array for the default section.
 		 *
@@ -497,12 +263,6 @@ if ( ! class_exists( 'WC_Settings_Page', false ) ) :
 		 * Output the HTML for the settings.
 		 */
 		public function output() {
-			$this->output_called = true;
-
-			if ( Features::is_enabled( 'settings' ) ) {
-				return;
-			}
-
 			global $current_section;

 			// We can't use "get_settings_for_section" here
diff --git a/plugins/woocommerce/phpstan-baseline.neon b/plugins/woocommerce/phpstan-baseline.neon
index cb7af06126f..ef06eb24cd2 100644
--- a/plugins/woocommerce/phpstan-baseline.neon
+++ b/plugins/woocommerce/phpstan-baseline.neon
@@ -7548,12 +7548,6 @@ parameters:
 			count: 1
 			path: includes/admin/settings/class-wc-settings-integrations.php

-		-
-			message: '#^Default value of the parameter \#2 \$section_id \(false\) of method WC_Settings_Page\:\:get_custom_view\(\) is incompatible with type string\.$#'
-			identifier: parameter.defaultValue
-			count: 1
-			path: includes/admin/settings/class-wc-settings-page.php
-
 		-
 			message: '#^Method WC_Settings_Page\:\:add_settings_slot\(\) has no return type specified\.$#'
 			identifier: missingType.return
@@ -7566,18 +7560,6 @@ parameters:
 			count: 1
 			path: includes/admin/settings/class-wc-settings-page.php

-		-
-			message: '#^Method WC_Settings_Page\:\:get_custom_view\(\) should return string but returns array\<string, string\>\.$#'
-			identifier: return.type
-			count: 1
-			path: includes/admin/settings/class-wc-settings-page.php
-
-		-
-			message: '#^Method WC_Settings_Page\:\:get_custom_view\(\) should return string but returns null\.$#'
-			identifier: return.type
-			count: 1
-			path: includes/admin/settings/class-wc-settings-page.php
-
 		-
 			message: '#^Method WC_Settings_Page\:\:output\(\) has no return type specified\.$#'
 			identifier: missingType.return
@@ -7602,12 +7584,6 @@ parameters:
 			count: 1
 			path: includes/admin/settings/class-wc-settings-page.php

-		-
-			message: '#^Parameter \#1 \$str of function trim expects string, string\|false given\.$#'
-			identifier: argument.type
-			count: 2
-			path: includes/admin/settings/class-wc-settings-page.php
-
 		-
 			message: '#^Call to an undefined method object\:\:admin_options\(\)\.$#'
 			identifier: method.notFound
@@ -45585,66 +45561,6 @@ parameters:
 			count: 1
 			path: src/Admin/API/SettingOptions.php

-		-
-			message: '#^Call to method get_params\(\) on an unknown class Automattic\\WooCommerce\\Admin\\API\\WP_REST_Request\.$#'
-			identifier: class.notFound
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:register_routes\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_items_permissions_check\(\) has invalid return type Automattic\\WooCommerce\\Admin\\API\\WP_Error\.$#'
-			identifier: class.notFound
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_settings\(\) has invalid return type Automattic\\WooCommerce\\Admin\\API\\WP_Error\.$#'
-			identifier: class.notFound
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_settings\(\) has invalid return type Automattic\\WooCommerce\\Admin\\API\\WP_REST_Response\.$#'
-			identifier: class.notFound
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_settings\(\) should return Automattic\\WooCommerce\\Admin\\API\\WP_Error\|Automattic\\WooCommerce\\Admin\\API\\WP_REST_Response but returns WP_Error\.$#'
-			identifier: return.type
-			count: 2
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_settings\(\) should return Automattic\\WooCommerce\\Admin\\API\\WP_Error\|Automattic\\WooCommerce\\Admin\\API\\WP_REST_Response but returns WP_REST_Response\.$#'
-			identifier: return.type
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^PHPDoc tag @extends has invalid value \(WC_REST_Data_Controller\)\: Unexpected token "\\n ", expected ''\<'' at offset 66 on line 4$#'
-			identifier: phpDoc.parseError
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Parameter \$request of method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_items_permissions_check\(\) has invalid type Automattic\\WooCommerce\\Admin\\API\\WP_REST_Request\.$#'
-			identifier: class.notFound
-			count: 1
-			path: src/Admin/API/Settings.php
-
-		-
-			message: '#^Parameter \$request of method Automattic\\WooCommerce\\Admin\\API\\Settings\:\:save_settings\(\) has invalid type Automattic\\WooCommerce\\Admin\\API\\WP_REST_Request\.$#'
-			identifier: class.notFound
-			count: 1
-			path: src/Admin/API/Settings.php
-
 		-
 			message: '#^Call to method get_param\(\) on an unknown class Automattic\\WooCommerce\\Admin\\API\\WP_REST_Request\.$#'
 			identifier: class.notFound
@@ -46245,30 +46161,12 @@ parameters:
 			count: 1
 			path: src/Admin/Features/Features.php

-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\Features\:\:maybe_disable_features\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/Features/Features.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\Features\:\:maybe_load_beta_features_modal\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/Features/Features.php
-
 		-
 			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\Features\:\:register_internal_class_aliases\(\) has no return type specified\.$#'
 			identifier: missingType.return
 			count: 1
 			path: src/Admin/Features/Features.php

-		-
-			message: '#^Parameter \#3 \$need_translation of static method Automattic\\WooCommerce\\Internal\\Admin\\WCAdminAssets\:\:register_script\(\) expects bool, array\<int, string\> given\.$#'
-			identifier: argument.type
-			count: 1
-			path: src/Admin/Features/Features.php
-
 		-
 			message: '#^Static property Automattic\\WooCommerce\\Admin\\Features\\Features\:\:\$instance \(Automattic\\WooCommerce\\Internal\\Admin\\Loader\) does not accept Automattic\\WooCommerce\\Admin\\Features\\Features\.$#'
 			identifier: assign.propertyType
@@ -47913,42 +47811,6 @@ parameters:
 			count: 1
 			path: src/Admin/Features/ProductDataViews/Init.php

-		-
-			message: '#^Access to an undefined property object\:\:\$ver\.$#'
-			identifier: property.notFound
-			count: 1
-			path: src/Admin/Features/Settings/Init.php
-
-		-
-			message: '#^Constant WPINC not found\.$#'
-			identifier: constant.notFound
-			count: 1
-			path: src/Admin/Features/Settings/Init.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\Settings\\Init\:\:enqueue_settings_editor_scripts\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/Features/Settings/Init.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\Settings\\Init\:\:enqueue_settings_editor_styles\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/Features/Settings/Init.php
-
-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\Settings\\Init\:\:get_instance\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/Features/Settings/Init.php
-
-		-
-			message: '#^Parameter \#1 \$stack of function array_shift expects array, array\|null given\.$#'
-			identifier: argument.type
-			count: 1
-			path: src/Admin/Features/Settings/Transformer.php
-
 		-
 			message: '#^Method Automattic\\WooCommerce\\Admin\\Features\\ShippingPartnerSuggestions\\ShippingPartnerSuggestions\:\:get_specs\(\) has no return type specified\.$#'
 			identifier: missingType.return
@@ -48771,12 +48633,6 @@ parameters:
 			count: 1
 			path: src/Admin/PageController.php

-		-
-			message: '#^Method Automattic\\WooCommerce\\Admin\\PageController\:\:is_modern_settings_page\(\) has no return type specified\.$#'
-			identifier: missingType.return
-			count: 1
-			path: src/Admin/PageController.php
-
 		-
 			message: '#^Method Automattic\\WooCommerce\\Admin\\PageController\:\:is_settings_page\(\) has no return type specified\.$#'
 			identifier: missingType.return
diff --git a/plugins/woocommerce/src/Admin/API/Init.php b/plugins/woocommerce/src/Admin/API/Init.php
index ffb33a0786a..feded8739c7 100644
--- a/plugins/woocommerce/src/Admin/API/Init.php
+++ b/plugins/woocommerce/src/Admin/API/Init.php
@@ -90,7 +90,6 @@ class Init {
 			'Automattic\WooCommerce\Admin\API\MarketingCampaigns',
 			'Automattic\WooCommerce\Admin\API\MarketingCampaignTypes',
 			'Automattic\WooCommerce\Admin\API\Options',
-			'Automattic\WooCommerce\Admin\API\Settings',
 			'Automattic\WooCommerce\Admin\API\PaymentGatewaySuggestions',
 			'Automattic\WooCommerce\Admin\API\Themes',
 			'Automattic\WooCommerce\Admin\API\Plugins',
diff --git a/plugins/woocommerce/src/Admin/API/Settings.php b/plugins/woocommerce/src/Admin/API/Settings.php
deleted file mode 100644
index 69aa9a9621d..00000000000
--- a/plugins/woocommerce/src/Admin/API/Settings.php
+++ /dev/null
@@ -1,167 +0,0 @@
-<?php
-/**
- * REST API Settings Controller
- *
- * Handles requests to save Settings.
- */
-
-declare( strict_types = 1);
-
-namespace Automattic\WooCommerce\Admin\API;
-
-use WC_Admin_Settings;
-use Automattic\WooCommerce\Admin\Features\Settings\Init;
-
-defined( 'ABSPATH' ) || exit;
-
-/**
- * Settings Controller.
- *
- * @extends WC_REST_Data_Controller
- */
-class Settings extends \WC_REST_Data_Controller {
-	/**
-	 * Endpoint namespace.
-	 *
-	 * @var string
-	 */
-	protected $namespace = 'wc-admin';
-
-	/**
-	 * Route base.
-	 *
-	 * @var string
-	 */
-	protected $rest_base = 'legacy-settings';
-
-	/**
-	 * Register routes.
-	 */
-	public function register_routes() {
-		register_rest_route(
-			$this->namespace,
-			'/' . $this->rest_base,
-			array(
-				array(
-					'methods'             => \WP_REST_Server::EDITABLE,
-					'callback'            => array( $this, 'save_settings' ),
-					'permission_callback' => array( $this, 'save_items_permissions_check' ),
-					'args'                => array(
-						'schema' => array( $this, 'save_items_schema' ),
-					),
-				),
-			)
-		);
-	}
-
-	/**
-	 * Check if a given request has access to update settings.
-	 *
-	 * @param  WP_REST_Request $request Full details about the request.
-	 * @return WP_Error|boolean
-	 */
-	public function save_items_permissions_check( $request ) {
-		return current_user_can( 'manage_woocommerce' );
-	}
-
-	/**
-	 * Save settings.
-	 *
-	 * @param WP_REST_Request $request Full details about the request.
-	 * @return WP_Error|WP_REST_Response
-	 */
-	public function save_settings( $request ) {
-		global $current_section, $current_tab;
-
-		// Verify nonce.
-		if ( ! check_ajax_referer( 'wp_rest', false, false ) ) {
-			return new \WP_Error(
-				'woocommerce_settings_invalid_nonce',
-				__( 'Invalid nonce.', 'woocommerce' ),
-				array( 'status' => 403 )
-			);
-		}
-
-		$params = $request->get_params();
-
-		try {
-			// Get current tab/section and set global variables.
-			$current_tab     = empty( $params['tab'] ) ? 'general' : sanitize_title( wp_unslash( $params['tab'] ) ); // WPCS: input var okay, CSRF ok.
-			$current_section = empty( $params['section'] ) ? '' : sanitize_title( wp_unslash( $params['section'] ) ); // WPCS: input var okay, CSRF ok.
-
-			$filter_name = '' === $current_section ?
-			"woocommerce_save_settings_{$current_tab}" :
-			"woocommerce_save_settings_{$current_tab}_{$current_section}";
-
-			/**
-			 * Filters whether to save settings.
-			 *
-			 * @since 3.7.0
-			 *
-			 * @param bool $save Whether to save settings.
-			 */
-			if ( apply_filters( $filter_name, ! empty( $_POST['save'] ) ) ) { // WPCS: input var okay, CSRF ok.
-				WC_Admin_Settings::save();
-			}
-
-			$setting_pages = \WC_Admin_Settings::get_settings_pages();
-
-			// Reinitialize all setting pages in case behavior is dependent on saved values.
-			foreach ( $setting_pages as $key => $setting_page ) {
-				$class_name            = get_class( $setting_page );
-				$setting_pages[ $key ] = new $class_name();
-			}
-
-			$data = Init::get_page_data( array(), $setting_pages );
-
-			return new \WP_REST_Response(
-				array(
-					'status' => 'success',
-					'data'   => $data,
-				)
-			);
-		} catch ( \Exception $e ) {
-			return new \WP_Error(
-				'woocommerce_settings_save_error',
-				// translators: %s: error message.
-				sprintf( __( 'Failed to save settings: %s', 'woocommerce' ), $e->getMessage() ),
-				array( 'status' => 500 )
-			);
-		}
-	}
-
-	/**
-	 * Get the schema, conforming to JSON Schema.
-	 *
-	 * @return array
-	 */
-	public function save_items_schema() {
-		$schema = array(
-			'$schema'    => 'http://json-schema.org/draft-04/schema#',
-			'title'      => 'options',
-			'type'       => 'object',
-			'properties' => array(
-				'options' => array(
-					'type'        => 'array',
-					'description' => __( 'Array of options with associated values.', 'woocommerce' ),
-					'context'     => array( 'view' ),
-					'readonly'    => true,
-				),
-				'tab'     => array(
-					'type'        => 'string',
-					'description' => __( 'Settings tab.', 'woocommerce' ),
-					'context'     => array( 'view', 'edit' ),
-					'default'     => 'general',
-				),
-				'section' => array(
-					'type'        => 'string',
-					'description' => __( 'Settings section.', 'woocommerce' ),
-					'context'     => array( 'view', 'edit' ),
-					'default'     => '',
-				),
-			),
-		);
-
-		return $schema;
-	}
-}
diff --git a/plugins/woocommerce/src/Admin/Features/Features.php b/plugins/woocommerce/src/Admin/Features/Features.php
index 87458ed0326..1f5ecf72fdb 100644
--- a/plugins/woocommerce/src/Admin/Features/Features.php
+++ b/plugins/woocommerce/src/Admin/Features/Features.php
@@ -31,15 +31,6 @@ class Features {
 		'remote-inbox-notifications' => array( 'default' => 'yes' ),
 	);

-	/**
-	 * Beta features
-	 *
-	 * @var array
-	 */
-	protected static $beta_features = array(
-		'settings',
-	);
-
 	/**
 	 * Get class instance.
 	 */
@@ -63,10 +54,8 @@ class Features {

 		// Load feature before WooCommerce update hooks.
 		add_action( 'init', array( __CLASS__, 'load_features' ), 4 );
-		add_action( 'admin_enqueue_scripts', array( __CLASS__, 'maybe_load_beta_features_modal' ) );
 		add_action( 'admin_enqueue_scripts', array( __CLASS__, 'load_scripts' ), 15 );
 		add_filter( 'admin_body_class', array( __CLASS__, 'add_admin_body_classes' ) );
-		add_filter( 'update_option_woocommerce_allow_tracking', array( __CLASS__, 'maybe_disable_features' ), 10, 2 );
 	}

 	/**
@@ -245,22 +234,6 @@ class Features {
 		return false;
 	}

-	/**
-	 * Disable features when opting out of tracking.
-	 *
-	 * @param string $old_value Old value.
-	 * @param string $value New value.
-	 */
-	public static function maybe_disable_features( $old_value, $value ) {
-		if ( 'yes' === $value ) {
-			return;
-		}
-
-		foreach ( self::$beta_features as $feature ) {
-			self::disable( $feature );
-		}
-	}
-
 	/**
 	 * Adds the Features section to the advanced tab of WooCommerce Settings
 	 *
@@ -286,33 +259,6 @@ class Features {
 		return $settings;
 	}

-	/**
-	 * Conditionally loads the beta features tracking modal.
-	 *
-	 * @param string $hook Page hook.
-	 */
-	public static function maybe_load_beta_features_modal( $hook ) {
-		if (
-			'woocommerce_page_wc-settings' !== $hook ||
-			! isset( $_GET['tab'] ) || 'advanced' !== $_GET['tab'] || // phpcs:ignore CSRF ok.
-			! isset( $_GET['section'] ) || 'features' !== $_GET['section'] // phpcs:ignore CSRF ok.
-		) {
-			return;
-		}
-		$tracking_enabled = get_option( 'woocommerce_allow_tracking', 'no' );
-
-		if ( empty( self::$beta_features ) ) {
-			return;
-		}
-
-		if ( 'yes' === $tracking_enabled ) {
-			return;
-		}
-
-		WCAdminAssets::register_style( 'beta-features-tracking-modal', 'style', array( 'wp-components' ) );
-		WCAdminAssets::register_script( 'wp-admin-scripts', 'beta-features-tracking-modal', array( 'wp-i18n', 'wp-element', WC_ADMIN_APP ) );
-	}
-
 	/**
 	 * Loads the required scripts on the correct pages.
 	 */
diff --git a/plugins/woocommerce/src/Admin/Features/LaunchYourStore.php b/plugins/woocommerce/src/Admin/Features/LaunchYourStore.php
index 962150f869a..1eb53036c8a 100644
--- a/plugins/woocommerce/src/Admin/Features/LaunchYourStore.php
+++ b/plugins/woocommerce/src/Admin/Features/LaunchYourStore.php
@@ -36,9 +36,7 @@ class LaunchYourStore {
 	 */
 	public function save_site_visibility_options() {
 		$nonce = isset( $_REQUEST['_wpnonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ) : '';
-		// New Settings API uses wp_rest nonce.
-		$nonce_string = Features::is_enabled( 'settings' ) ? 'wp_rest' : 'woocommerce-settings';
-		if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, $nonce_string ) ) {
+		if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, 'woocommerce-settings' ) ) {
 			return;
 		}

diff --git a/plugins/woocommerce/src/Admin/Features/Settings/Init.php b/plugins/woocommerce/src/Admin/Features/Settings/Init.php
deleted file mode 100644
index 4922f840911..00000000000
--- a/plugins/woocommerce/src/Admin/Features/Settings/Init.php
+++ /dev/null
@@ -1,229 +0,0 @@
-<?php
-/**
- * WooCommerce Settings.
- */
-
-declare( strict_types = 1 );
-
-namespace Automattic\WooCommerce\Admin\Features\Settings;
-
-use Automattic\WooCommerce\Internal\Admin\WCAdminAssets;
-
-/**
- * Contains backend logic for the Settings feature.
- */
-class Init {
-	/**
-	 * Class instance.
-	 *
-	 * @var Init instance
-	 */
-	protected static $instance = null;
-
-	/**
-	 * Get class instance.
-	 */
-	public static function get_instance() {
-		if ( ! self::$instance ) {
-			self::$instance = new self();
-		}
-		return self::$instance;
-	}
-
-	/**
-	 * Hook into WooCommerce.
-	 */
-	public function __construct() {
-		if ( ! is_admin() ) {
-			return;
-		}
-
-		add_filter( 'woocommerce_admin_shared_settings', array( __CLASS__, 'add_component_settings' ) );
-		add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_settings_editor_scripts' ) );
-		add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_settings_editor_styles' ) );
-	}
-
-	/**
-	 * Check if the current screen is the WooCommerce settings page.
-	 *
-	 * @return bool
-	 */
-	public function is_settings_page() {
-		$screen = get_current_screen();
-		return $screen && 'woocommerce_page_wc-settings' === $screen->id;
-	}
-
-	/**
-	 * Enqueue styles for the settings editor.
-	 */
-	public function enqueue_settings_editor_styles() {
-		if ( ! self::get_instance()->is_settings_page() ) {
-			return;
-		}
-
-		$style_name            = 'wc-admin-edit-settings';
-		$style_path_name       = 'settings';
-		$style_assets_filename = WCAdminAssets::get_script_asset_filename( $style_path_name, 'style' );
-		$style_assets          = require WC_ADMIN_ABSPATH . WC_ADMIN_DIST_JS_FOLDER . $style_path_name . '/' . $style_assets_filename;
-
-		// Settings Editor styles.
-		wp_register_style(
-			$style_name,
-			WCAdminAssets::get_url( $style_path_name . '/style', 'css' ),
-			// Manually set dependencies for now, because the asset file is not being generated correctly.
-			// See plugins/woocommerce/assets/client/admin/settings-editor/style.asset.php. Should be: `isset( $style_assets['dependencies'] ) ? $style_assets['dependencies'] : array(),`.
-			array( 'wp-components', 'wc-components' ),
-			WCAdminAssets::get_file_version( 'css', $style_assets['version'] ),
-		);
-
-		wp_enqueue_style( $style_name );
-
-		// Global presets styles.
-		wp_register_style( 'wc-global-presets', false ); // phpcs:ignore
-		wp_add_inline_style( 'wc-global-presets', wp_get_global_stylesheet( array( 'presets' ) ) );
-		wp_enqueue_style( 'wc-global-presets' );
-	}
-
-	/**
-	 * Enqueue scripts for the settings editor.
-	 */
-	public function enqueue_settings_editor_scripts() {
-		if ( ! self::get_instance()->is_settings_page() ) {
-			return;
-		}
-
-		// Make sure the Settings Editor package is loaded.
-		wp_enqueue_script( 'wc-settings-editor' );
-		wp_enqueue_style( 'wc-settings-editor' );
-
-		$script_name            = 'wc-admin-edit-settings';
-		$script_path_name       = 'settings';
-		$script_assets_filename = WCAdminAssets::get_script_asset_filename( $script_path_name, 'index' );
-		$script_assets          = require WC_ADMIN_ABSPATH . WC_ADMIN_DIST_JS_FOLDER . $script_path_name . '/' . $script_assets_filename;
-
-		wp_enqueue_script(
-			$script_name,
-			WCAdminAssets::get_url( $script_path_name . '/index', 'js' ),
-			$script_assets['dependencies'],
-			WCAdminAssets::get_file_version( 'js', $script_assets['version'] ),
-			true
-		);
-
-		wp_set_script_translations( 'wc-admin-' . $script_name, 'woocommerce' );
-	}
-
-	/**
-	 * Add the necessary data to initially load the WooCommerce Settings pages.
-	 *
-	 * @param array $settings Array of component settings.
-	 * @return array Array of component settings.
-	 */
-	public static function add_component_settings( $settings ) {
-		if ( ! self::get_instance()->is_settings_page() ) {
-			return $settings;
-		}
-
-		global $wp_scripts;
-
-		// Set the scripts that all settings pages should have.
-		$ignored_settings_scripts                = array(
-			'wc-admin-app',
-			'woocommerce_admin',
-			'wc-settings-editor',
-			'wc-admin-edit-settings',
-			'woo-tracks',
-			'woocommerce-admin-test-helper',
-			'woocommerce-beta-tester-live-branches',
-			'WCPAY_DASH_APP',
-		);
-		$default_scripts_handles                 = array_diff(
-			$wp_scripts->queue,
-			$ignored_settings_scripts,
-		);
-		$settings['settingsScripts']['_default'] = self::get_script_urls( $default_scripts_handles );
-
-		// Add the settings data to the settings array.
-		$setting_pages = \WC_Admin_Settings::get_settings_pages();
-		$settings      = self::get_page_data( $settings, $setting_pages );
-
-		return $settings;
-	}
-
-	/**
-	 * Get the page data for the settings editor.
-	 *
-	 * @param array $settings The settings array.
-	 * @param array $setting_pages The setting pages.
-	 * @return array The settings array.
-	 */
-	public static function get_page_data( $settings, $setting_pages ) {
-		global $wp_scripts;
-		/**
-		 * Filters the settings tabs array.
-		 *
-		 * @since 2.5.0
-		 *
-		 * @param array $available_pages The available pages.
-		 */
-		$available_pages = apply_filters( 'woocommerce_settings_tabs_array', array() );
-		$pages           = array();
-
-		foreach ( $setting_pages as $setting_page ) {
-			// If any page has removed itself from the tabs array, avoid adding this page to the settings editor.
-			if ( ! in_array( $setting_page->get_id(), array_keys( $available_pages ), true ) ) {
-				continue;
-			}
-
-			$scripts_before_adding_settings = $wp_scripts->queue;
-			$pages                          = $setting_page->add_settings_page_data( $pages );
-			$settings_scripts_handles       = array_diff( $wp_scripts->queue, $scripts_before_adding_settings );
-			$settings['settingsScripts'][ $setting_page->get_id() ] = self::get_script_urls( $settings_scripts_handles );
-		}
-
-		$transformer                          = new Transformer();
-		$settings['settingsData']['pages']    = $transformer->transform( $pages );
-		$settings['settingsData']['start']    = $setting_pages[0]->get_custom_view( 'woocommerce_settings_start' );
-		$settings['settingsData']['_wpnonce'] = wp_create_nonce( 'wp_rest' );
-
-		return $settings;
-	}
-
-	/**
-	 * Retrieve the script URLs from the provided script handles.
-	 * This will also filter out scripts from WordPress core since they only need to be loaded once.
-	 *
-	 * @param array $script_handles Array of script handles.
-	 * @return array Array of script URLs.
-	 */
-	private static function get_script_urls( $script_handles ) {
-		global $wp_scripts;
-		$script_urls = array();
-		foreach ( $script_handles as $script ) {
-			$registered_script = $wp_scripts->registered[ $script ];
-			if ( ! isset( $registered_script->src ) ) {
-				continue;
-			}
-
-			// Skip scripts from WordPress core since they only need to be loaded once.
-			if ( strpos( $registered_script->src, '/' . WPINC . '/js' ) === 0 || strpos( $registered_script->src, '/wp-admin/js' ) === 0 ) {
-				continue;
-			}
-
-			$src = $registered_script->src;
-			$ver = $registered_script->ver ? $registered_script->ver : false;
-
-			// Add version query parameter.
-			if ( $ver ) {
-				$src = add_query_arg( 'ver', $ver, $src );
-			}
-
-			// Add home URL if the src is a relative path.
-			if ( strpos( $src, '/' ) === 0 ) {
-				$script_urls[] = home_url( $src );
-			} else {
-				$script_urls[] = $src;
-			}
-		}
-		return $script_urls;
-	}
-}
diff --git a/plugins/woocommerce/src/Admin/Features/Settings/Transformer.php b/plugins/woocommerce/src/Admin/Features/Settings/Transformer.php
deleted file mode 100644
index c8fb4459af5..00000000000
--- a/plugins/woocommerce/src/Admin/Features/Settings/Transformer.php
+++ /dev/null
@@ -1,341 +0,0 @@
-<?php
-/**
- * WooCommerce Settings Data Transformer.
- */
-
-declare( strict_types = 1 );
-
-namespace Automattic\WooCommerce\Admin\Features\Settings;
-
-/**
- * Transforms WooCommerce settings data into a structured format with logical groupings.
- */
-class Transformer {
-	/**
-	 * Current group being processed.
-	 *
-	 * @var array|null
-	 */
-	private ?array $current_group = null;
-
-	/**
-	 * Current checkbox group being processed.
-	 *
-	 * @var array|null
-	 */
-	private ?array $current_checkbox_group = null;
-
-	/**
-	 * Transform settings data.
-	 *
-	 * @param array $raw_settings Raw settings data.
-	 *
-	 * @return array Transformed settings data.
-	 */
-	public function transform( array $raw_settings ): array {
-		$transformed = array();
-
-		foreach ( $raw_settings as $tab_id => $tab ) {
-			// If the tab doesn't have sections, or the sections aren't an array, skip it.
-			if ( ! isset( $tab['sections'] ) || ! is_array( $tab['sections'] ) ) {
-				$transformed[ $tab_id ] = $tab;
-				continue;
-			}
-
-			$transformed[ $tab_id ]             = $tab;
-			$transformed[ $tab_id ]['sections'] = $this->transform_sections( $tab['sections'] );
-		}
-
-		return $transformed;
-	}
-
-	/**
-	 * Transform sections within a tab.
-	 *
-	 * @param array $sections Sections to transform.
-	 *
-	 * @return array Transformed sections.
-	 */
-	private function transform_sections( array $sections ): array {
-		$transformed_sections = array();
-
-		foreach ( $sections as $section_id => $section ) {
-			// If the section doesn't have settings, or the settings aren't an array, skip it.
-			if ( ! isset( $section['settings'] ) || ! is_array( $section['settings'] ) ) {
-				$transformed_sections[ $section_id ] = $section;
-				continue;
-			}
-
-			$transformed_sections[ $section_id ]             = $section;
-			$transformed_sections[ $section_id ]['settings'] = $this->transform_section_settings( $section['settings'] );
-		}
-
-		return $transformed_sections;
-	}
-
-	/**
-	 * Transform settings within a section.
-	 *
-	 * @param array $settings Settings to transform.
-	 *
-	 * @return array Transformed settings.
-	 */
-	private function transform_section_settings( array $settings ): array {
-		$this->reset_state();
-		$transformed_settings = array();
-
-		foreach ( $settings as $setting ) {
-			$this->process_setting( $setting, $transformed_settings );
-		}
-		$this->finalize_transformation( $transformed_settings );
-
-		return $transformed_settings;
-	}
-
-	/**
-	 * Process individual setting.
-	 *
-	 * @param array $setting Setting to process.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function process_setting( ?array $setting, array &$transformed_settings ): void {
-		if ( ! isset( $setting ) ) {
-			return;
-		}
-
-		$type = $setting['type'] ?? '';
-
-		if ( $this->current_checkbox_group && 'checkbox' !== $type ) {
-			// It's expected that a checkbox group will always be closed before a non-checkbox setting.
-			// If not, it's likely a checkbox group was not closed properly so we flush the current checkbox group and add the setting as-is.
-			$this->flush_current_checkbox_group();
-		}
-
-		switch ( $type ) {
-			case 'title':
-				$this->handle_group_start( $setting, $transformed_settings );
-				break;
-
-			case 'sectionend':
-				$this->handle_group_end( $setting, $transformed_settings );
-				break;
-
-			case 'checkbox':
-				$this->handle_checkbox_setting( $setting, $transformed_settings );
-				break;
-
-			case 'info':
-				if ( ! empty( $setting['text'] ) ) {
-					$setting['text'] = wp_kses_post( wpautop( wptexturize( $setting['text'] ) ) );
-				}
-				if ( ! empty( $setting['row_class'] ) && substr( $setting['row_class'], 0, 16 ) !== 'wc-settings-row-' ) {
-					$setting['row_class'] = 'wc-settings-row-' . $setting['row_class'];
-				}
-
-				$this->add_setting( $setting, $transformed_settings );
-				break;
-
-			default:
-				$this->add_setting( $setting, $transformed_settings );
-				break;
-		}
-	}
-
-	/**
-	 * Handle the start of a new group.
-	 *
-	 * @param array $setting Setting to add.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function handle_group_start( array $setting, array &$transformed_settings ): void {
-		// If we already have a group, flush it to settings before starting a new one.
-		if ( $this->current_group ) {
-			$this->flush_current_group( $transformed_settings );
-		}
-
-		$this->current_group = array( $setting );
-	}
-
-	/**
-	 * Handle the end of a group.
-	 *
-	 * @param array $setting Setting to add.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function handle_group_end( array $setting, array &$transformed_settings ): void {
-		$ids_match = $this->current_group &&
-			isset( $this->current_group[0]['id'] ) &&
-			isset( $setting['id'] ) &&
-			$this->current_group[0]['id'] === $setting['id'];
-
-		$ids_match_undefined = $this->current_group &&
-			! isset( $this->current_group[0]['id'] ) &&
-			! isset( $setting['id'] );
-
-		// If IDs match, add the group and close it.
-		if ( $ids_match || $ids_match_undefined ) {
-			// Compose the group setting.
-			$title_setting       = array_shift( $this->current_group );
-			$title_setting['id'] = $title_setting['id'] ?? wp_unique_prefixed_id( 'setting_group' );
-
-			$transformed_settings[] = array_merge(
-				$title_setting,
-				array(
-					'type'     => 'group',
-					'settings' => $this->current_group,
-				)
-			);
-			$this->current_group    = null;
-			return;
-		}
-
-		// If IDs don't match, we don't need to transform anything so flush the current group.
-		$this->flush_current_group( $transformed_settings );
-		$this->add_setting( $setting, $transformed_settings );
-	}
-
-	/**
-	 * Flush current group to transformed settings.
-	 *
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function flush_current_group( array &$transformed_settings ): void {
-		if ( is_array( $this->current_group ) && ! empty( $this->current_group ) ) {
-			$this->current_group[0]['id'] = $this->current_group[0]['id'] ?? wp_unique_prefixed_id( 'setting_title' );
-			$transformed_settings         = array_merge( $transformed_settings, $this->current_group );
-		}
-
-		$this->current_group = null;
-	}
-
-	/**
-	 * Handle checkbox setting and grouping.
-	 *
-	 * @param array $setting Setting to add.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function handle_checkbox_setting( array $setting, array &$transformed_settings ): void {
-		$checkboxgroup = $setting['checkboxgroup'] ?? '';
-
-		switch ( $checkboxgroup ) {
-			case 'start':
-				$this->start_checkbox_group( $setting );
-				break;
-
-			case 'end':
-				$this->end_checkbox_group( $setting, $transformed_settings );
-				break;
-
-			default:
-				$this->handle_checkbox_group_item( $setting, $transformed_settings );
-				break;
-		}
-	}
-
-	/**
-	 * Start a new checkbox group.
-	 *
-	 * @param array $setting Setting to add.
-	 */
-	private function start_checkbox_group( array $setting ): void {
-		// If we already have an open checkbox group, flush it to settings before starting a new one.
-		if ( is_array( $this->current_checkbox_group ) ) {
-			$this->flush_current_checkbox_group();
-		}
-
-		$this->current_checkbox_group = array( $setting );
-	}
-
-	/**
-	 * End current checkbox group.
-	 *
-	 * @param array $setting Setting to add.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function end_checkbox_group( array $setting, array &$transformed_settings ): void {
-		if ( empty( $this->current_checkbox_group ) ) {
-			// If we don't have an open checkbox group, add the setting as-is.
-			$this->add_setting( $setting, $transformed_settings );
-			return;
-		}
-
-		$this->current_checkbox_group[] = $setting;
-		$first_setting                  = $this->current_checkbox_group[0];
-
-		$checkbox_group_setting = array(
-			'id'       => wp_unique_prefixed_id( 'setting_checkboxgroup' ),
-			'type'     => 'checkboxgroup',
-			'title'    => $first_setting['title'] ?? '',
-			'settings' => $this->current_checkbox_group,
-		);
-
-		$this->add_setting( $checkbox_group_setting, $transformed_settings );
-		$this->current_checkbox_group = null;
-	}
-
-	/**
-	 * Handle checkbox within a group.
-	 *
-	 * @param array $setting Setting to add.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function handle_checkbox_group_item( array $setting, array &$transformed_settings ): void {
-		if ( is_array( $this->current_checkbox_group ) ) {
-			$this->current_checkbox_group[] = $setting;
-			return;
-		}
-
-		// If we don't have an open checkbox group, add the setting as-is.
-		$this->add_setting( $setting, $transformed_settings );
-	}
-
-	/**
-	 * Flush current checkbox group to transformed settings.
-	 */
-	private function flush_current_checkbox_group(): void {
-		if ( is_array( $this->current_checkbox_group ) ) {
-			if ( is_array( $this->current_group ) ) {
-				$this->current_group = array_merge( $this->current_group, $this->current_checkbox_group );
-			} else {
-				$this->current_group = $this->current_checkbox_group;
-			}
-
-			$this->current_checkbox_group = null;
-		}
-	}
-
-	/**
-	 * Add setting to current context (group or root).
-	 *
-	 * @param array $setting Setting to add.
-	 * @param array $transformed_settings Transformed settings array.
-	 */
-	private function add_setting( array $setting, array &$transformed_settings ): void {
-		$setting['id'] = $setting['id'] ?? wp_unique_prefixed_id( 'setting_field' );
-
-		if ( is_array( $this->current_group ) ) {
-			$this->current_group[] = $setting;
-			return;
-		}
-
-		$transformed_settings[] = $setting;
-	}
-
-	/**
-	 * Finalize the transformation process.
-	 *
-	 * @param array &$transformed_settings Transformed settings array.
-	 */
-	private function finalize_transformation( array &$transformed_settings ): void {
-		$this->flush_current_checkbox_group();
-		$this->flush_current_group( $transformed_settings );
-	}
-
-	/**
-	 * Reset the state to its initial values.
-	 */
-	public function reset_state(): void {
-		$this->current_group          = null;
-		$this->current_checkbox_group = null;
-	}
-}
diff --git a/plugins/woocommerce/src/Admin/PageController.php b/plugins/woocommerce/src/Admin/PageController.php
index 0a05f4535a5..318439ebf3d 100644
--- a/plugins/woocommerce/src/Admin/PageController.php
+++ b/plugins/woocommerce/src/Admin/PageController.php
@@ -6,7 +6,6 @@
 namespace Automattic\WooCommerce\Admin;

 use Automattic\WooCommerce\Internal\Admin\Loader;
-use Automattic\WooCommerce\Admin\Features\Features;

 use WC_Gateway_BACS;
 use WC_Gateway_Cheque;
@@ -612,13 +611,6 @@ class PageController {
 		return wc_admin_is_connected_page();
 	}

-	/**
-	 * Returns true if we are on a modern settings page.
-	 */
-	public static function is_modern_settings_page() {
-		return self::is_settings_page() && Features::is_enabled( 'settings' );
-	}
-
 	/**
 	 * Redirect payment tasks to the settings page.
 	 *
diff --git a/plugins/woocommerce/src/Internal/Admin/Loader.php b/plugins/woocommerce/src/Internal/Admin/Loader.php
index 520b21d0f6e..bad44c69243 100644
--- a/plugins/woocommerce/src/Internal/Admin/Loader.php
+++ b/plugins/woocommerce/src/Internal/Admin/Loader.php
@@ -122,10 +122,6 @@ class Loader {
 			return;
 		}

-		if ( PageController::is_modern_settings_page() ) {
-			return;
-		}
-
 		$sections = self::get_embed_breadcrumbs();
 		$sections = is_array( $sections ) ? $sections : array( $sections );

@@ -164,7 +160,7 @@ class Loader {
 	 * @param string $admin_body_class Body class to add.
 	 */
 	public static function add_admin_body_classes( $admin_body_class = '' ) {
-		if ( ! PageController::is_admin_or_embed_page() || PageController::is_modern_settings_page() ) {
+		if ( ! PageController::is_admin_or_embed_page() ) {
 			return $admin_body_class;
 		}

diff --git a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php
index 6754f131b96..b50685cac45 100644
--- a/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php
+++ b/plugins/woocommerce/src/Internal/Admin/WCAdminAssets.php
@@ -243,10 +243,8 @@ class WCAdminAssets {
 			return;
 		}

-		if ( ! PageController::is_modern_settings_page() ) {
-			wp_enqueue_script( WC_ADMIN_APP );
-			wp_enqueue_style( WC_ADMIN_APP );
-		}
+		wp_enqueue_script( WC_ADMIN_APP );
+		wp_enqueue_style( WC_ADMIN_APP );

 		wp_enqueue_style( 'wc-material-icons' );
 		wp_enqueue_style( 'wc-onboarding' );
@@ -324,7 +322,6 @@ class WCAdminAssets {
 			'wc-block-templates',
 			'wc-experimental-products-app',
 			'wc-product-editor',
-			'wc-settings-editor',
 			'wc-remote-logging',
 			'wc-sanitize',
 		);
@@ -402,9 +399,6 @@ class WCAdminAssets {
 			array(
 				'handle' => 'wc-product-editor',
 			),
-			array(
-				'handle' => 'wc-settings-editor',
-			),
 			array(
 				'handle' => 'wc-customer-effort-score',
 			),
diff --git a/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-migration-test.php b/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-migration-test.php
deleted file mode 100644
index 9abb66b09a1..00000000000
--- a/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-migration-test.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/**
- * Class WC_Settings_Example file.
- *
- * @package WooCommerce\Tests\Settings
- */
-
-declare(strict_types=1);
-
-/**
- * Helper class to test base functionality of WC_Settings_Page.
- */
-class WC_Settings_Migration_Test extends WC_Settings_Page {
-	// phpcs:disable Squiz.Commenting.FunctionComment.Missing
-
-	public function __construct() {
-		$this->id    = 'migration';
-		$this->label = 'Migration Test';
-		parent::__construct();
-
-		add_action( 'woocommerce_admin_field_foobar_section_custom_type_field', array( $this, 'foobar_section_custom_type_field' ) );
-	}
-
-	protected function get_settings_for_default_section() {
-		return array(
-			array(
-				'title' => 'Default Section',
-				'type'  => 'text',
-			),
-		);
-	}
-
-	protected function get_settings_for_foobar_section() {
-		return array(
-			array(
-				'title' => 'Foobar Section',
-				'type'  => 'text',
-			),
-			array(
-				'title' => 'Custom Type Field',
-				'type'  => 'foobar_section_custom_type_field',
-			),
-		);
-	}
-
-	protected function get_settings_for_custom_view_with_parent_output_section() {
-		return array(
-			array(
-				'title' => 'Custom View With Parent Output',
-				'type'  => 'text',
-			),
-		);
-	}
-
-	protected function get_settings_for_custom_view_without_parent_output_section() {
-		// Expect not to be rendered since it doesn't call parent::output().
-		return array(
-			array(
-				'title' => 'Custom View Without Parent Output',
-				'type'  => 'text',
-			),
-		);
-	}
-
-	protected function get_own_sections() {
-		return array(
-			''                                  => 'Default',
-			'foobar'                            => 'Foobar',
-			'custom_view_with_parent_output'    => 'Custom View With Parent Output',
-			'custom_view_without_parent_output' => 'Custom View Without Parent Output',
-		);
-	}
-
-	public function output() {
-		global $current_section;
-
-		if ( 'custom_view_without_parent_output' === $current_section ) {
-			?>
-			<div>Custom View Without Parent Output</div>
-			<?php
-			return;
-		}
-
-		parent::output();
-
-		if ( 'custom_view_with_parent_output' === $current_section ) {
-			?>
-			<div>Custom View With Parent Output</div>
-			<?php
-			return;
-		}
-	}
-
-	public function foobar_section_custom_type_field( $setting ) {
-		?>
-		<div><?php echo esc_html( $setting['title'] ); ?></div>
-		<?php
-	}
-
-	// phpcs:enable Squiz.Commenting.FunctionComment.Missing
-}
diff --git a/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-page-test.php b/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-page-test.php
index 62d5934fd1a..c24ad15bf2a 100644
--- a/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-page-test.php
+++ b/plugins/woocommerce/tests/php/includes/settings/class-wc-settings-page-test.php
@@ -9,20 +9,11 @@ use Automattic\WooCommerce\Testing\Tools\CodeHacking\Hacks\StaticMockerHack;

 require_once __DIR__ . '/class-wc-settings-example.php';
 require_once __DIR__ . '/class-wc-legacy-settings-example.php';
-require_once __DIR__ . '/class-wc-settings-migration-test.php';

 /**
  * Unit tests for the base functionality of WC_Settings_Page.
  */
 class WC_Settings_Page_Test extends WC_Unit_Test_Case {
-	/**
-	 * Tear down test environment.
-	 */
-	public function tearDown(): void {
-		remove_filter( 'woocommerce_admin_features', array( $this, 'enable_modern_settings' ) );
-		parent::tearDown();
-	}
-
 	/**
 	 * Test for constructor.
 	 */
@@ -344,70 +335,4 @@ HTML;

 		$this->assertEquals( 0, did_action( 'woocommerce_update_options_example_' ) );
 	}
-
-	/**
-	 * Test for add_settings_page_data.
-	 */
-	public function test_add_settings_page_data() {
-		add_filter( 'woocommerce_admin_features', array( $this, 'enable_modern_settings' ) );
-
-		$migration               = new WC_Settings_Migration_Test();
-		$setting_data            = $migration->add_settings_page_data( array() );
-		$migration_page_data     = $setting_data[ $migration->get_id() ];
-		$migration_sections_data = $migration_page_data['sections'];
-
-		$this->assertTrue( isset( $migration_page_data ) );
-		$this->assertEquals( count( $migration->get_sections() ), count( $migration_sections_data ) );
-		$this->assertEquals( $migration_sections_data['default']['settings'][0]['title'], 'Default Section' );
-		$this->assertEquals( $migration_sections_data['foobar']['settings'][0]['title'], 'Foobar Section' );
-	}
-
-	/**
-	 * Test for add_settings_page_data (custom type field).
-	 */
-	public function test_add_settings_page_custom_type_field() {
-		add_filter( 'woocommerce_admin_features', array( $this, 'enable_modern_settings' ) );
-
-		$migration               = new WC_Settings_Migration_Test();
-		$setting_data            = $migration->add_settings_page_data( array() );
-		$migration_page_data     = $setting_data[ $migration->get_id() ];
-		$migration_sections_data = $migration_page_data['sections'];
-
-		$this->assertEquals( $migration_sections_data['foobar']['settings'][1]['content'], '<div>Custom Type Field</div>' );
-	}
-
-	/**
-	 * Test for add_settings_page_data (custom view).
-	 */
-	public function test_add_settings_page_data__custom_view() {
-		add_filter( 'woocommerce_admin_features', array( $this, 'enable_modern_settings' ) );
-
-		$migration               = new WC_Settings_Migration_Test();
-		$setting_data            = $migration->add_settings_page_data( array() );
-		$migration_page_data     = $setting_data[ $migration->get_id() ];
-		$migration_sections_data = $migration_page_data['sections'];
-
-		$this->assertEquals(
-			$migration_sections_data['custom_view_with_parent_output']['settings'][1]['content'],
-			'<div>Custom View With Parent Output</div>',
-			'Custom view should be rendered with other settings'
-		);
-
-		$this->assertEquals(
-			$migration_sections_data['custom_view_without_parent_output']['settings'][0]['content'],
-			'<div>Custom View Without Parent Output</div>',
-			'Custom view should be rendered with no other settings when parent::output is not called'
-		);
-	}
-
-	/**
-	 * Enable settings feature flag.
-	 *
-	 * @param array $features Array of feature flags.
-	 * @return array
-	 */
-	public function enable_modern_settings( $features ) {
-		$features[] = 'settings';
-		return $features;
-	}
 }
diff --git a/plugins/woocommerce/tests/php/src/Admin/Features/Settings/TransformerTest.php b/plugins/woocommerce/tests/php/src/Admin/Features/Settings/TransformerTest.php
deleted file mode 100644
index 6123e3fceb8..00000000000
--- a/plugins/woocommerce/tests/php/src/Admin/Features/Settings/TransformerTest.php
+++ /dev/null
@@ -1,848 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace Automattic\WooCommerce\Tests\Admin\Features\Settings;
-
-use Automattic\WooCommerce\Admin\Features\Settings\Transformer;
-use WC_Unit_Test_Case;
-
-/**
- * Unit tests for Settings Data Transformer.
- *
- * @covers \Automattic\WooCommerce\Admin\Features\Settings\Transformer
- */
-class TransformerTest extends WC_Unit_Test_Case {
-	/**
-	 * Transformer instance.
-	 *
-	 * @var Transformer
-	 */
-	private Transformer $transformer;
-
-	/**
-	 * Set things up before each test case.
-	 *
-	 * @return void
-	 */
-	public function setUp(): void {
-		parent::setUp();
-		$this->transformer = new Transformer();
-	}
-
-	/**
-	 * @dataProvider provide_basic_transformations
-	 * @param array $input Input data.
-	 */
-	public function test_basic_transformations( array $input ): void {
-		$this->assertEquals( $input, $this->transformer->transform( $input ) );
-	}
-
-	/**
-	 * Data provider for basic transformations.
-	 *
-	 * @return array
-	 */
-	public function provide_basic_transformations(): array {
-		return array(
-			'no_sections'    => array(
-				array(
-					'tab1' => array(
-						'label' => 'Tab 1',
-						'icon'  => 'icon1',
-					),
-				),
-			),
-			'empty_sections' => array(
-				array(
-					'tab1' => array(
-						'label'    => 'Tab 1',
-						'sections' => array(),
-					),
-				),
-			),
-		);
-	}
-
-	/**
-	 * Test malformed input structure.
-	 *
-	 * @dataProvider provide_malformed_inputs
-	 * @param array  $input Input data.
-	 * @param string $message Message.
-	 */
-	public function test_malformed_input( array $input, string $message ): void {
-		$this->assertEquals(
-			$input,
-			$this->transformer->transform( $input ),
-			$message
-		);
-	}
-
-	/**
-	 * Data provider for malformed inputs.
-	 *
-	 * @return array
-	 */
-	public function provide_malformed_inputs(): array {
-		return array(
-			'non_array_tab'           => array(
-				array(
-					'tab1' => 'not_an_array',
-				),
-				'Non-array tab should remain unchanged',
-			),
-			'missing_required_fields' => array(
-				array(
-					'tab1' => array(
-						'sections' => 'invalid',
-					),
-				),
-				'Tab missing required fields should remain unchanged',
-			),
-			'invalid_section_format'  => array(
-				array(
-					'tab1' => array(
-						'sections' => array(
-							'section1' => 'not_an_array',
-						),
-					),
-				),
-				'Invalid section format should remain unchanged',
-			),
-			'null_sections'           => array(
-				array(
-					'tab1' => array(
-						'sections' => null,
-					),
-				),
-				'Null sections should remain unchanged',
-			),
-			'null_tab_content'        => array(
-				array(
-					'tab1' => null,
-				),
-				'Null tab content should remain unchanged',
-			),
-		);
-	}
-
-	/**
-	 * Test group grouping.
-	 */
-	public function test_group_grouping(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'id'    => 'group_1',
-								'title' => 'group 1',
-								'desc'  => 'Description 1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting2',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'group_1',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'     => 'group',
-								'id'       => 'group_1',
-								'title'    => 'group 1',
-								'desc'     => 'Description 1',
-								'settings' => array(
-									array(
-										'type' => 'text',
-										'id'   => 'setting1',
-									),
-									array(
-										'type' => 'text',
-										'id'   => 'setting2',
-									),
-								),
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected group to be transformed' );
-	}
-
-
-	/**
-	 * Test group grouping with no ids present.
-	 */
-	public function test_group_grouping_no_ids(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'title' => 'group 1',
-								'desc'  => 'Description 1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting2',
-							),
-							array(
-								'type' => 'sectionend',
-							),
-						),
-					),
-					'section2' => array(
-						'settings' => array(
-							array(
-								'type' => 'title',
-							),
-							array(
-								'type' => 'text',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'     => 'group',
-								'id'       => 'setting_group1',
-								'title'    => 'group 1',
-								'desc'     => 'Description 1',
-								'settings' => array(
-									array(
-										'type' => 'text',
-										'id'   => 'setting1',
-									),
-									array(
-										'type' => 'text',
-										'id'   => 'setting2',
-									),
-								),
-							),
-						),
-					),
-					'section2' => array(
-						'settings' => array(
-							array(
-								'type' => 'title',
-								'id'   => 'setting_title1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting_field1',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected group to be transformed' );
-	}
-
-
-	/**
-	 * Test multiple groups in a section.
-	 */
-	public function test_multiple_groups(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'id'    => 'group_1',
-								'title' => 'group 1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'group_1',
-							),
-							array(
-								'type'  => 'title',
-								'id'    => 'group_2',
-								'title' => 'group 2',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting2',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'group_2',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$transformed = $this->transformer->transform( $input );
-		$settings    = $transformed['tab1']['sections']['section1']['settings'];
-
-		$expected = array(
-			array(
-				'type'     => 'group',
-				'id'       => 'group_1',
-				'title'    => 'group 1',
-				'settings' => array(
-					array(
-						'type' => 'text',
-						'id'   => 'setting1',
-					),
-				),
-			),
-			array(
-				'type'     => 'group',
-				'id'       => 'group_2',
-				'title'    => 'group 2',
-				'settings' => array(
-					array(
-						'type' => 'text',
-						'id'   => 'setting2',
-					),
-				),
-			),
-		);
-
-		$this->assertCount( 2, $settings );
-		$this->assertEquals( $expected, $settings );
-	}
-
-		/**
-		 * Test mixed valid and invalid groups.
-		 */
-	public function test_mixed_valid_and_invalid_groups(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							// Valid group.
-							array(
-								'type'  => 'title',
-								'id'    => 'valid_group',
-								'title' => 'Valid group',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'valid_group',
-							),
-							// Invalid group.
-							array(
-								'type'  => 'title',
-								'id'    => 'invalid_group',
-								'title' => 'Invalid group',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting2',
-							),
-							// No matching sectionend
-							// Valid checkbox group.
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check1',
-								'title'         => 'Valid Group',
-								'checkboxgroup' => 'start',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check2',
-								'checkboxgroup' => 'end',
-							),
-							// Invalid checkbox group.
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check3',
-								'title'         => 'Invalid Group',
-								'checkboxgroup' => 'start',
-							),
-							// No matching end.
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							// Valid group gets transformed.
-							array(
-								'type'     => 'group',
-								'id'       => 'valid_group',
-								'title'    => 'Valid group',
-								'settings' => array(
-									array(
-										'type' => 'text',
-										'id'   => 'setting1',
-									),
-								),
-							),
-							// Invalid group remains untransformed.
-							array(
-								'type'  => 'title',
-								'id'    => 'invalid_group',
-								'title' => 'Invalid group',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting2',
-							),
-							// Valid checkbox group gets transformed.
-							array(
-								'id'       => 'setting_checkboxgroup1',
-								'type'     => 'checkboxgroup',
-								'title'    => 'Valid Group',
-								'settings' => array(
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check1',
-										'title'         => 'Valid Group',
-										'checkboxgroup' => 'start',
-									),
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check2',
-										'checkboxgroup' => 'end',
-									),
-								),
-							),
-							// Invalid checkbox group remains untransformed.
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check3',
-								'title'         => 'Invalid Group',
-								'checkboxgroup' => 'start',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ) );
-	}
-
-	/**
-	 * Test checkbox group transformation.
-	 */
-	public function test_checkbox_group_transformation(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check1',
-								'title'         => 'Checkbox Group',
-								'checkboxgroup' => 'start',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check2',
-								'checkboxgroup' => '',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check3',
-								'checkboxgroup' => 'end',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'id'       => 'setting_checkboxgroup2',
-								'type'     => 'checkboxgroup',
-								'title'    => 'Checkbox Group',
-								'settings' => array(
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check1',
-										'title'         => 'Checkbox Group',
-										'checkboxgroup' => 'start',
-									),
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check2',
-										'checkboxgroup' => '',
-									),
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check3',
-										'checkboxgroup' => 'end',
-									),
-								),
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected checkbox group to be transformed' );
-	}
-
-
-	/**
-	 * Test multiple independent checkboxes.
-	 */
-	public function test_independent_checkboxes(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type' => 'checkbox',
-								'id'   => 'check1',
-							),
-							array(
-								'type' => 'checkbox',
-								'id'   => 'check2',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type' => 'checkbox',
-								'id'   => 'check1',
-							),
-							array(
-								'type' => 'checkbox',
-								'id'   => 'check2',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected independent checkboxes to remain untransformed' );
-	}
-
-	/**
-	 * Test that unmatched title and sectionend are left as is.
-	 */
-	public function test_unmatched_title_and_sectionend(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'id'    => 'group_1',
-								'title' => 'group 1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'different_id', // Mismatched ID.
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'id'    => 'group_1',
-								'title' => 'group 1',
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'different_id',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected unmatched title and sectionend to remain untransformed' );
-	}
-
-	/**
-	 * Test that incomplete checkbox groups are left as is.
-	 */
-	public function test_incomplete_checkbox_group(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check1',
-								'title'         => 'Checkbox 1',
-								'checkboxgroup' => 'start',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check2',
-								'checkboxgroup' => '',
-							),
-							// Missing 'end' checkbox.
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = $input;
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected incomplete checkbox group to remain untransformed' );
-	}
-
-	/**
-	 * Test orphaned end checkbox.
-	 */
-	public function test_orphaned_end_checkbox(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check1',
-								'checkboxgroup' => 'end', // Orphaned end.
-							),
-							array(
-								'type' => 'text',
-								'id'   => 'setting1',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = $input;
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected orphaned end checkbox to remain untransformed' );
-	}
-
-	/**
-	 * Test group with checkbox inside.
-	 */
-	public function test_group_with_checkbox_inside(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'id'    => 'group_1',
-								'title' => 'group 1',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check1',
-								'title'         => 'Checkbox Group',
-								'checkboxgroup' => 'start',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check2',
-								'checkboxgroup' => 'end',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'group_1',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'     => 'group',
-								'id'       => 'group_1',
-								'title'    => 'group 1',
-								'settings' => array(
-									array(
-										'id'       => 'setting_checkboxgroup3',
-										'type'     => 'checkboxgroup',
-										'title'    => 'Checkbox Group',
-										'settings' => array(
-											array(
-												'type'  => 'checkbox',
-												'id'    => 'check1',
-												'title' => 'Checkbox Group',
-												'checkboxgroup' => 'start',
-											),
-											array(
-												'type' => 'checkbox',
-												'id'   => 'check2',
-												'checkboxgroup' => 'end',
-											),
-										),
-									),
-								),
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected nested sectionend and checkboxgroup to be transformed' );
-	}
-
-	/**
-	 * Test group with malformed checkboxgroup inside. The checkbox items should still be included in the group.
-	 */
-	public function test_group_with_malformed_checkboxgroup_inside(): void {
-		$input = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'  => 'title',
-								'id'    => 'group_1',
-								'title' => 'group 1',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check1',
-								'title'         => 'Checkbox Group',
-								'checkboxgroup' => 'start',
-							),
-							array(
-								'type'          => 'checkbox',
-								'id'            => 'check2',
-								// Starting a new group without closing the previous one.
-								'checkboxgroup' => 'start',
-							),
-							array(
-								'type' => 'sectionend',
-								'id'   => 'group_1',
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$expected = array(
-			'tab1' => array(
-				'sections' => array(
-					'section1' => array(
-						'settings' => array(
-							array(
-								'type'     => 'group',
-								'id'       => 'group_1',
-								'title'    => 'group 1',
-								'settings' => array(
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check1',
-										'title'         => 'Checkbox Group',
-										'checkboxgroup' => 'start',
-									),
-									array(
-										'type'          => 'checkbox',
-										'id'            => 'check2',
-										'checkboxgroup' => 'start',
-									),
-								),
-							),
-						),
-					),
-				),
-			),
-		);
-
-		$this->assertEquals( $expected, $this->transformer->transform( $input ), 'Expected nested sectionend and malformed checkboxgroup to be transformed' );
-	}
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b2c03fc1da5..de68d20ca23 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -323,7 +323,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -408,7 +408,7 @@ importers:
         version: 6.43.1-next.v.202604091042.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
+        version: 13.0.1(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
         version: 6.11.0(webpack@5.97.1(@swc/core@1.15.24))
@@ -441,7 +441,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -519,7 +519,7 @@ importers:
         version: 14.14.6(@babel/core@7.25.7)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack-virtual-modules@0.6.2)(webpack@5.97.1)
       '@wordpress/block-library':
         specifier: catalog:wp-min
-        version: 9.19.6(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+        version: 9.19.6(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/blocks':
         specifier: catalog:wp-min
         version: 14.8.2(react@18.3.1)
@@ -748,7 +748,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -1000,7 +1000,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -1688,7 +1688,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -1857,7 +1857,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -2070,7 +2070,7 @@ importers:
         version: 6.43.1-next.v.202604091042.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
+        version: 13.0.1(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
         version: 6.11.0(webpack@5.97.1(@swc/core@1.15.24))
@@ -2562,7 +2562,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -2664,7 +2664,7 @@ importers:
         version: 8.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/editor':
         specifier: catalog:wp-min
-        version: 14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+        version: 14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/element':
         specifier: catalog:wp-min
         version: 6.19.1
@@ -2776,7 +2776,7 @@ importers:
         version: 6.43.1-next.v.202604091042.0
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
+        version: 13.0.1(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
         version: 6.11.0(webpack@5.97.1(@swc/core@1.15.24))
@@ -2815,7 +2815,7 @@ importers:
         version: 5.0.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       ts-jest:
         specifier: 29.1.x
         version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
@@ -2966,235 +2966,6 @@ importers:
         specifier: 0.14.12
         version: 0.14.12

-  packages/js/settings-editor:
-    dependencies:
-      '@automattic/site-admin':
-        specifier: ^0.0.1
-        version: 0.0.1(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(@wordpress/data@10.19.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@types/lodash':
-        specifier: ^4.14.202
-        version: 4.17.24
-      '@types/prop-types':
-        specifier: ^15.7.11
-        version: 15.7.15
-      '@types/wordpress__blocks':
-        specifier: catalog:wp-min
-        version: 12.5.18(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@woocommerce/components':
-        specifier: workspace:*
-        version: link:../components
-      '@woocommerce/navigation':
-        specifier: workspace:*
-        version: link:../navigation
-      '@woocommerce/product-editor':
-        specifier: workspace:*
-        version: link:../product-editor
-      '@woocommerce/sanitize':
-        specifier: workspace:*
-        version: link:../sanitize
-      '@woocommerce/settings':
-        specifier: 1.0.0
-        version: 1.0.0
-      '@woocommerce/tracks':
-        specifier: workspace:*
-        version: link:../tracks
-      '@wordpress/api-fetch':
-        specifier: catalog:wp-min
-        version: 7.19.2
-      '@wordpress/base-styles':
-        specifier: catalog:wp-min
-        version: 5.19.1
-      '@wordpress/components':
-        specifier: catalog:wp-min
-        version: 29.5.4(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/compose':
-        specifier: catalog:wp-min
-        version: 7.19.2(react@18.3.1)
-      '@wordpress/core-data':
-        specifier: catalog:wp-min
-        version: 7.19.6(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/data':
-        specifier: ^10.0.2
-        version: 10.19.2(react@18.3.1)
-      '@wordpress/dataviews':
-        specifier: ^4.11.1
-        version: 4.22.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/date':
-        specifier: catalog:wp-min
-        version: 5.19.1
-      '@wordpress/deprecated':
-        specifier: catalog:wp-min
-        version: 4.19.1
-      '@wordpress/edit-post':
-        specifier: catalog:wp-min
-        version: 8.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/editor':
-        specifier: catalog:wp-min
-        version: 14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
-      '@wordpress/element':
-        specifier: catalog:wp-min
-        version: 6.19.1
-      '@wordpress/hooks':
-        specifier: catalog:wp-min
-        version: 4.19.1
-      '@wordpress/html-entities':
-        specifier: catalog:wp-min
-        version: 4.19.1
-      '@wordpress/i18n':
-        specifier: catalog:wp-min
-        version: 5.19.1
-      '@wordpress/icons':
-        specifier: 10.11.0
-        version: 10.11.0(react@18.3.1)
-      '@wordpress/interface':
-        specifier: catalog:wp-min
-        version: 9.4.4(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/keyboard-shortcuts':
-        specifier: catalog:wp-min
-        version: 5.19.2(react@18.3.1)
-      '@wordpress/keycodes':
-        specifier: catalog:wp-min
-        version: 4.19.1
-      '@wordpress/media-utils':
-        specifier: catalog:wp-min
-        version: 5.19.2
-      '@wordpress/notices':
-        specifier: catalog:wp-min
-        version: 5.19.2(react@18.3.1)
-      '@wordpress/plugins':
-        specifier: catalog:wp-min
-        version: 7.19.4(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/preferences':
-        specifier: catalog:wp-min
-        version: 4.19.4(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/router':
-        specifier: 1.11.0
-        version: 1.11.0(react@18.3.1)
-      '@wordpress/url':
-        specifier: catalog:wp-min
-        version: 4.19.2
-      clsx:
-        specifier: 2.1.x
-        version: 2.1.1
-      prop-types:
-        specifier: ^15.8.1
-        version: 15.8.1
-      react-router-dom:
-        specifier: ~6.3.0
-        version: 6.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-    devDependencies:
-      '@babel/core':
-        specifier: 7.25.7
-        version: 7.25.7
-      '@babel/runtime':
-        specifier: 7.25.7
-        version: 7.25.7
-      '@testing-library/dom':
-        specifier: ^10.4.x
-        version: 10.4.1
-      '@testing-library/jest-dom':
-        specifier: ^6.x.x
-        version: 6.4.5(@jest/globals@29.7.0)(@types/jest@29.5.14)(jest@29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))
-      '@testing-library/react':
-        specifier: ^16.x.x
-        version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@testing-library/user-event':
-        specifier: 13.5.0
-        version: 13.5.0(@testing-library/dom@10.4.1)
-      '@types/jest':
-        specifier: 29.5.x
-        version: 29.5.14
-      '@types/react':
-        specifier: 18.3.x
-        version: 18.3.28
-      '@types/testing-library__jest-dom':
-        specifier: ^5.14.9
-        version: 5.14.9
-      '@types/wordpress__block-editor':
-        specifier: catalog:wp-min
-        version: 14.21.8(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@types/wordpress__block-library':
-        specifier: catalog:wp-min
-        version: 2.6.3
-      '@types/wordpress__edit-post':
-        specifier: catalog:wp-min
-        version: 8.4.2(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@woocommerce/eslint-plugin':
-        specifier: workspace:*
-        version: link:../eslint-plugin
-      '@woocommerce/internal-js-tests':
-        specifier: workspace:*
-        version: link:../internal-js-tests
-      '@woocommerce/internal-style-build':
-        specifier: workspace:*
-        version: link:../internal-style-build
-      '@woocommerce/internal-ts-config':
-        specifier: workspace:*
-        version: link:../internal-ts-config
-      '@wordpress/block-editor':
-        specifier: catalog:wp-min
-        version: 14.14.6(@babel/core@7.25.7)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(webpack-virtual-modules@0.6.2)(webpack@5.97.1)
-      '@wordpress/browserslist-config':
-        specifier: next
-        version: 6.43.1-next.v.202604091042.0
-      copy-webpack-plugin:
-        specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
-      css-loader:
-        specifier: 6.11.x
-        version: 6.11.0(webpack@5.97.1(@swc/core@1.15.24))
-      eslint:
-        specifier: ^8.55.0
-        version: 8.57.1
-      jest:
-        specifier: 29.5.x
-        version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
-      jest-cli:
-        specifier: 29.5.x
-        version: 29.5.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
-      jest-environment-jsdom:
-        specifier: 29.5.x
-        version: 29.5.0
-      mini-css-extract-plugin:
-        specifier: 2.9.x
-        version: 2.9.4(webpack@5.97.1(@swc/core@1.15.24))
-      postcss:
-        specifier: 8.4.x
-        version: 8.4.49
-      postcss-loader:
-        specifier: 4.3.x
-        version: 4.3.0(postcss@8.4.49)(webpack@5.97.1)
-      react:
-        specifier: 18.3.x
-        version: 18.3.1
-      react-dom:
-        specifier: 18.3.x
-        version: 18.3.1(react@18.3.1)
-      rimraf:
-        specifier: 5.0.5
-        version: 5.0.5
-      sass-loader:
-        specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
-      ts-jest:
-        specifier: 29.1.x
-        version: 29.1.5(@babel/core@7.25.7)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.25.7))(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
-      typescript:
-        specifier: 5.7.x
-        version: 5.7.3
-      webpack:
-        specifier: 5.97.x
-        version: 5.97.1(@swc/core@1.15.24)(webpack-cli@5.1.4)
-      webpack-cli:
-        specifier: 5.1.x
-        version: 5.1.4(webpack@5.97.1)
-      webpack-remove-empty-scripts:
-        specifier: 1.0.x
-        version: 1.0.4(webpack@5.97.1(@swc/core@1.15.24))
-      wireit:
-        specifier: 0.14.12
-        version: 0.14.12
-
   packages/js/tracks:
     dependencies:
       debug:
@@ -3633,9 +3404,6 @@ importers:
       '@woocommerce/sanitize':
         specifier: workspace:*
         version: link:../../../../packages/js/sanitize
-      '@woocommerce/settings-editor':
-        specifier: workspace:*
-        version: link:../../../../packages/js/settings-editor
       '@woocommerce/tracks':
         specifier: workspace:*
         version: link:../../../../packages/js/tracks
@@ -3963,7 +3731,7 @@ importers:
         version: 3.3.7
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
+        version: 13.0.1(webpack@5.97.1)
       css-loader:
         specifier: 6.11.x
         version: 6.11.0(webpack@5.97.1(@swc/core@1.15.24))
@@ -4056,7 +3824,7 @@ importers:
         version: 1.69.5
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       stylelint:
         specifier: ^14.16.1
         version: 14.16.1
@@ -4504,7 +4272,7 @@ importers:
         version: 5.2.2(webpack@5.97.1)
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
+        version: 13.0.1(webpack@5.97.1)
       core-js:
         specifier: 3.25.0
         version: 3.25.0
@@ -4633,7 +4401,7 @@ importers:
         version: 4.3.0
       sass-loader:
         specifier: 10.5.x
-        version: 10.5.2(sass@1.69.5)(webpack@5.97.1(@swc/core@1.15.24))
+        version: 10.5.2(sass@1.69.5)(webpack@5.97.1)
       storybook:
         specifier: ^7.6.4
         version: 7.6.19(encoding@0.1.13)
@@ -4980,7 +4748,7 @@ importers:
         version: link:../../packages/js/eslint-plugin
       copy-webpack-plugin:
         specifier: 13.0.x
-        version: 13.0.1(webpack@5.97.1(@swc/core@1.15.24))
+        version: 13.0.1(webpack@5.97.1)
       eslint:
         specifier: ^8.55.0
         version: 8.57.1
@@ -5332,13 +5100,6 @@ packages:
   '@automattic/material-design-icons@1.0.0':
     resolution: {integrity: sha512-8baJ1l8ftLq/UdLeucOeGXo4/wpaB/pSOBO587/pKC/xv2Oo8Ok21g1WKwp0Y8hEq4+3JNtCzOGVxmIgDBTYvA==}

-  '@automattic/site-admin@0.0.1':
-    resolution: {integrity: sha512-w6s18i/zYiuG4ozQdu1lrWCXYIxXbWVdyjux1xHUdNpaXb9xx05mc2LCgqjcKgmyp4bxSfx0Fssr/F+uhguikw==}
-    peerDependencies:
-      '@wordpress/data': ^10.20.0
-      react: ^18.3.1
-      react-dom: ^18.3.1
-
   '@automattic/tour-kit@1.1.3':
     resolution: {integrity: sha512-4vHu2g41j0msniRWYMsUie6EYXEQqTQknhem3Payp0mEIYH05dt/rMjsDtSspbmLe2CtjtQoauXKTyXmf4CMWA==}
     peerDependencies:
@@ -24844,30 +24605,6 @@ snapshots:

   '@automattic/material-design-icons@1.0.0': {}

-  '@automattic/site-admin@0.0.1(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(@wordpress/data@10.19.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
-    dependencies:
-      '@wordpress/base-styles': 5.23.0
-      '@wordpress/components': 29.12.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/compose': 7.44.0(react@18.3.1)
-      '@wordpress/core-data': 7.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
-      '@wordpress/data': 10.19.2(react@18.3.1)
-      '@wordpress/dom': 4.44.0
-      '@wordpress/element': 6.44.0
-      '@wordpress/i18n': 5.26.0
-      '@wordpress/icons': 10.32.0(react@18.3.1)
-      '@wordpress/url': 4.44.0
-      clsx: 2.1.1
-      react: 18.3.1
-      react-dom: 18.3.1(react@18.3.1)
-      route-recognizer: 0.3.4
-    transitivePeerDependencies:
-      - '@date-fns/tz'
-      - '@emotion/is-prop-valid'
-      - '@types/react'
-      - '@types/react-dom'
-      - stylelint
-      - supports-color
-
   '@automattic/tour-kit@1.1.3(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(@wordpress/data@10.19.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1)':
     dependencies:
       '@automattic/components': 2.2.1(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(@wordpress/data@10.19.2(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -32283,7 +32020,7 @@ snapshots:
       '@types/react': 18.3.28
       '@wordpress/components': 28.13.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/data': 10.19.2(react@18.3.1)
-      '@wordpress/editor': 14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/editor': 14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/element': 6.44.0
     transitivePeerDependencies:
       - '@date-fns/tz'
@@ -32862,10 +32599,10 @@ snapshots:

   '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.97.1)':
     dependencies:
-      webpack: 5.97.1(@swc/core@1.15.24)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.15.24)(esbuild@0.18.20)(webpack-cli@5.1.4)
       webpack-cli: 5.1.4(webpack-bundle-analyzer@4.9.1)(webpack-dev-server@4.15.2)(webpack@5.97.1)
     optionalDependencies:
-      webpack-dev-server: 4.15.2(debug@4.4.3)(webpack-cli@5.1.4)(webpack@5.97.1)
+      webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.97.1)

   '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.97.1)':
     dependencies:
@@ -33789,11 +33526,11 @@ snapshots:
       '@wordpress/autop': 4.44.0
       '@wordpress/base-styles': 6.20.0
       '@wordpress/blob': 4.44.0
-      '@wordpress/block-editor': 15.17.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/block-editor': 15.17.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/blocks': 15.17.0(react@18.3.1)
       '@wordpress/components': 32.6.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/compose': 7.44.0(react@18.3.1)
-      '@wordpress/core-data': 7.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/data': 10.44.0(react@18.3.1)
       '@wordpress/date': 5.45.0
       '@wordpress/deprecated': 4.45.0
@@ -33810,10 +33547,10 @@ snapshots:
       '@wordpress/keycodes': 4.45.0
       '@wordpress/latex-to-mathml': 1.12.0
       '@wordpress/notices': 5.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/patterns': 2.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/patterns': 2.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/primitives': 4.45.0(react@18.3.1)
       '@wordpress/private-apis': 1.44.0
-      '@wordpress/reusable-blocks': 5.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/reusable-blocks': 5.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/rich-text': 7.45.0(react@18.3.1)
       '@wordpress/server-side-render': 6.20.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/upload-media': 0.29.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -34951,10 +34688,10 @@ snapshots:

   '@wordpress/core-commands@1.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
-      '@wordpress/block-editor': 15.17.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/block-editor': 15.17.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/commands': 1.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/compose': 7.44.0(react@18.3.1)
-      '@wordpress/core-data': 7.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/data': 10.44.0(react@18.3.1)
       '@wordpress/element': 6.44.0
       '@wordpress/html-entities': 4.45.0
@@ -35649,11 +35386,11 @@ snapshots:
       '@wordpress/components': 29.12.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/compose': 7.44.0(react@18.3.1)
       '@wordpress/core-commands': 1.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
-      '@wordpress/core-data': 7.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/data': 10.44.0(react@18.3.1)
       '@wordpress/deprecated': 4.44.0
       '@wordpress/dom': 4.44.0
-      '@wordpress/editor': 14.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/editor': 14.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/element': 6.44.0
       '@wordpress/hooks': 4.44.0
       '@wordpress/html-entities': 4.44.0
@@ -35800,6 +35537,65 @@ snapshots:
       - supports-color
       - utf-8-validate

+  '@wordpress/editor@14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@babel/runtime': 7.25.7
+      '@wordpress/a11y': 4.19.1
+      '@wordpress/api-fetch': 7.44.0
+      '@wordpress/blob': 4.44.0
+      '@wordpress/block-editor': 14.21.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/blocks': 14.15.0(react@18.3.1)
+      '@wordpress/commands': 1.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/components': 29.12.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/compose': 7.44.0(react@18.3.1)
+      '@wordpress/core-data': 7.19.6(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/data': 10.19.2(react@18.3.1)
+      '@wordpress/dataviews': 4.22.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/date': 5.44.0
+      '@wordpress/deprecated': 4.44.0
+      '@wordpress/dom': 4.44.0
+      '@wordpress/element': 6.44.0
+      '@wordpress/fields': 0.11.6(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/hooks': 4.44.0
+      '@wordpress/html-entities': 4.44.0
+      '@wordpress/i18n': 5.26.0
+      '@wordpress/icons': 10.32.0(react@18.3.1)
+      '@wordpress/interface': 9.29.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/keyboard-shortcuts': 5.44.0(react@18.3.1)
+      '@wordpress/keycodes': 4.44.0
+      '@wordpress/media-utils': 5.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/notices': 5.19.2(react@18.3.1)
+      '@wordpress/patterns': 2.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/plugins': 7.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/preferences': 4.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/private-apis': 1.44.0
+      '@wordpress/reusable-blocks': 5.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/rich-text': 7.44.0(react@18.3.1)
+      '@wordpress/server-side-render': 5.23.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/url': 4.44.0
+      '@wordpress/warning': 3.44.0
+      '@wordpress/wordcount': 4.44.0
+      change-case: 4.1.2
+      client-zip: 2.5.0
+      clsx: 2.1.1
+      date-fns: 3.6.0
+      deepmerge: 4.3.1
+      fast-deep-equal: 3.1.3
+      is-plain-object: 5.0.0
+      memize: 2.1.1
+      react: 18.3.1
+      react-autosize-textarea: 7.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      react-dom: 18.3.1(react@18.3.1)
+      remove-accents: 0.5.0
+      uuid: 9.0.1
+    transitivePeerDependencies:
+      - '@date-fns/tz'
+      - '@emotion/is-prop-valid'
+      - '@types/react'
+      - '@types/react-dom'
+      - stylelint
+      - supports-color
+
   '@wordpress/editor@14.19.7(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)':
     dependencies:
       '@babel/runtime': 7.25.7
@@ -36044,6 +35840,73 @@ snapshots:
       - stylelint
       - supports-color

+  '@wordpress/editor@14.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@floating-ui/react-dom': 2.0.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/a11y': 4.44.0
+      '@wordpress/api-fetch': 7.44.0
+      '@wordpress/base-styles': 6.20.0
+      '@wordpress/blob': 4.44.0
+      '@wordpress/block-editor': 15.17.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/block-serialization-default-parser': 5.44.0
+      '@wordpress/blocks': 15.17.0(react@18.3.1)
+      '@wordpress/commands': 1.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/components': 32.6.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/compose': 7.44.0(react@18.3.1)
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/data': 10.44.0(react@18.3.1)
+      '@wordpress/dataviews': 14.2.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/date': 5.44.0
+      '@wordpress/deprecated': 4.44.0
+      '@wordpress/dom': 4.44.0
+      '@wordpress/element': 6.44.0
+      '@wordpress/fields': 0.36.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/global-styles-engine': 1.11.0(react@18.3.1)
+      '@wordpress/global-styles-ui': 1.11.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/hooks': 4.44.0
+      '@wordpress/html-entities': 4.44.0
+      '@wordpress/i18n': 6.17.0
+      '@wordpress/icons': 12.2.0(react@18.3.1)
+      '@wordpress/interface': 9.29.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/keyboard-shortcuts': 5.44.0(react@18.3.1)
+      '@wordpress/keycodes': 4.44.0
+      '@wordpress/media-editor': 0.7.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/media-fields': 0.9.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/media-utils': 5.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/notices': 5.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/patterns': 2.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/plugins': 7.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/preferences': 4.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/private-apis': 1.44.0
+      '@wordpress/reusable-blocks': 5.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/rich-text': 7.44.0(react@18.3.1)
+      '@wordpress/server-side-render': 6.20.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/upload-media': 0.29.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/url': 4.44.0
+      '@wordpress/views': 1.11.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/warning': 3.44.0
+      '@wordpress/wordcount': 4.44.0
+      change-case: 4.1.2
+      client-zip: 2.5.0
+      clsx: 2.1.1
+      colord: 2.9.3
+      date-fns: 3.6.0
+      diff: 4.0.4
+      fast-deep-equal: 3.1.3
+      memize: 2.1.1
+      react: 18.3.1
+      react-autosize-textarea: 7.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      react-dom: 18.3.1(react@18.3.1)
+      remove-accents: 0.5.0
+      uuid: 9.0.1
+    transitivePeerDependencies:
+      - '@date-fns/tz'
+      - '@emotion/is-prop-valid'
+      - '@types/react'
+      - '@types/react-dom'
+      - stylelint
+      - supports-color
+
   '@wordpress/element@3.2.0':
     dependencies:
       '@babel/runtime': 7.25.7
@@ -36160,7 +36023,7 @@ snapshots:
       cosmiconfig: 7.1.0
       eslint: 8.57.1
       eslint-config-prettier: 8.10.2(eslint@8.57.1)
-      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@4.4.4)(eslint-import-resolver-webpack@0.13.2)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.11)(eslint@8.57.1)
       eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       eslint-plugin-jsdoc: 39.9.1(eslint@8.57.1)
       eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
@@ -36189,7 +36052,7 @@ snapshots:
       cosmiconfig: 7.1.0
       eslint: 8.57.1
       eslint-config-prettier: 8.10.2(eslint@8.57.1)
-      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@4.4.4)(eslint-import-resolver-webpack@0.13.2)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.11)(eslint@8.57.1)
       eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       eslint-plugin-jsdoc: 39.9.1(eslint@8.57.1)
       eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
@@ -36218,7 +36081,7 @@ snapshots:
       cosmiconfig: 7.1.0
       eslint: 8.57.1
       eslint-config-prettier: 8.10.2(eslint@8.57.1)
-      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@4.4.4)(eslint-import-resolver-webpack@0.13.2)(eslint@8.57.1)
+      eslint-plugin-import: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint-import-resolver-typescript@3.6.1)(eslint-import-resolver-webpack@0.13.11)(eslint@8.57.1)
       eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(typescript@5.7.3))(eslint@8.57.1)(jest@29.5.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))(typescript@5.7.3)
       eslint-plugin-jsdoc: 39.9.1(eslint@8.57.1)
       eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1)
@@ -36494,6 +36357,48 @@ snapshots:
       - stylelint
       - supports-color

+  '@wordpress/fields@0.36.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@react-spring/web': 9.7.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/api-fetch': 7.44.0
+      '@wordpress/base-styles': 6.20.0
+      '@wordpress/blob': 4.44.0
+      '@wordpress/blocks': 15.17.0(react@18.3.1)
+      '@wordpress/components': 32.6.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/compose': 7.44.0(react@18.3.1)
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/data': 10.44.0(react@18.3.1)
+      '@wordpress/dataviews': 14.2.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/date': 5.45.0
+      '@wordpress/element': 6.44.0
+      '@wordpress/hooks': 4.45.0
+      '@wordpress/html-entities': 4.45.0
+      '@wordpress/i18n': 6.18.0
+      '@wordpress/icons': 12.2.0(react@18.3.1)
+      '@wordpress/media-utils': 5.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(date-fns@3.6.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/notices': 5.44.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/patterns': 2.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/primitives': 4.45.0(react@18.3.1)
+      '@wordpress/private-apis': 1.44.0
+      '@wordpress/router': 1.44.0(react@18.3.1)
+      '@wordpress/url': 4.44.0
+      '@wordpress/warning': 3.45.0
+      '@wordpress/wordcount': 4.44.0
+      change-case: 4.1.2
+      client-zip: 2.5.0
+      clsx: 2.1.1
+      react: 18.3.1
+      remove-accents: 0.5.0
+    transitivePeerDependencies:
+      - '@date-fns/tz'
+      - '@emotion/is-prop-valid'
+      - '@types/react'
+      - '@types/react-dom'
+      - date-fns
+      - react-dom
+      - stylelint
+      - supports-color
+
   '@wordpress/format-library@5.19.6(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
     dependencies:
       '@babel/runtime': 7.25.7
@@ -36562,6 +36467,37 @@ snapshots:
       - stylelint
       - supports-color

+  '@wordpress/global-styles-ui@1.11.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@wordpress/a11y': 4.45.0
+      '@wordpress/api-fetch': 7.44.0
+      '@wordpress/base-styles': 6.20.0
+      '@wordpress/block-editor': 15.17.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/blocks': 15.17.0(react@18.3.1)
+      '@wordpress/components': 32.6.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/compose': 7.44.0(react@18.3.1)
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/data': 10.44.0(react@18.3.1)
+      '@wordpress/date': 5.45.0
+      '@wordpress/element': 6.44.0
+      '@wordpress/global-styles-engine': 1.11.0(react@18.3.1)
+      '@wordpress/i18n': 6.18.0
+      '@wordpress/icons': 12.2.0(react@18.3.1)
+      '@wordpress/keycodes': 4.45.0
+      '@wordpress/private-apis': 1.44.0
+      change-case: 4.1.2
+      clsx: 2.1.1
+      colord: 2.9.3
+      react: 18.3.1
+      react-dom: 18.3.1(react@18.3.1)
+    transitivePeerDependencies:
+      - '@date-fns/tz'
+      - '@emotion/is-prop-valid'
+      - '@types/react'
+      - '@types/react-dom'
+      - stylelint
+      - supports-color
+
   '@wordpress/hooks@3.58.0':
     dependencies:
       '@babel/runtime': 7.25.7
@@ -36923,7 +36859,7 @@ snapshots:
       jest-matcher-utils: 29.7.0
       jest-mock: 29.7.0

-  '@wordpress/jest-console@8.44.0(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))':
+  '@wordpress/jest-console@8.44.0(jest@29.7.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))':
     dependencies:
       jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
       jest-matcher-utils: 29.7.0
@@ -36941,7 +36877,7 @@ snapshots:
   '@wordpress/jest-preset-default@12.22.0(@babel/core@7.25.7)(jest@29.7.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))':
     dependencies:
       '@babel/core': 7.25.7
-      '@wordpress/jest-console': 8.44.0(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))
+      '@wordpress/jest-console': 8.44.0(jest@29.7.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))
       babel-jest: 29.7.0(@babel/core@7.25.7)
       jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
     transitivePeerDependencies:
@@ -36959,7 +36895,7 @@ snapshots:
   '@wordpress/jest-preset-default@12.44.0(@babel/core@7.25.7)(jest@29.7.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))':
     dependencies:
       '@babel/core': 7.25.7
-      '@wordpress/jest-console': 8.44.0(jest@29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))
+      '@wordpress/jest-console': 8.44.0(jest@29.7.0(@types/node@24.12.2)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3)))
       babel-jest: 29.7.0(@babel/core@7.25.7)
       jest: 29.7.0(@types/node@24.12.2)(babel-plugin-macros@3.1.0)(node-notifier@8.0.2)(ts-node@10.9.2(@swc/core@1.15.24)(@types/node@24.12.2)(typescript@5.7.3))
     transitivePeerDependencies:
@@ -37050,6 +36986,22 @@ snapshots:
       - stylelint
       - supports-color

+  '@wordpress/media-editor@0.7.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+    dependencies:
+      '@babel/runtime': 7.25.7
+      '@wordpress/components': 32.6.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+      '@wordpress/dataviews': 14.2.0(@emotion/is-prop-valid@1.4.0)(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
+      '@wordpress/element': 6.44.0
+      '@wordpress/i18n': 6.18.0
+      react: 18.3.1
+    transitivePeerDependencies:
+      - '@date-fns/tz'
+      - '@emotion/is-prop-valid'
+      - '@types/react'
+      - react-dom
+      - stylelint
+      - supports-color
+
   '@wordpress/media-fields@0.9.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))':
     dependencies:
       '@wordpress/base-styles': 6.20.0
@@ -38680,7 +38632,7 @@ snapshots:
       '@wordpress/keycodes': 4.45.0
       '@wordpress/primitives': 4.45.0(react@18.3.1)
       '@wordpress/private-apis': 1.44.0
-      '@wordpress/theme': 0.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/theme': 0.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       clsx: 2.1.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -38746,7 +38698,7 @@ snapshots:
       '@wordpress/keycodes': 4.45.0
       '@wordpress/primitives': 4.45.0(react@18.3.1)
       '@wordpress/private-apis': 1.44.0
-      '@wordpress/theme': 0.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/theme': 0.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       clsx: 2.1.1
       react: 18.3.1
       react-dom: 18.3.1(react@18.3.1)
@@ -39011,11 +38963,11 @@ snapshots:
     dependencies:
       '@wordpress/api-fetch': 7.44.0
       '@wordpress/base-styles': 6.20.0
-      '@wordpress/block-editor': 15.17.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/block-editor': 15.17.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/blocks': 15.17.0(react@18.3.1)
       '@wordpress/components': 32.6.0(@emotion/is-prop-valid@1.4.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
       '@wordpress/compose': 7.44.0(react@18.3.1)
-      '@wordpress/core-data': 7.44.0(@date-fns/tz@1.4.1)(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@16.26.1(typescript@5.7.3))
+      '@wordpress/core-data': 7.44.0(@emotion/is-prop-valid@1.4.0)(@types/react-dom@18.3.7(@types/react@18.3.28))(@types/react@18.3.28)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(stylelint@14.16.1)
       '@wordpress/data': 10.44.0(react@18.3.1)
       '@wordpress/element': 6.44.0
       '@wordpress/i18n': 6.18.0
@@ -41323,6 +41275,15 @@ snapshots:
       tinyglobby: 0.2.16
       webpack: 5.97.1(@swc/core@1.15.24)(webpack-cli@5.1.4)

+  copy-webpack-plugin@13.0.1(webpack@5.97.1):
+    dependencies:
+      glob-parent: 6.0.2
+      normalize-path: 3.0.0
+      schema-utils: 4.3.3
+      serialize-javascript: 6.0.2
+      tinyglobby: 0.2.16
+      webpack: 5.97.1(@swc/core@1.15.24)(esbuild@0.18.20)(webpack-cli@5.1.4)
+
   core-js-compat@3.49.0:
     dependencies:
       browserslist: 4.28.2
@@ -49732,7 +49693,7 @@ snapshots:
       postcss: 8.4.49
       schema-utils: 3.3.0
       semver: 7.7.4
-      webpack: 5.97.1(@swc/core@1.15.24)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.15.24)(esbuild@0.18.20)(webpack-cli@5.1.4)

   postcss-loader@4.3.0(postcss@8.5.9)(webpack@5.97.1):
     dependencies:
@@ -51699,6 +51660,17 @@ snapshots:
     optionalDependencies:
       sass: 1.69.5

+  sass-loader@10.5.2(sass@1.69.5)(webpack@5.97.1):
+    dependencies:
+      klona: 2.0.6
+      loader-utils: 2.0.4
+      neo-async: 2.6.2
+      schema-utils: 3.3.0
+      semver: 7.7.4
+      webpack: 5.97.1(@swc/core@1.15.24)(esbuild@0.18.20)(webpack-cli@5.1.4)
+    optionalDependencies:
+      sass: 1.69.5
+
   sass-loader@12.6.0(sass@1.69.5)(webpack@5.97.1):
     dependencies:
       klona: 2.0.6
@@ -54289,11 +54261,11 @@ snapshots:
       import-local: 3.2.0
       interpret: 3.1.1
       rechoir: 0.8.0
-      webpack: 5.97.1(@swc/core@1.15.24)(webpack-cli@5.1.4)
+      webpack: 5.97.1(@swc/core@1.15.24)(esbuild@0.18.20)(webpack-cli@5.1.4)
       webpack-merge: 5.10.0
     optionalDependencies:
       webpack-bundle-analyzer: 4.9.1
-      webpack-dev-server: 4.15.2(debug@4.4.3)(webpack-cli@5.1.4)(webpack@5.97.1)
+      webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.97.1)

   webpack-cli@5.1.4(webpack-dev-server@4.15.2)(webpack@5.97.1):
     dependencies: