diff --git a/portal-ui/src/screens/Console/Account/Account.tsx b/portal-ui/src/screens/Console/Account/Account.tsx
index 1739fd1b0..132abc0f1 100644
--- a/portal-ui/src/screens/Console/Account/Account.tsx
+++ b/portal-ui/src/screens/Console/Account/Account.tsx
@@ -21,6 +21,7 @@ import {
Button,
DeleteIcon,
HelpBox,
+ PageLayout,
PasswordKeyIcon,
} from "mds";
import { useSelector } from "react-redux";
@@ -40,7 +41,6 @@ import {
import { ErrorResponseHandler } from "../../../common/types";
import ChangePasswordModal from "./ChangePasswordModal";
-import PageLayout from "../Common/Layout/PageLayout";
import SearchBox from "../Common/SearchBox";
import withSuspense from "../Common/Components/withSuspense";
import {
@@ -205,102 +205,104 @@ const Account = () => {
/>
-
-
-
-
- {" "}
-
-
-
-
-
-
-
- selectSAs(e, setSelectedSAs, selectedSAs)}
- onSelectAll={selectAllItems}
- />
-
-
- }
- help={
-
- MinIO access keys are child identities of an authenticated MinIO
- user, including externally managed identities. Each access key
- inherits its privileges based on the policies attached to it’s
- parent user or those groups in which the parent user has
- membership. Access Keys also support an optional inline policy
- which further restricts access to a subset of actions and
- resources available to the parent user.
-
-
- You can learn more at our{" "}
- {
- // TODO: Change this link once it is called access keys
- }
-
- documentation
-
- .
-
- }
- />
+
+ {" "}
+
+
+
+
+
+
+
+
+ selectSAs(e, setSelectedSAs, selectedSAs)}
+ onSelectAll={selectAllItems}
+ />
+
+
+ }
+ help={
+
+ MinIO access keys are child identities of an authenticated
+ MinIO user, including externally managed identities. Each
+ access key inherits its privileges based on the policies
+ attached to it’s parent user or those groups in which the
+ parent user has membership. Access Keys also support an
+ optional inline policy which further restricts access to a
+ subset of actions and resources available to the parent user.
+
+
+ You can learn more at our{" "}
+ {
+ // TODO: Change this link once it is called access keys
+ }
+
+ documentation
+
+ .
+
+ }
+ />
+
diff --git a/portal-ui/src/screens/Console/Account/AddServiceAccountScreen.tsx b/portal-ui/src/screens/Console/Account/AddServiceAccountScreen.tsx
index 4eec719b2..8cadbdc0e 100644
--- a/portal-ui/src/screens/Console/Account/AddServiceAccountScreen.tsx
+++ b/portal-ui/src/screens/Console/Account/AddServiceAccountScreen.tsx
@@ -21,6 +21,7 @@ import {
BackLink,
Button,
IAMPoliciesIcon,
+ PageLayout,
PasswordKeyIcon,
ServiceAccountCredentialsIcon,
} from "mds";
@@ -33,7 +34,6 @@ import {
import Grid from "@mui/material/Grid";
import { Box } from "@mui/material";
import CodeMirrorWrapper from "../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper";
-import PageLayout from "../Common/Layout/PageLayout";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import FormSwitchWrapper from "../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
import AddServiceAccountHelpBox from "./AddServiceAccountHelpBox";
diff --git a/portal-ui/src/screens/Console/Buckets/BucketDetails/BucketDetails.tsx b/portal-ui/src/screens/Console/Buckets/BucketDetails/BucketDetails.tsx
index 4807b07df..a994a67db 100644
--- a/portal-ui/src/screens/Console/Buckets/BucketDetails/BucketDetails.tsx
+++ b/portal-ui/src/screens/Console/Buckets/BucketDetails/BucketDetails.tsx
@@ -28,6 +28,7 @@ import {
BucketsIcon,
Button,
FolderIcon,
+ PageLayout,
RefreshIcon,
TrashIcon,
} from "mds";
@@ -54,7 +55,6 @@ import {
IAM_SCOPES,
permissionTooltipHelper,
} from "../../../../common/SecureComponent/permissions";
-import PageLayout from "../../Common/Layout/PageLayout";
import VerticalTabs from "../../Common/VerticalTabs/VerticalTabs";
import {
diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket/AddBucket.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket/AddBucket.tsx
index 3f554d9ff..35881dd82 100644
--- a/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket/AddBucket.tsx
+++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/AddBucket/AddBucket.tsx
@@ -26,6 +26,7 @@ import {
FormLayout,
HelpBox,
InfoIcon,
+ PageLayout,
} from "mds";
import {
containerForHeader,
@@ -42,7 +43,6 @@ import {
selSiteRep,
setErrorSnackMessage,
} from "../../../../../systemSlice";
-import PageLayout from "../../../Common/Layout/PageLayout";
import InputUnitMenu from "../../../Common/FormComponents/InputUnitMenu/InputUnitMenu";
import TooltipWrapper from "../../../Common/TooltipWrapper/TooltipWrapper";
import SectionTitle from "../../../Common/SectionTitle";
diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/ListBuckets.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/ListBuckets.tsx
index 3f780baf0..72a4ead8b 100644
--- a/portal-ui/src/screens/Console/Buckets/ListBuckets/ListBuckets.tsx
+++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/ListBuckets.tsx
@@ -25,6 +25,7 @@ import {
HelpBox,
LifecycleConfigIcon,
MultipleBucketsIcon,
+ PageLayout,
RefreshIcon,
SelectAllIcon,
SelectMultipleIcon,
@@ -48,7 +49,6 @@ import {
IAM_SCOPES,
permissionTooltipHelper,
} from "../../../../common/SecureComponent/permissions";
-import PageLayout from "../../Common/Layout/PageLayout";
import SearchBox from "../../Common/SearchBox";
import VirtualizedList from "../../Common/VirtualizedList/VirtualizedList";
import BulkLifecycleModal from "./BulkLifecycleModal";
diff --git a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx
index f691e1ce9..9db7daf25 100644
--- a/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx
+++ b/portal-ui/src/screens/Console/Buckets/ListBuckets/Objects/ListObjects/ListObjects.tsx
@@ -34,6 +34,7 @@ import {
DeleteIcon,
DownloadIcon,
HistoryIcon,
+ PageLayout,
PreviewIcon,
RefreshIcon,
ShareIcon,
@@ -69,7 +70,6 @@ import {
import ScreenTitle from "../../../../Common/ScreenTitle/ScreenTitle";
import { AppState, useAppDispatch } from "../../../../../../store";
-import PageLayout from "../../../../Common/Layout/PageLayout";
import {
IAM_SCOPES,
permissionTooltipHelper,
@@ -968,261 +968,277 @@ const ListObjects = () => {
)}
- {anonymousMode && (
-
-
-
- )}
-
-
-
-
- }
- title={{bucketName}}
- subTitle={
- !anonymousMode ? (
-
-
-
- Created on:
-
- {bucketInfo?.creation_date
- ? createdTime.toFormat(
- "ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"
- )
- : ""}
-
-
-
- Access:
- {bucketInfo?.access || ""}
-
- {bucketInfo && (
-
-
- {bucketInfo.size && (
- {niceBytesInt(bucketInfo.size)}
- )}
- {bucketInfo.size && quota && (
- / {niceBytesInt(quota.quota)}
- )}
- {bucketInfo.size && bucketInfo.objects ? " - " : ""}
- {bucketInfo.objects && (
-
- {bucketInfo.objects} Object
- {bucketInfo.objects && bucketInfo.objects !== 1
- ? "s"
- : ""}
-
- )}
-
-
- )}
-
-
- ) : null
- }
- actions={
-
- {!anonymousMode && (
-
+
+ {anonymousMode && (
+
+
+
+ )}
+
+
+
+
+ }
+ title={{bucketName}}
+ subTitle={
+ !anonymousMode ? (
+
+
+
+ Created on:
+
+ {bucketInfo?.creation_date
+ ? createdTime.toFormat(
+ "ccc, LLL dd yyyy HH:mm:ss (ZZZZ)"
+ )
+ : ""}
+
+
+
+ Access:
+ {bucketInfo?.access || ""}
+
+ {bucketInfo && (
+
+
+ {bucketInfo.size && (
+
+ {niceBytesInt(bucketInfo.size)}
+
+ )}
+ {bucketInfo.size && quota && (
+
+ {" "}
+ / {niceBytesInt(quota.quota)}
+
+ )}
+ {bucketInfo.size && bucketInfo.objects ? " - " : ""}
+ {bucketInfo.objects && (
+
+ {bucketInfo.objects} Object
+ {bucketInfo.objects && bucketInfo.objects !== 1
+ ? "s"
+ : ""}
+
+ )}
+
+
+ )}
+
+
+ ) : null
+ }
+ actions={
+
+ {!anonymousMode && (
+
+
+ )}
+
- )}
-
- }
- variant={"regular"}
- onClick={() => {
- if (versionsMode) {
- dispatch(setLoadingVersions(true));
- } else {
- dispatch(resetMessages());
- dispatch(setLoadingRecords(true));
- dispatch(setLoadingObjects(true));
- }
- }}
- disabled={
- anonymousMode
- ? false
- : !hasPermission(bucketName, [
- IAM_SCOPES.S3_LIST_BUCKET,
- IAM_SCOPES.S3_ALL_LIST_BUCKET,
- ]) || rewindEnabled
- }
- sx={regularButtonOverride}
+
-
-
-
- {
- if (fileUpload && fileUpload.current) {
- fileUpload.current.click();
- }
- closeMenu();
- }}
- uploadFolderFunction={(closeMenu) => {
- if (folderUpload && folderUpload.current) {
- folderUpload.current.click();
- }
- closeMenu();
- }}
- overrideStyles={callActionButtonOverride}
- />
-
- }
- />
-
-
-
-
- {versionsMode ? (
-
- {selectedInternalPaths !== null && (
-
+ {
+ if (fileUpload && fileUpload.current) {
+ fileUpload.current.click();
+ }
+ closeMenu();
+ }}
+ uploadFolderFunction={(closeMenu) => {
+ if (folderUpload && folderUpload.current) {
+ folderUpload.current.click();
+ }
+ closeMenu();
+ }}
+ overrideStyles={callActionButtonOverride}
/>
- )}
-
- ) : (
-
-
- {!anonymousMode && (
-
-
-
-
- )
- }
- hidePathButton={false}
- />
-
- )}
-
-
-
- )}
- {!anonymousMode && (
-
- {
- onClosePanel(false);
- }}
- className={`${versionsMode ? classes.hideListOnSmall : ""}`}
- >
- {selectedObjects.length > 0 && (
-
- )}
- {selectedInternalPaths !== null && (
-
- )}
-
-
- )}
+
+ }
+ />
-
+
+
+
+
+
+ {versionsMode ? (
+
+ {selectedInternalPaths !== null && (
+
+ )}
+
+ ) : (
+
+
+ {!anonymousMode && (
+
+
+
+
+ )
+ }
+ hidePathButton={false}
+ />
+
+ )}
+
+
+
+ )}
+ {!anonymousMode && (
+
+ {
+ onClosePanel(false);
+ }}
+ className={`${
+ versionsMode ? classes.hideListOnSmall : ""
+ }`}
+ >
+ {selectedObjects.length > 0 && (
+
+ )}
+ {selectedInternalPaths !== null && (
+
+ )}
+
+
+ )}
+
+
+
+
);
diff --git a/portal-ui/src/screens/Console/Common/ComponentsScreen.tsx b/portal-ui/src/screens/Console/Common/ComponentsScreen.tsx
index f44949852..309434639 100644
--- a/portal-ui/src/screens/Console/Common/ComponentsScreen.tsx
+++ b/portal-ui/src/screens/Console/Common/ComponentsScreen.tsx
@@ -16,9 +16,8 @@
import React, { Fragment, useState } from "react";
import { DialogContentText, Grid } from "@mui/material";
-import PageLayout from "./Layout/PageLayout";
import SectionTitle from "./SectionTitle";
-import { Button, ConfirmDeleteIcon } from "mds";
+import { Button, ConfirmDeleteIcon, PageLayout } from "mds";
import ConfirmDialog from "./ModalWrapper/ConfirmDialog";
import PageHeaderWrapper from "./PageHeaderWrapper/PageHeaderWrapper";
diff --git a/portal-ui/src/screens/Console/Common/Layout/PageLayout.tsx b/portal-ui/src/screens/Console/Common/Layout/PageLayout.tsx
deleted file mode 100644
index ff8a91299..000000000
--- a/portal-ui/src/screens/Console/Common/Layout/PageLayout.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from "react";
-import { Grid } from "@mui/material";
-
-type PageLayoutProps = {
- className?: string;
- variant?: "constrained" | "full";
- children: any;
- noPadding?: boolean;
-};
-
-const PageLayout = ({
- className = "",
- children,
- variant = "constrained",
- noPadding = false,
-}: PageLayoutProps) => {
- let style = variant === "constrained" ? { maxWidth: 1220 } : {};
- return (
-
-
-
- {children}
-
-
-
- );
-};
-
-export default PageLayout;
diff --git a/portal-ui/src/screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx b/portal-ui/src/screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx
index b7d841f20..73f26e321 100644
--- a/portal-ui/src/screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx
+++ b/portal-ui/src/screens/Console/Configurations/ConfigurationPanels/ConfigurationOptions.tsx
@@ -26,10 +26,9 @@ import {
containerForHeader,
searchField,
} from "../../Common/FormComponents/common/styleLibrary";
-import { HelpBox, SettingsIcon } from "mds";
+import { HelpBox, PageLayout, SettingsIcon } from "mds";
import { Link, Navigate, Route, Routes, useLocation } from "react-router-dom";
import VerticalTabs from "../../Common/VerticalTabs/VerticalTabs";
-import PageLayout from "../../Common/Layout/PageLayout";
import ScreenTitle from "../../Common/ScreenTitle/ScreenTitle";
import ConfigurationForm from "./ConfigurationForm";
import { IAM_PAGES } from "../../../../common/SecureComponent/permissions";
diff --git a/portal-ui/src/screens/Console/Configurations/SiteReplication/AddReplicationSites.tsx b/portal-ui/src/screens/Console/Configurations/SiteReplication/AddReplicationSites.tsx
index 4e9d6449c..2a121e4c4 100644
--- a/portal-ui/src/screens/Console/Configurations/SiteReplication/AddReplicationSites.tsx
+++ b/portal-ui/src/screens/Console/Configurations/SiteReplication/AddReplicationSites.tsx
@@ -18,10 +18,9 @@ import React, { Fragment, useEffect, useState } from "react";
import Grid from "@mui/material/Grid";
import { Box, LinearProgress } from "@mui/material";
import { useNavigate } from "react-router-dom";
-import { BackLink, Button, ClustersIcon, HelpBox } from "mds";
+import { BackLink, Button, ClustersIcon, HelpBox, PageLayout } from "mds";
import useApi from "../../Common/Hooks/useApi";
import { IAM_PAGES } from "../../../../common/SecureComponent/permissions";
-import PageLayout from "../../Common/Layout/PageLayout";
import SectionTitle from "../../Common/SectionTitle";
import {
setErrorSnackMessage,
diff --git a/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplication.tsx b/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplication.tsx
index 143326ca0..a05689bdc 100644
--- a/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplication.tsx
+++ b/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplication.tsx
@@ -18,7 +18,6 @@ import React, { Fragment, useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import { Box, DialogContentText, Grid } from "@mui/material";
-import PageLayout from "../../Common/Layout/PageLayout";
import useApi from "../../Common/Hooks/useApi";
import ReplicationSites from "./ReplicationSites";
import {
@@ -28,6 +27,7 @@ import {
ConfirmDeleteIcon,
HelpBox,
Loader,
+ PageLayout,
RecoverIcon,
TrashIcon,
} from "mds";
diff --git a/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplicationStatus.tsx b/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplicationStatus.tsx
index 3497dd98a..33e0e7f40 100644
--- a/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplicationStatus.tsx
+++ b/portal-ui/src/screens/Console/Configurations/SiteReplication/SiteReplicationStatus.tsx
@@ -23,10 +23,10 @@ import {
GroupsIcon,
IAMPoliciesIcon,
Loader,
+ PageLayout,
RefreshIcon,
UsersIcon,
} from "mds";
-import PageLayout from "../../Common/Layout/PageLayout";
import useApi from "../../Common/Hooks/useApi";
import { IAM_PAGES } from "../../../../common/SecureComponent/permissions";
diff --git a/portal-ui/src/screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx b/portal-ui/src/screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx
index 0f5d4fd10..e8213c76f 100644
--- a/portal-ui/src/screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx
+++ b/portal-ui/src/screens/Console/Configurations/TiersConfiguration/AddTierConfiguration.tsx
@@ -20,7 +20,7 @@ import { useNavigate, useParams } from "react-router-dom";
import get from "lodash/get";
import Grid from "@mui/material/Grid";
import { Theme } from "@mui/material/styles";
-import { BackLink, Button } from "mds";
+import { BackLink, Button, PageLayout } from "mds";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
import { Box } from "@mui/material";
@@ -42,7 +42,6 @@ import {
tierTypes,
} from "./utils";
-import PageLayout from "../../Common/Layout/PageLayout";
import { IAM_PAGES } from "../../../../common/SecureComponent/permissions";
import RegionSelectWrapper from "./RegionSelectWrapper";
diff --git a/portal-ui/src/screens/Console/Configurations/TiersConfiguration/ListTiersConfiguration.tsx b/portal-ui/src/screens/Console/Configurations/TiersConfiguration/ListTiersConfiguration.tsx
index 7843f8f25..f5d9a4e0f 100644
--- a/portal-ui/src/screens/Console/Configurations/TiersConfiguration/ListTiersConfiguration.tsx
+++ b/portal-ui/src/screens/Console/Configurations/TiersConfiguration/ListTiersConfiguration.tsx
@@ -25,6 +25,7 @@ import {
AddIcon,
Button,
HelpBox,
+ PageLayout,
RefreshIcon,
TierOfflineIcon,
TierOnlineIcon,
@@ -46,7 +47,6 @@ import { ErrorResponseHandler } from "../../../../common/types";
import api from "../../../../common/api";
import TableWrapper from "../../Common/TableWrapper/TableWrapper";
import AButton from "../../Common/AButton/AButton";
-import PageLayout from "../../Common/Layout/PageLayout";
import SearchBox from "../../Common/SearchBox";
import withSuspense from "../../Common/Components/withSuspense";
diff --git a/portal-ui/src/screens/Console/Configurations/TiersConfiguration/TierTypeSelector.tsx b/portal-ui/src/screens/Console/Configurations/TiersConfiguration/TierTypeSelector.tsx
index b4979557a..0ce27f459 100644
--- a/portal-ui/src/screens/Console/Configurations/TiersConfiguration/TierTypeSelector.tsx
+++ b/portal-ui/src/screens/Console/Configurations/TiersConfiguration/TierTypeSelector.tsx
@@ -19,9 +19,8 @@ import { useNavigate } from "react-router-dom";
import { Box } from "@mui/material";
import { tierTypes } from "./utils";
import { IAM_PAGES } from "../../../../common/SecureComponent/permissions";
-import PageLayout from "../../Common/Layout/PageLayout";
import TierTypeCard from "./TierTypeCard";
-import { BackLink, FormLayout, HelpBox, TiersIcon } from "mds";
+import { BackLink, FormLayout, HelpBox, PageLayout, TiersIcon } from "mds";
import PageHeaderWrapper from "../../Common/PageHeaderWrapper/PageHeaderWrapper";
const TierTypeSelector = () => {
diff --git a/portal-ui/src/screens/Console/Dashboard/Prometheus/PrDashboard.tsx b/portal-ui/src/screens/Console/Dashboard/Prometheus/PrDashboard.tsx
index ba6f85eb5..4e899c0f6 100644
--- a/portal-ui/src/screens/Console/Dashboard/Prometheus/PrDashboard.tsx
+++ b/portal-ui/src/screens/Console/Dashboard/Prometheus/PrDashboard.tsx
@@ -41,10 +41,15 @@ import {
trafficPanelsLayout,
} from "./Widgets/LayoutUtil";
import MergedWidgetsRenderer from "./Widgets/MergedWidgetsRenderer";
-import PageLayout from "../../Common/Layout/PageLayout";
import { Usage } from "../types";
import BasicDashboard from "../BasicDashboard/BasicDashboard";
-import { Button, HelpBox, PrometheusErrorIcon, SyncIcon } from "mds";
+import {
+ Button,
+ HelpBox,
+ PageLayout,
+ PrometheusErrorIcon,
+ SyncIcon,
+} from "mds";
import { ITabOption } from "../../Common/TabSelector/types";
import { getUsageAsync } from "../dashboardThunks";
import { reloadWidgets } from "../dashboardSlice";
@@ -180,7 +185,11 @@ const PrDashboard = ({ apiPrefix = "admin", usage }: IPrDashboard) => {
}
return (
-
+
{zoomOpen && (
.
import React, { Fragment, useEffect, useState } from "react";
-import { AddIcon, Button, HelpBox, LambdaIcon, RefreshIcon } from "mds";
+import {
+ AddIcon,
+ Button,
+ HelpBox,
+ LambdaIcon,
+ PageLayout,
+ RefreshIcon,
+} from "mds";
import { useNavigate } from "react-router-dom";
import { Theme } from "@mui/material/styles";
import createStyles from "@mui/styles/createStyles";
@@ -42,7 +49,6 @@ import {
import { ErrorResponseHandler } from "../../../common/types";
import api from "../../../common/api";
import AButton from "../Common/AButton/AButton";
-import PageLayout from "../Common/Layout/PageLayout";
import SearchBox from "../Common/SearchBox";
import { IAM_PAGES } from "../../../common/SecureComponent/permissions";
diff --git a/portal-ui/src/screens/Console/Groups/AddGroupScreen.tsx b/portal-ui/src/screens/Console/Groups/AddGroupScreen.tsx
index cd2d73316..2c897abfa 100644
--- a/portal-ui/src/screens/Console/Groups/AddGroupScreen.tsx
+++ b/portal-ui/src/screens/Console/Groups/AddGroupScreen.tsx
@@ -25,8 +25,7 @@ import {
} from "../Common/FormComponents/common/styleLibrary";
import Grid from "@mui/material/Grid";
import { LinearProgress } from "@mui/material";
-import { BackLink, Button, CreateGroupIcon, FormLayout } from "mds";
-import PageLayout from "../Common/Layout/PageLayout";
+import { BackLink, Button, CreateGroupIcon, FormLayout, PageLayout } from "mds";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import AddGroupHelpBox from "./AddGroupHelpBox";
import UsersSelectors from "./UsersSelectors";
diff --git a/portal-ui/src/screens/Console/Groups/Groups.tsx b/portal-ui/src/screens/Console/Groups/Groups.tsx
index fd9792783..ea6a45823 100644
--- a/portal-ui/src/screens/Console/Groups/Groups.tsx
+++ b/portal-ui/src/screens/Console/Groups/Groups.tsx
@@ -24,6 +24,7 @@ import {
GroupsIcon,
HelpBox,
IAMPoliciesIcon,
+ PageLayout,
UsersIcon,
} from "mds";
import createStyles from "@mui/styles/createStyles";
@@ -43,7 +44,6 @@ import { ErrorResponseHandler } from "../../../common/types";
import api from "../../../common/api";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
import AButton from "../Common/AButton/AButton";
-import PageLayout from "../Common/Layout/PageLayout";
import SearchBox from "../Common/SearchBox";
import {
applyPolicyPermissions,
@@ -225,119 +225,110 @@ const Groups = ({ classes }: IGroupsProps) => {
-
-
-
-
-
+
+
-
+
+
+
-
-
-
-
-
-
-
- }
- onClick={() => {
- navigate(`${IAM_PAGES.GROUPS_ADD}`);
- }}
- />
-
-
-
-
- {loading && }
- {!loading && (
-
- {records.length > 0 && (
-
+
+
+
+
+
+
+
+
+ }
+ onClick={() => {
+ navigate(`${IAM_PAGES.GROUPS_ADD}`);
+ }}
+ />
+
+
+
+
+ {loading && }
+ {!loading && (
+
+ {records.length > 0 && (
+
{
/>
-
-
- }
- help={
-
- A group can have one attached IAM policy, where all
- users with membership in that group inherit that policy.
- Groups support more simplified management of user
- permissions on the MinIO Tenant.
-
-
- You can learn more at our{" "}
-
- documentation
-
- .
-
- }
- />
-
-
- )}
- {records.length === 0 && (
-
-
- }
- help={
-
- A group can have one attached IAM policy, where all
- users with membership in that group inherit that policy.
- Groups support more simplified management of user
- permissions on the MinIO Tenant.
-
+
+ }
+ help={
+
+ A group can have one attached IAM policy, where all
+ users with membership in that group inherit that
+ policy. Groups support more simplified management of
+ user permissions on the MinIO Tenant.
- To get started,{" "}
- {
- navigate(`${IAM_PAGES.GROUPS_ADD}`);
- }}
+ You can learn more at our{" "}
+
- Create a Group
-
+ documentation
+
.
-
-
- }
- />
+
+ }
+ />
+
+
+ )}
+ {records.length === 0 && (
+
+
+ }
+ help={
+
+ A group can have one attached IAM policy, where all
+ users with membership in that group inherit that
+ policy. Groups support more simplified management of
+ user permissions on the MinIO Tenant.
+
+
+
+ To get started,{" "}
+ {
+ navigate(`${IAM_PAGES.GROUPS_ADD}`);
+ }}
+ >
+ Create a Group
+
+ .
+
+
+ }
+ />
+
-
- )}
-
- )}
+ )}
+
+ )}
+
);
diff --git a/portal-ui/src/screens/Console/Groups/GroupsDetails.tsx b/portal-ui/src/screens/Console/Groups/GroupsDetails.tsx
index 06662d119..3db174552 100644
--- a/portal-ui/src/screens/Console/Groups/GroupsDetails.tsx
+++ b/portal-ui/src/screens/Console/Groups/GroupsDetails.tsx
@@ -1,7 +1,14 @@
import React, { Fragment, useEffect, useState } from "react";
import { Theme } from "@mui/material/styles";
import { useNavigate, useParams } from "react-router-dom";
-import { AddIcon, Button, GroupsIcon, IAMPoliciesIcon, TrashIcon } from "mds";
+import {
+ AddIcon,
+ Button,
+ GroupsIcon,
+ IAMPoliciesIcon,
+ PageLayout,
+ TrashIcon,
+} from "mds";
import createStyles from "@mui/styles/createStyles";
import {
actionsTray,
@@ -22,7 +29,6 @@ import { ErrorResponseHandler } from "../../../common/types";
import DeleteGroup from "./DeleteGroup";
import VerticalTabs from "../Common/VerticalTabs/VerticalTabs";
import FormSwitchWrapper from "../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
-import PageLayout from "../Common/Layout/PageLayout";
import PanelTitle from "../Common/PanelTitle/PanelTitle";
import SearchBox from "../Common/SearchBox";
import {
@@ -243,7 +249,7 @@ const GroupsDetails = ({ classes }: IGroupDetailsProps) => {
-
+
{
}
/>
-
+
);
@@ -305,7 +311,7 @@ const GroupsDetails = ({ classes }: IGroupDetailsProps) => {
/>
-
+
);
return (
diff --git a/portal-ui/src/screens/Console/Heal/Heal.tsx b/portal-ui/src/screens/Console/Heal/Heal.tsx
index bfcadc73d..e79a7c255 100644
--- a/portal-ui/src/screens/Console/Heal/Heal.tsx
+++ b/portal-ui/src/screens/Console/Heal/Heal.tsx
@@ -26,7 +26,7 @@ import {
} from "@mui/material";
import { IMessageEvent, w3cwebsocket as W3CWebSocket } from "websocket";
import { Theme } from "@mui/material/styles";
-import { Button, HealIcon } from "mds";
+import { Button, HealIcon, PageLayout } from "mds";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
import { wsProtocol } from "../../../utils/wsUtils";
@@ -46,7 +46,6 @@ import {
import { ErrorResponseHandler } from "../../../common/types";
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
import api from "../../../common/api";
-import PageLayout from "../Common/Layout/PageLayout";
import { SecureComponent } from "../../../common/SecureComponent";
import DistributedOnly from "../Common/DistributedOnly/DistributedOnly";
import { selDistSet } from "../../../systemSlice";
diff --git a/portal-ui/src/screens/Console/HealthInfo/HealthInfo.tsx b/portal-ui/src/screens/Console/HealthInfo/HealthInfo.tsx
index 9e321149c..1b83a90bf 100644
--- a/portal-ui/src/screens/Console/HealthInfo/HealthInfo.tsx
+++ b/portal-ui/src/screens/Console/HealthInfo/HealthInfo.tsx
@@ -23,7 +23,7 @@ import {
import { AppState, useAppDispatch } from "../../../store";
import { useSelector } from "react-redux";
import { useNavigate } from "react-router-dom";
-import { Box, Button, Grid, HelpBox, InfoIcon, Loader } from "mds";
+import { Box, Button, Grid, HelpBox, InfoIcon, Loader, PageLayout } from "mds";
import {
DiagStatError,
DiagStatInProgress,
@@ -46,7 +46,6 @@ import {
} from "../Common/FormComponents/common/styleLibrary";
import TestWrapper from "../Common/TestWrapper/TestWrapper";
-import PageLayout from "../Common/Layout/PageLayout";
import { setServerDiagStat } from "../../../systemSlice";
import {
healthInfoMessageReceived,
diff --git a/portal-ui/src/screens/Console/IDP/AddIDPConfiguration.tsx b/portal-ui/src/screens/Console/IDP/AddIDPConfiguration.tsx
index da0a6e46d..530abf6fd 100644
--- a/portal-ui/src/screens/Console/IDP/AddIDPConfiguration.tsx
+++ b/portal-ui/src/screens/Console/IDP/AddIDPConfiguration.tsx
@@ -25,7 +25,7 @@ import {
modalBasic,
} from "../Common/FormComponents/common/styleLibrary";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
-import { BackLink, Button } from "mds";
+import { BackLink, Button, PageLayout } from "mds";
import { useNavigate } from "react-router-dom";
import { ErrorResponseHandler } from "../../../common/types";
import { useAppDispatch } from "../../../store";
@@ -34,7 +34,6 @@ import {
setServerNeedsRestart,
} from "../../../systemSlice";
import useApi from "../Common/Hooks/useApi";
-import PageLayout from "../Common/Layout/PageLayout";
import SectionTitle from "../Common/SectionTitle";
import FormSwitchWrapper from "../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
import PageHeaderWrapper from "../Common/PageHeaderWrapper/PageHeaderWrapper";
diff --git a/portal-ui/src/screens/Console/IDP/IDPConfigurationDetails.tsx b/portal-ui/src/screens/Console/IDP/IDPConfigurationDetails.tsx
index c7d517f46..659efefd8 100644
--- a/portal-ui/src/screens/Console/IDP/IDPConfigurationDetails.tsx
+++ b/portal-ui/src/screens/Console/IDP/IDPConfigurationDetails.tsx
@@ -26,7 +26,14 @@ import {
modalBasic,
searchField,
} from "../Common/FormComponents/common/styleLibrary";
-import { BackLink, Button, EditIcon, RefreshIcon, TrashIcon } from "mds";
+import {
+ BackLink,
+ Button,
+ EditIcon,
+ PageLayout,
+ RefreshIcon,
+ TrashIcon,
+} from "mds";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import { useNavigate, useParams } from "react-router-dom";
import { ErrorResponseHandler } from "../../../common/types";
@@ -37,7 +44,6 @@ import {
} from "../../../systemSlice";
import useApi from "../Common/Hooks/useApi";
import api from "../../../common/api";
-import PageLayout from "../Common/Layout/PageLayout";
import ScreenTitle from "../Common/ScreenTitle/ScreenTitle";
import DeleteIDPConfigurationModal from "./DeleteIDPConfigurationModal";
import FormSwitchWrapper from "../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
diff --git a/portal-ui/src/screens/Console/IDP/IDPConfigurations.tsx b/portal-ui/src/screens/Console/IDP/IDPConfigurations.tsx
index 9f073eb18..0d18aa334 100644
--- a/portal-ui/src/screens/Console/IDP/IDPConfigurations.tsx
+++ b/portal-ui/src/screens/Console/IDP/IDPConfigurations.tsx
@@ -32,11 +32,10 @@ import {
import api from "../../../common/api";
import { ErrorResponseHandler } from "../../../common/types";
import { setErrorSnackMessage } from "../../../systemSlice";
-import PageLayout from "../Common/Layout/PageLayout";
import { containerForHeader } from "../Common/FormComponents/common/styleLibrary";
import { Grid } from "@mui/material";
import TooltipWrapper from "../Common/TooltipWrapper/TooltipWrapper";
-import { AddIcon, Button, RefreshIcon } from "mds";
+import { AddIcon, Button, PageLayout, RefreshIcon } from "mds";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
import DeleteIDPConfigurationModal from "./DeleteIDPConfigurationModal";
import PageHeaderWrapper from "../Common/PageHeaderWrapper/PageHeaderWrapper";
diff --git a/portal-ui/src/screens/Console/KMS/AddKeyForm.tsx b/portal-ui/src/screens/Console/KMS/AddKeyForm.tsx
index 5d73960d3..9a023a31a 100644
--- a/portal-ui/src/screens/Console/KMS/AddKeyForm.tsx
+++ b/portal-ui/src/screens/Console/KMS/AddKeyForm.tsx
@@ -18,8 +18,7 @@ import React, { useState } from "react";
import { Box } from "@mui/material";
import Grid from "@mui/material/Grid";
-import { AddAccessRuleIcon, Button, FormLayout } from "mds";
-import PageLayout from "../Common/Layout/PageLayout";
+import { AddAccessRuleIcon, Button, FormLayout, PageLayout } from "mds";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import { ErrorResponseHandler } from "../../../common/types";
import useApi from "../Common/Hooks/useApi";
diff --git a/portal-ui/src/screens/Console/KMS/ImportKey.tsx b/portal-ui/src/screens/Console/KMS/ImportKey.tsx
index be40dab43..4c28e2f65 100644
--- a/portal-ui/src/screens/Console/KMS/ImportKey.tsx
+++ b/portal-ui/src/screens/Console/KMS/ImportKey.tsx
@@ -18,8 +18,13 @@ import React, { Fragment, useState } from "react";
import { Box } from "@mui/material";
import Grid from "@mui/material/Grid";
-import { AddAccessRuleIcon, BackLink, Button, FormLayout } from "mds";
-import PageLayout from "../Common/Layout/PageLayout";
+import {
+ AddAccessRuleIcon,
+ BackLink,
+ Button,
+ FormLayout,
+ PageLayout,
+} from "mds";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import { IAM_PAGES } from "../../../common/SecureComponent/permissions";
import { ErrorResponseHandler } from "../../../common/types";
diff --git a/portal-ui/src/screens/Console/KMS/ListKeys.tsx b/portal-ui/src/screens/Console/KMS/ListKeys.tsx
index f47e3affc..845fc5222 100644
--- a/portal-ui/src/screens/Console/KMS/ListKeys.tsx
+++ b/portal-ui/src/screens/Console/KMS/ListKeys.tsx
@@ -16,7 +16,7 @@
import { Grid, Theme } from "@mui/material";
import { createStyles, withStyles } from "@mui/styles";
-import { AddIcon, Button, RefreshIcon, UploadIcon } from "mds";
+import { AddIcon, Button, PageLayout, RefreshIcon, UploadIcon } from "mds";
import React, { useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import api from "../../../common/api";
@@ -37,7 +37,6 @@ import {
containerForHeader,
searchField,
} from "../Common/FormComponents/common/styleLibrary";
-import PageLayout from "../Common/Layout/PageLayout";
import SearchBox from "../Common/SearchBox";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
import TooltipWrapper from "../Common/TooltipWrapper/TooltipWrapper";
diff --git a/portal-ui/src/screens/Console/KMS/Status.tsx b/portal-ui/src/screens/Console/KMS/Status.tsx
index 729757cc1..99b9db148 100644
--- a/portal-ui/src/screens/Console/KMS/Status.tsx
+++ b/portal-ui/src/screens/Console/KMS/Status.tsx
@@ -16,7 +16,6 @@
import React, { Fragment, useEffect, useState } from "react";
import { Box, Grid } from "@mui/material";
-import PageLayout from "../Common/Layout/PageLayout";
import api from "../../../common/api";
import { ErrorResponseHandler } from "../../../common/types";
@@ -46,7 +45,7 @@ import {
XAxis,
YAxis,
} from "recharts";
-import { DisabledIcon, EnabledIcon } from "mds";
+import { DisabledIcon, EnabledIcon, PageLayout } from "mds";
import PageHeaderWrapper from "../Common/PageHeaderWrapper/PageHeaderWrapper";
const Status = () => {
diff --git a/portal-ui/src/screens/Console/License/License.tsx b/portal-ui/src/screens/Console/License/License.tsx
index c1afe9183..829bee98c 100644
--- a/portal-ui/src/screens/Console/License/License.tsx
+++ b/portal-ui/src/screens/Console/License/License.tsx
@@ -19,11 +19,10 @@ import { LinearProgress } from "@mui/material";
import Grid from "@mui/material/Grid";
import { SubnetInfo } from "./types";
import api from "../../../common/api";
-import { ArrowIcon, Button } from "mds";
+import { ArrowIcon, Button, PageLayout } from "mds";
import { IAM_PAGES } from "../../../common/SecureComponent/permissions";
import LicensePlans from "./LicensePlans";
import { useNavigate } from "react-router-dom";
-import PageLayout from "../Common/Layout/PageLayout";
import RegistrationStatusBanner from "../Support/RegistrationStatusBanner";
import withSuspense from "../Common/Components/withSuspense";
import { getLicenseConsent } from "./utils";
diff --git a/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx b/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx
index f3b4070e9..d860a482d 100644
--- a/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx
+++ b/portal-ui/src/screens/Console/Logs/ErrorLogs/ErrorLogs.tsx
@@ -16,7 +16,7 @@
import React, { Fragment, useEffect, useState } from "react";
import { IMessageEvent, w3cwebsocket as W3CWebSocket } from "websocket";
import { Theme } from "@mui/material/styles";
-import { Button } from "mds";
+import { Button, PageLayout } from "mds";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
import { useSelector } from "react-redux";
@@ -33,7 +33,6 @@ import {
inlineCheckboxes,
searchField,
} from "../../Common/FormComponents/common/styleLibrary";
-import PageLayout from "../../Common/Layout/PageLayout";
import SearchBox from "../../Common/SearchBox";
import Paper from "@mui/material/Paper";
import Table from "@mui/material/Table";
diff --git a/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx b/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx
index 116172c76..14c01afe2 100644
--- a/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx
+++ b/portal-ui/src/screens/Console/Logs/LogSearch/LogsSearchMain.tsx
@@ -16,7 +16,7 @@
import React, { Fragment, useCallback, useEffect, useState } from "react";
import { useSelector } from "react-redux";
-import { Button, SearchIcon } from "mds";
+import { Button, PageLayout, SearchIcon } from "mds";
import { Theme } from "@mui/material/styles";
import { Grid } from "@mui/material";
import { DateTime } from "luxon";
@@ -37,7 +37,6 @@ import FilterInputWrapper from "../../Common/FormComponents/FilterInputWrapper/F
import LogSearchFullModal from "./LogSearchFullModal";
import { LogSearchColumnLabels } from "./utils";
import DateRangeSelector from "../../Common/FormComponents/DateRangeSelector/DateRangeSelector";
-import PageLayout from "../../Common/Layout/PageLayout";
import ArrowForwardIosIcon from "@mui/icons-material/ArrowForwardIos";
import {
CONSOLE_UI_RESOURCE,
diff --git a/portal-ui/src/screens/Console/ObjectBrowser/OBBucketList.tsx b/portal-ui/src/screens/Console/ObjectBrowser/OBBucketList.tsx
index 7de77642d..b61871ebd 100644
--- a/portal-ui/src/screens/Console/ObjectBrowser/OBBucketList.tsx
+++ b/portal-ui/src/screens/Console/ObjectBrowser/OBBucketList.tsx
@@ -18,7 +18,7 @@ import React, { Fragment, useEffect, useState } from "react";
import { useNavigate } from "react-router-dom";
import { Theme } from "@mui/material/styles";
-import { BucketsIcon, Button, HelpBox, RefreshIcon } from "mds";
+import { BucketsIcon, Button, HelpBox, PageLayout, RefreshIcon } from "mds";
import createStyles from "@mui/styles/createStyles";
import { LinearProgress } from "@mui/material";
import Grid from "@mui/material/Grid";
@@ -35,7 +35,6 @@ import {
IAM_SCOPES,
permissionTooltipHelper,
} from "../../../common/SecureComponent/permissions";
-import PageLayout from "../Common/Layout/PageLayout";
import SearchBox from "../Common/SearchBox";
import hasPermission from "../../../common/SecureComponent/accessControl";
import { setErrorSnackMessage } from "../../../systemSlice";
diff --git a/portal-ui/src/screens/Console/Policies/AddPolicyScreen.tsx b/portal-ui/src/screens/Console/Policies/AddPolicyScreen.tsx
index 24f9b0278..5f7e79ef8 100644
--- a/portal-ui/src/screens/Console/Policies/AddPolicyScreen.tsx
+++ b/portal-ui/src/screens/Console/Policies/AddPolicyScreen.tsx
@@ -17,8 +17,13 @@
import React, { Fragment, useState } from "react";
import Grid from "@mui/material/Grid";
import { Box } from "@mui/material";
-import { AddAccessRuleIcon, BackLink, Button, FormLayout } from "mds";
-import PageLayout from "../Common/Layout/PageLayout";
+import {
+ AddAccessRuleIcon,
+ BackLink,
+ Button,
+ FormLayout,
+ PageLayout,
+} from "mds";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import AddPolicyHelpBox from "./AddPolicyHelpBox";
import CodeMirrorWrapper from "../Common/FormComponents/CodeMirrorWrapper/CodeMirrorWrapper";
diff --git a/portal-ui/src/screens/Console/Policies/ListPolicies.tsx b/portal-ui/src/screens/Console/Policies/ListPolicies.tsx
index 91d953908..a9242b3df 100644
--- a/portal-ui/src/screens/Console/Policies/ListPolicies.tsx
+++ b/portal-ui/src/screens/Console/Policies/ListPolicies.tsx
@@ -15,7 +15,7 @@
// along with this program. If not, see .
import React, { Fragment, useEffect, useState } from "react";
-import { AddIcon, Button, HelpBox, IAMPoliciesIcon } from "mds";
+import { AddIcon, Button, HelpBox, IAMPoliciesIcon, PageLayout } from "mds";
import { useNavigate } from "react-router-dom";
import { Theme } from "@mui/material/styles";
import createStyles from "@mui/styles/createStyles";
@@ -30,7 +30,6 @@ import {
import { ErrorResponseHandler } from "../../../common/types";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
-import PageLayout from "../Common/Layout/PageLayout";
import {
CONSOLE_UI_RESOURCE,
createPolicyPermissions,
diff --git a/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx b/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx
index 25ecfc43a..4a25f2e05 100644
--- a/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx
+++ b/portal-ui/src/screens/Console/Policies/PolicyDetails.tsx
@@ -24,6 +24,7 @@ import {
SearchIcon,
SectionTitle,
TrashIcon,
+ PageLayout,
Grid,
} from "mds";
import { Theme } from "@mui/material/styles";
@@ -36,7 +37,7 @@ import {
searchField,
} from "../Common/FormComponents/common/styleLibrary";
import Paper from "@mui/material/Paper";
-import { LinearProgress } from "@mui/material";
+import { Grid as MUIGrid, LinearProgress } from "@mui/material";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
import { ErrorResponseHandler } from "../../../common/types";
@@ -44,7 +45,6 @@ import CodeMirrorWrapper from "../Common/FormComponents/CodeMirrorWrapper/CodeMi
import InputAdornment from "@mui/material/InputAdornment";
import TextField from "@mui/material/TextField";
import ScreenTitle from "../Common/ScreenTitle/ScreenTitle";
-import PageLayout from "../Common/Layout/PageLayout";
import VerticalTabs from "../Common/VerticalTabs/VerticalTabs";
import {
@@ -368,240 +368,242 @@ const PolicyDetails = ({ classes }: IPolicyDetailsProps) => {
/>
-
-
-
-
- }
- title={policyName}
- subTitle={IAM Policy}
- actions={
-
-
-
+
+
+
+
+ }
+ title={policyName}
+ subTitle={IAM Policy}
+ actions={
+
+
+
+ }
+ onClick={deletePolicy}
+ disabled={!canDeletePolicy}
+ />
+
+
+
+
}
- onClick={deletePolicy}
- disabled={!canDeletePolicy}
+ id={"refresh-policy"}
+ label={"Refresh"}
+ variant="regular"
+ icon={}
+ onClick={() => {
+ refreshPolicyDetails();
+ }}
/>
-
+
+ }
+ />
+
-
- }
- onClick={() => {
- refreshPolicyDetails();
- }}
- />
-
-
- }
- />
-
-
-
- {{
- tabConfig: { label: "Summary", disabled: !displayPolicy },
- content: (
-
-
- Policy Summary
-
-
-
-
-
- ),
- }}
- {{
- tabConfig: {
- label: "Users",
- disabled: !displayUsers || ldapIsEnabled,
- },
- content: (
-
-
- Users
-
-
- {userList.length > 0 && (
-
- {
- setFilterUsers(val.target.value);
- }}
- InputProps={{
- disableUnderline: true,
- startAdornment: (
-
-
-
- ),
- }}
- variant="standard"
- />
-
- )}
-
-
-
- ),
- }}
- {{
- tabConfig: {
- label: "Groups",
- disabled: !displayGroups || ldapIsEnabled,
- },
- content: (
-
-
- Groups
-
-
- {groupList.length > 0 && (
-
- {
- setFilterGroups(val.target.value);
- }}
- InputProps={{
- disableUnderline: true,
- startAdornment: (
-
-
-
- ),
- }}
- variant="standard"
- />
-
- )}
-
-
-
- ),
- }}
- {{
- tabConfig: { label: "Raw Policy", disabled: !displayPolicy },
- content: (
-
-
- Raw Policy
-
-
-
- ),
- }}
-
+
+ ),
+ }}
+ {{
+ tabConfig: {
+ label: "Groups",
+ disabled: !displayGroups || ldapIsEnabled,
+ },
+ content: (
+
+
+ Groups
+
+
+ {groupList.length > 0 && (
+
+ {
+ setFilterGroups(val.target.value);
+ }}
+ InputProps={{
+ disableUnderline: true,
+ startAdornment: (
+
+
+
+ ),
+ }}
+ variant="standard"
+ />
+
+ )}
+
+
+
+ ),
+ }}
+ {{
+ tabConfig: { label: "Raw Policy", disabled: !displayPolicy },
+ content: (
+
+
+ Raw Policy
+
+
+
+ ),
+ }}
+
+
);
diff --git a/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx b/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx
index 847908799..551837d18 100644
--- a/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx
+++ b/portal-ui/src/screens/Console/Speedtest/Speedtest.tsx
@@ -20,7 +20,14 @@ import { IMessageEvent, w3cwebsocket as W3CWebSocket } from "websocket";
import { Grid } from "@mui/material";
import { Theme } from "@mui/material/styles";
import { useNavigate } from "react-router-dom";
-import { Button, HelpBox, Loader, SpeedtestIcon, WarnIcon } from "mds";
+import {
+ Button,
+ HelpBox,
+ Loader,
+ PageLayout,
+ SpeedtestIcon,
+ WarnIcon,
+} from "mds";
import { DateTime } from "luxon";
import createStyles from "@mui/styles/createStyles";
import {
@@ -40,7 +47,6 @@ import STResults from "./STResults";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import ProgressBarWrapper from "../Common/ProgressBarWrapper/ProgressBarWrapper";
import InputUnitMenu from "../Common/FormComponents/InputUnitMenu/InputUnitMenu";
-import PageLayout from "../Common/Layout/PageLayout";
import { SecureComponent } from "../../../common/SecureComponent";
import DistributedOnly from "../Common/DistributedOnly/DistributedOnly";
import { selDistSet } from "../../../systemSlice";
diff --git a/portal-ui/src/screens/Console/Support/CallHome.tsx b/portal-ui/src/screens/Console/Support/CallHome.tsx
index 3bb868f93..d3ee515a7 100644
--- a/portal-ui/src/screens/Console/Support/CallHome.tsx
+++ b/portal-ui/src/screens/Console/Support/CallHome.tsx
@@ -16,9 +16,8 @@
import React, { Fragment, useEffect, useState } from "react";
import { Box } from "@mui/material";
-import { Button, CallHomeMenuIcon, HelpBox, Loader } from "mds";
+import { Button, CallHomeMenuIcon, HelpBox, Loader, PageLayout } from "mds";
import { Link, useNavigate } from "react-router-dom";
-import PageLayout from "../Common/Layout/PageLayout";
import api from "../../../common/api";
import { ErrorResponseHandler } from "../../../common/types";
import { setErrorSnackMessage } from "../../../systemSlice";
diff --git a/portal-ui/src/screens/Console/Support/Profile.tsx b/portal-ui/src/screens/Console/Support/Profile.tsx
index ba03f46b6..f9665c67a 100644
--- a/portal-ui/src/screens/Console/Support/Profile.tsx
+++ b/portal-ui/src/screens/Console/Support/Profile.tsx
@@ -1,11 +1,10 @@
import React, { Fragment, useState } from "react";
import { IMessageEvent, w3cwebsocket as W3CWebSocket } from "websocket";
import { Theme } from "@mui/material/styles";
-import { Button } from "mds";
+import { Button, PageLayout } from "mds";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
import { Grid } from "@mui/material";
-import PageLayout from "../Common/Layout/PageLayout";
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
import { wsProtocol } from "../../../utils/wsUtils";
import {
diff --git a/portal-ui/src/screens/Console/Support/Register.tsx b/portal-ui/src/screens/Console/Support/Register.tsx
index 358dba8b9..7b5e7b2cc 100644
--- a/portal-ui/src/screens/Console/Support/Register.tsx
+++ b/portal-ui/src/screens/Console/Support/Register.tsx
@@ -20,7 +20,6 @@ import createStyles from "@mui/styles/createStyles";
import { spacingUtils } from "../Common/FormComponents/common/styleLibrary";
import withStyles from "@mui/styles/withStyles";
import { Box } from "@mui/material";
-import PageLayout from "../Common/Layout/PageLayout";
import api from "../../../common/api";
import { SubnetRegTokenResponse } from "../License/types";
@@ -45,6 +44,7 @@ import SubnetMFAToken from "./SubnetMFAToken";
import ClusterRegistrationForm from "./ClusterRegistrationForm";
import OnlineRegistration from "./OnlineRegistration";
import PageHeaderWrapper from "../Common/PageHeaderWrapper/PageHeaderWrapper";
+import { PageLayout } from "mds";
interface IRegister {
classes: any;
diff --git a/portal-ui/src/screens/Console/Tools/Inspect.tsx b/portal-ui/src/screens/Console/Tools/Inspect.tsx
index 95e1f9b9b..1ef0812d3 100644
--- a/portal-ui/src/screens/Console/Tools/Inspect.tsx
+++ b/portal-ui/src/screens/Console/Tools/Inspect.tsx
@@ -16,9 +16,14 @@
import React, { Fragment, useEffect, useState } from "react";
import { Box, DialogContentText } from "@mui/material";
-import { Button, HelpBox, InspectMenuIcon, PasswordKeyIcon } from "mds";
+import {
+ Button,
+ HelpBox,
+ InspectMenuIcon,
+ PageLayout,
+ PasswordKeyIcon,
+} from "mds";
import { useNavigate } from "react-router-dom";
-import PageLayout from "../Common/Layout/PageLayout";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import FormSwitchWrapper from "../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
import ModalWrapper from "../Common/ModalWrapper/ModalWrapper";
diff --git a/portal-ui/src/screens/Console/Trace/Trace.tsx b/portal-ui/src/screens/Console/Trace/Trace.tsx
index a932888be..3cc76275d 100644
--- a/portal-ui/src/screens/Console/Trace/Trace.tsx
+++ b/portal-ui/src/screens/Console/Trace/Trace.tsx
@@ -18,7 +18,7 @@ import React, { Fragment, useState } from "react";
import { DateTime } from "luxon";
import { Box, Grid } from "@mui/material";
import { IMessageEvent, w3cwebsocket as W3CWebSocket } from "websocket";
-import { Button, FilterIcon } from "mds";
+import { Button, FilterIcon, PageLayout } from "mds";
import { AppState, useAppDispatch } from "../../../store";
import { useSelector } from "react-redux";
import { TraceMessage } from "./types";
@@ -34,7 +34,6 @@ import {
} from "../Common/FormComponents/common/styleLibrary";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
import CheckboxWrapper from "../Common/FormComponents/CheckboxWrapper/CheckboxWrapper";
-import PageLayout from "../Common/Layout/PageLayout";
import InputBoxWrapper from "../Common/FormComponents/InputBoxWrapper/InputBoxWrapper";
import {
@@ -170,7 +169,7 @@ const Trace = ({ classes }: ITrace) => {
-
+
{
)}
-
-
-
-
+
+
+
-
-
-
-
+
+
+
- }
- disabled={checkedUsers.length <= 0}
- onClick={() => {
- if (checkedUsers.length > 0) {
- setAddGroupOpen(true);
- }
- }}
- variant={"regular"}
- />
-
-
-
-
+ }
+ disabled={checkedUsers.length <= 0}
+ onClick={() => {
+ if (checkedUsers.length > 0) {
+ setAddGroupOpen(true);
+ }
+ }}
+ variant={"regular"}
+ />
+
+
+
- }
- onClick={() => {
- navigate(`${IAM_PAGES.USER_ADD}`);
- }}
- variant={"callAction"}
- disabled={
- !hasPermission(
+ {
],
true
)
+ ? "Create User"
+ : permissionTooltipHelper(
+ [
+ IAM_SCOPES.ADMIN_CREATE_USER,
+ IAM_SCOPES.ADMIN_LIST_USER_POLICIES,
+ IAM_SCOPES.ADMIN_LIST_GROUPS,
+ IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY,
+ ],
+ "create users"
+ )
}
- />
-
-
-
-
- {loading && }
- {!loading && (
-
- {records.length > 0 && (
-
-
+ }
+ onClick={() => {
+ navigate(`${IAM_PAGES.USER_ADD}`);
+ }}
+ variant={"callAction"}
+ disabled={
+ !hasPermission(
+ "console",
+ [
+ IAM_SCOPES.ADMIN_CREATE_USER,
+ IAM_SCOPES.ADMIN_LIST_USER_POLICIES,
+ IAM_SCOPES.ADMIN_LIST_GROUPS,
+ IAM_SCOPES.ADMIN_ATTACH_USER_OR_GROUP_POLICY,
+ ],
+ true
+ )
}
- >
+ />
+
+
+
+
+ {loading && }
+ {!loading && (
+
+ {records.length > 0 && (
+
{
/>
-
- }
- help={
-
- A MinIO user consists of a unique access key (username)
- and corresponding secret key (password). Clients must
- authenticate their identity by specifying both a valid
- access key (username) and the corresponding secret key
- (password) of an existing MinIO user.
-
- Groups provide a simplified method for managing shared
- permissions among users with common access patterns and
- workloads.
-
-
- Users inherit access permissions to data and resources
- through the groups they belong to.
-
- MinIO uses Policy-Based Access Control (PBAC) to define
- the authorized actions and resources to which an
- authenticated user has access. Each policy describes one
- or more actions and conditions that outline the
- permissions of a user or group of users.
-
-
- Each user can access only those resources and operations
- which are explicitly granted by the built-in role. MinIO
- denies access to any other resource or action by default.
-
-
- You can learn more at our{" "}
-
- documentation
-
- .
-
- }
- />
-
- )}
- {records.length === 0 && (
-
-
}
@@ -467,35 +404,91 @@ const ListUsers = ({ classes }: IUsersProps) => {
which are explicitly granted by the built-in role. MinIO
denies access to any other resource or action by
default.
-
+
+ You can learn more at our{" "}
+
-
-
- To get started,{" "}
- {
- navigate(`${IAM_PAGES.USER_ADD}`);
- }}
- >
- Create a User
-
- .
-
+ documentation
+
+ .
}
/>
+
+ )}
+ {records.length === 0 && (
+
+
+ }
+ help={
+
+ A MinIO user consists of a unique access key
+ (username) and corresponding secret key (password).
+ Clients must authenticate their identity by specifying
+ both a valid access key (username) and the
+ corresponding secret key (password) of an existing
+ MinIO user.
+
+ Groups provide a simplified method for managing shared
+ permissions among users with common access patterns
+ and workloads.
+
+
+ Users inherit access permissions to data and resources
+ through the groups they belong to.
+
+ MinIO uses Policy-Based Access Control (PBAC) to
+ define the authorized actions and resources to which
+ an authenticated user has access. Each policy
+ describes one or more actions and conditions that
+ outline the permissions of a user or group of users.
+
+
+ Each user can access only those resources and
+ operations which are explicitly granted by the
+ built-in role. MinIO denies access to any other
+ resource or action by default.
+
+
+
+ To get started,{" "}
+ {
+ navigate(`${IAM_PAGES.USER_ADD}`);
+ }}
+ >
+ Create a User
+
+ .
+
+
+ }
+ />
+
-
- )}
-
- )}
+ )}
+
+ )}
+
);
diff --git a/portal-ui/src/screens/Console/Users/UserDetails.tsx b/portal-ui/src/screens/Console/Users/UserDetails.tsx
index 0e6d3377f..4da1dd9e6 100644
--- a/portal-ui/src/screens/Console/Users/UserDetails.tsx
+++ b/portal-ui/src/screens/Console/Users/UserDetails.tsx
@@ -22,6 +22,7 @@ import {
BackLink,
Button,
IAMPoliciesIcon,
+ PageLayout,
PasswordKeyIcon,
TrashIcon,
UsersIcon,
@@ -47,7 +48,6 @@ import ChangeUserPasswordModal from "../Account/ChangeUserPasswordModal";
import DeleteUser from "./DeleteUser";
import ScreenTitle from "../Common/ScreenTitle/ScreenTitle";
import PanelTitle from "../Common/PanelTitle/PanelTitle";
-import PageLayout from "../Common/Layout/PageLayout";
import VerticalTabs from "../Common/VerticalTabs/VerticalTabs";
import FormSwitchWrapper from "../Common/FormComponents/FormSwitchWrapper/FormSwitchWrapper";
@@ -282,217 +282,219 @@ const UserDetails = ({ classes }: IUserDetailsProps) => {
/>
)}
-
-
-
-
- }
- title={userName}
- actions={
-
- User Status:
-
- {enabled ? "Enabled" : "Disabled"}
-
-
- {
- setEnabled(!enabled);
- saveRecord(!enabled);
- }}
- switchOnly
- disabled={!enableEnabled && !disableEnabled}
- />
-
-
- }
- variant={"secondary"}
- disabled={
- !hasPermission(
- CONSOLE_UI_RESOURCE,
- deleteUserPermissions
- ) || userLoggedIn === userName
- }
- />
-
-
-
- }
- variant={"regular"}
- />
-
-
- }
- />
-
-
-
-
- {{
- tabConfig: {
- label: "Groups",
- disabled: !canAssignGroup,
- },
- content: (
-
-
-
Groups
-
-
-
-
-
- ),
- }}
- {{
- tabConfig: {
- label: "Service Accounts",
- disabled: !hasPermission(
- CONSOLE_UI_RESOURCE,
- editServiceAccountPermissions
- ),
- },
- content: (
-
- ),
- }}
- {{
- tabConfig: {
- label: "Policies",
- disabled: !canAssignPolicy,
- },
- content: (
+
+
+
-
-
Policies
-
-
-
-
-
-
{
- navigate(
- `${IAM_PAGES.POLICIES}/${encodeURLString(
- policy.policy
- )}`
- );
- },
- },
- ]}
- columns={[{ label: "Name", elementKey: "policy" }]}
- isLoading={loading}
- records={currentPolicies}
- entityName="Policies"
- idField="policy"
- />
-
+
- ),
- }}
-
+ }
+ title={userName}
+ actions={
+
+ User Status:
+
+ {enabled ? "Enabled" : "Disabled"}
+
+
+ {
+ setEnabled(!enabled);
+ saveRecord(!enabled);
+ }}
+ switchOnly
+ disabled={!enableEnabled && !disableEnabled}
+ />
+
+
+ }
+ variant={"secondary"}
+ disabled={
+ !hasPermission(
+ CONSOLE_UI_RESOURCE,
+ deleteUserPermissions
+ ) || userLoggedIn === userName
+ }
+ />
+
+
+
+ }
+ variant={"regular"}
+ />
+
+
+ }
+ />
+
+
+
+
+ {{
+ tabConfig: {
+ label: "Groups",
+ disabled: !canAssignGroup,
+ },
+ content: (
+
+
+
Groups
+
+
+
+
+
+
+
+ ),
+ }}
+ {{
+ tabConfig: {
+ label: "Service Accounts",
+ disabled: !hasPermission(
+ CONSOLE_UI_RESOURCE,
+ editServiceAccountPermissions
+ ),
+ },
+ content: (
+
+ ),
+ }}
+ {{
+ tabConfig: {
+ label: "Policies",
+ disabled: !canAssignPolicy,
+ },
+ content: (
+
+
+
Policies
+
+
+
+
+
+
{
+ navigate(
+ `${IAM_PAGES.POLICIES}/${encodeURLString(
+ policy.policy
+ )}`
+ );
+ },
+ },
+ ]}
+ columns={[{ label: "Name", elementKey: "policy" }]}
+ isLoading={loading}
+ records={currentPolicies}
+ entityName="Policies"
+ idField="policy"
+ />
+
+
+ ),
+ }}
+
+
diff --git a/portal-ui/src/screens/Console/Watch/Watch.tsx b/portal-ui/src/screens/Console/Watch/Watch.tsx
index 701bd895c..816a859fc 100644
--- a/portal-ui/src/screens/Console/Watch/Watch.tsx
+++ b/portal-ui/src/screens/Console/Watch/Watch.tsx
@@ -25,7 +25,7 @@ import {
import { IMessageEvent, w3cwebsocket as W3CWebSocket } from "websocket";
import { useSelector } from "react-redux";
import { Theme } from "@mui/material/styles";
-import { Button } from "mds";
+import { Button, PageLayout } from "mds";
import createStyles from "@mui/styles/createStyles";
import withStyles from "@mui/styles/withStyles";
import { AppState, useAppDispatch } from "../../../store";
@@ -41,7 +41,6 @@ import {
import { ErrorResponseHandler } from "../../../common/types";
import TableWrapper from "../Common/TableWrapper/TableWrapper";
import api from "../../../common/api";
-import PageLayout from "../Common/Layout/PageLayout";
import makeStyles from "@mui/styles/makeStyles";
import { watchMessageReceived, watchResetMessages } from "./watchSlice";
import PageHeaderWrapper from "../Common/PageHeaderWrapper/PageHeaderWrapper";
@@ -175,7 +174,7 @@ const Watch = () => {
-
+
-
+
{
isLoading={false}
customPaperHeight={classes.watchTableHeight}
/>
-
+
diff --git a/portal-ui/src/screens/NotFoundPage.tsx b/portal-ui/src/screens/NotFoundPage.tsx
index ec7cc2489..726658253 100644
--- a/portal-ui/src/screens/NotFoundPage.tsx
+++ b/portal-ui/src/screens/NotFoundPage.tsx
@@ -17,7 +17,7 @@
import React from "react";
import Box from "@mui/material/Box";
import Copyright from "../common/Copyright";
-import PageLayout from "./Console/Common/Layout/PageLayout";
+import { PageLayout } from "mds";
const NotFound: React.FC = () => {
return (