diff --git a/web/src/components/storage/ProposalSpacePolicyField.jsx b/web/src/components/storage/ProposalSpacePolicyField.jsx
deleted file mode 100644
index 17455afb4b..0000000000
--- a/web/src/components/storage/ProposalSpacePolicyField.jsx
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- * Copyright (c) [2024] SUSE LLC
- *
- * All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of version 2 of the GNU General Public License as published
- * by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, contact SUSE LLC.
- *
- * To contact SUSE LLC about this file by physical or electronic mail, you may
- * find current contact information at www.suse.com.
- */
-
-import React, { useEffect, useState } from "react";
-import { Button, Form, FormSelect, FormSelectOption, Skeleton } from "@patternfly/react-core";
-
-import { _, N_, n_ } from "~/i18n";
-import { deviceSize } from '~/components/storage/utils';
-import { If, OptionsPicker, Popup, SectionSkeleton } from "~/components/core";
-import { noop } from "~/utils";
-import { sprintf } from "sprintf-js";
-import { Table, Thead, Tr, Th, Tbody, Td, TreeRowWrapper } from '@patternfly/react-table';
-
-/**
- * @typedef {import ("~/client/storage").ProposalManager.ProposalSettings} ProposalSettings
- * @typedef {import ("~/client/storage").ProposalManager.SpaceAction} SpaceAction
- * @typedef {import ("~/client/storage").DevicesManager.StorageDevice} StorageDevice
- */
-
-/**
- * @typedef SpacePolicy
- * @type {object}
- * @property {string} id
- * @property {string} label
- * @property {string} description
- */
-
-/** @type {SpacePolicy[]} */
-const SPACE_POLICIES = [
- {
- id: "delete",
- label: N_("Delete current content"),
- description: N_("All partitions will be removed and any data in the disks will be lost."),
- summaryLabels: [
- // TRANSLATORS: This is presented next to the label "Find space", so the whole sentence
- // would read as "Find space deleting all content[...]"
- N_("deleting all content of the installation device"),
- // TRANSLATORS: This is presented next to the label "Find space", so the whole sentence
- // would read as "Find space deleting all content[...]"
- N_("deleting all content of the %d selected disks")
- ]
- },
- {
- id: "resize",
- label: N_("Shrink existing partitions"),
- description: N_("The data is kept, but the current partitions will be resized as needed."),
- summaryLabels: [
- // TRANSLATORS: This is presented next to the label "Find space", so the whole sentence
- // would read as "Find space shrinking partitions[...]"
- N_("shrinking partitions of the installation device"),
- // TRANSLATORS: This is presented next to the label "Find space", so the whole sentence
- // would read as "Find space shrinking partitions[...]"
- N_("shrinking partitions of the %d selected disks")
- ]
- },
- {
- id: "keep",
- label: N_("Use available space"),
- description: N_("The data is kept. Only the space not assigned to any partition will be used."),
- summaryLabels: [
- // TRANSLATORS: This is presented next to the label "Find space", so the whole sentence
- // would read as "Find space without modifying any partition".
- N_("without modifying any partition")
- ]
- },
- {
- id: "custom",
- label: N_("Custom"),
- description: N_("Select what to do with each partition."),
- summaryLabels: [
- // TRANSLATORS: This is presented next to the label "Find space", so the whole sentence
- // would read as "Find space performing a custom set of actions".
- N_("performing a custom set of actions")
- ]
- }
-];
-
-// Names of the columns for the policy actions.
-const columnNames = {
- device: N_("Used device"),
- content: N_("Details"),
- size: N_("Size"),
- details: N_("Size details"),
- action: N_("Action")
-};
-
-/**
- * Column content with the description of a device.
- * @component
- *
- * @param {object} props
- * @param {StorageDevice} props.device
- */
-const DeviceDescriptionColumn = ({ device }) => {
- if (device.isDrive || device.type === "lvmVg") return device.name;
-
- return device.name.split("/").pop();
-};
-
-/**
- * Column content with details about the device.
- * @component
- *
- * @param {object} props
- * @param {StorageDevice} props.device
- */
-const DeviceContentColumn = ({ device }) => {
- const systems = device.systems;
- if (systems.length > 0) return systems.join(", ");
-
- return device.description;
-};
-
-/**
- * Column content with information about the size of the device.
- * @component
- *
- * @param {object} props
- * @param {StorageDevice} props.device
- */
-const DeviceSizeColumn = ({ device }) => {
- return deviceSize(device.size);
-};
-
-/**
- * Column content with details about the device.
- * @component
- *
- * @param {object} props
- * @param {StorageDevice} props.device
- */
-const DeviceDetailsColumn = ({ device }) => {
- const UnusedSize = () => {
- if (device.filesystem) return null;
-
- const unused = device.partitionTable?.unpartitionedSize || 0;
- // TRANSLATORS: %s is replaced by a disk size (e.g., 20 GiB)
- return sprintf(_("%s unused"), deviceSize(unused));
- };
-
- const RecoverableSize = () => {
- const size = device.recoverableSize;
- if (size === 0) return null;
-
- // TRANSLATORS: %s is replaced by a disk size (e.g., 2 GiB)
- return sprintf(_("Shrinkable by %s"), deviceSize(device.recoverableSize));
- };
-
- return (
- } else={} />
- );
-};
-
-/**
- * Column content with the space action for a device.
- * @component
- *
- * @param {object} props
- * @param {StorageDevice} props.device
- * @param {string} props.action - Possible values: "force_delete", "resize" or "keep".
- * @param {boolean} [props.isDisabled=false]
- * @param {(action: SpaceAction) => void} [props.onChange]
- */
-const DeviceActionColumn = ({ device, action, isDisabled = false, onChange = noop }) => {
- const changeAction = (_, action) => onChange({ device: device.name, action });
-
- // For a drive device (e.g., Disk, RAID) it does not make sense to offer the resize action.
- // At this moment, the Agama backend generates a resize action for drives if the policy is set to
- // 'resize'. In that cases, the action is converted here to 'keep'.
- const value = (device.isDrive && action === "resize") ? "keep" : action;
-
- return (
-
-
- {/* Resize action does not make sense for drives, so it is filtered out. */}
- }
- />
-
-
- );
-};
-
-/**
- * Row for configuring the space action of a device.
- * @component
- *
- * @param {object} props
- * @param {StorageDevice} props.device
- * @param {ProposalSettings} props.settings
- * @param {number} props.rowIndex - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {number} [props.level=1] - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {number} [props.setSize=0] - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {number} [props.posInSet=0] - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {boolean} [props.isExpanded=false] - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {boolean} [props.isHidden=false] - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {function} [props.onCollapse] - @see {@link https://www.patternfly.org/components/table/#tree-table}
- * @param {(action: SpaceAction) => void} [props.onChange]
- */
-const DeviceRow = ({
- device,
- policy,
- actions,
- rowIndex,
- level = 1,
- setSize = 0,
- posInSet = 1,
- isExpanded = false,
- isHidden = false,
- onCollapse = noop,
- onChange = noop
-}) => {
- // Generates the action value according to the policy.
- const action = () => {
- if (policy.id === "custom")
- return actions.find(a => a.device === device.name)?.action || "keep";
-
- const policyAction = { delete: "force_delete", resize: "resize", keep: "keep" };
- return policyAction[policy.id];
- };
-
- const isDisabled = policy.id !== "custom";
- const showAction = !device.partitionTable;
-
- const treeRow = {
- onCollapse,
- rowIndex,
- props: {
- isExpanded,
- isDetailsExpanded: true,
- isHidden,
- 'aria-level': level,
- 'aria-posinset': posInSet,
- 'aria-setsize': setSize
- }
- };
-
- return (
-
- {/* eslint-disable agama-i18n/string-literals */}
-